BZOJ3389: [Usaco2004 Dec]Cleaning Shifts安排值班
2014-10-04 00:05
441 查看
3389: [Usaco2004 Dec]Cleaning Shifts安排值班
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 45 Solved: 26
[Submit][Status]
Description
一天有T(1≤T≤10^6)个时段.约翰正打算安排他的N(1≤N≤25000)只奶牛来值班,打扫打扫牛棚卫生.每只奶牛都有自己的空闲时间段[Si,Ei](1≤Si≤Ei≤T),只能把空闲的奶牛安排出来值班.而且,每个时间段必需有奶牛在值班. 那么,最少需要动用多少奶牛参与值班呢?如果没有办法安排出合理的方案,就输出-1.
Input
第1行:N,T.第2到N+1行:Si,Ei.
Output
最少安排的奶牛数.Sample Input
3 101 7
3 6
6 10
Sample Output
2样例说明
奶牛1和奶牛3参与值班即可.
HINT
Source
Silver题解:
此题<清理牛棚 线段树而已
代码:
#include<iostream> #include<cstdio> #include<cstring> #include<queue> #include<algorithm> #define pa pair<int,int> #define inf 1000000000 #define ll long long using namespace std; inline int read() { int x=0;char ch=getchar(); while(ch<'0'||ch>'9')ch=getchar(); while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x; } int n,T,cnt; bool vis[1000005]; int dis[1000005],last[1000005]; struct data{int to,next,v;}e[2000005]; void insert(int u,int v,int w) { e[++cnt].to=v;e[cnt].next=last[u];last[u]=cnt;e[cnt].v=w; } void dijkstra() { priority_queue<pa,vector<pa>,greater<pa> >q; for(int i=1;i<=T;i++)dis[i]=inf; dis[0]=0;q.push(make_pair(0,0)); while(!q.empty()) { int now=q.top().second;q.pop(); if(vis[now])continue;vis[now]=1; for(int i=last[now];i;i=e[i].next) if(dis[now]+e[i].v<dis[e[i].to]) { dis[e[i].to]=dis[now]+e[i].v; q.push(make_pair(dis[e[i].to],e[i].to)); } } } int main() { n=read();T=read(); for(int i=1;i<=T;i++) insert(i,i-1,0); for(int i=1;i<=n;i++) { int a=read(),b=read(); insert(a-1,b,1); } dijkstra(); if(dis[T]==inf)puts("-1"); else printf("%d\n",dis[T]); return 0; }
View Code
相关文章推荐
- bzoj3389:[Usaco2004 Dec]Cleaning Shifts安排值班
- bzoj3389: [Usaco2004 Dec]Cleaning Shifts安排值班
- bzoj 3389: [Usaco2004 Dec]Cleaning Shifts安排值班 -- 贪心
- 【BZOJ】3389: [Usaco2004 Dec]Cleaning Shifts安排值班(贪心)
- [bzoj3389][Usaco2004Dec]Cleaning Shifts安排值班_最短路
- 【BZOJ】3389: [Usaco2004 Dec]Cleaning Shifts安排值班
- 3389: [Usaco2004 Dec]Cleaning Shifts安排值班 (最短路)
- bzoj 3389 [Usaco2004 Dec]Cleaning Shifts安排值班
- bzoj3389 [Usaco2004 Dec]Cleaning Shifts安排值班
- bzoj3389 [Usaco2004 Dec]Cleaning Shifts安排值班
- Bzoj 3389: [Usaco2004 Dec]Cleaning Shifts安排值班 最短路,神题
- 【bzoj3389】[Usaco2004 Dec]Cleaning Shifts安排值班
- BZOJ3389 [Usaco2004 Dec]Cleaning Shifts安排值班
- poj 2376 && bzoj 3389: [Usaco2004 Dec]Cleaning Shifts安排值班(贪心)
- [usaco2004 dec]打扫机房II-Pku2376 Cleaning Shifts(区间问题)
- BZOJ 3391: [Usaco2004 Dec]Tree Cutting网络破坏( dfs )
- bzoj 3388: [Usaco2004 Dec]Cow Ski Area雪场缆车(Tarjan)
- bzoj3390: [Usaco2004 Dec]Bad Cowtractors牛的报复
- bzoj 1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚【dp+线段树】
- BZOJ1986: [USACO2004 Dec] Dividing the Path 划区灌溉