记录编号 | 191410 | 评测结果 | AAAAAAAAAAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | [USACO Oct05]奶牛航班 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | C++ | 运行时间 | 0.656 s | ||
提交时间 | 2015-10-07 17:26:41 | 内存使用 | 1.46 MiB | ||
#include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #include<iomanip> #include<set> using namespace std; const int SIZEK=50010,SIZEN=10010,SIZEC=110; int K,N,C; class poi { public: int fr,to,M; poi() { fr=to=M=0; } }; bool cmp(poi a,poi b) { if(a.fr==b.fr) return a.to<b.to; return a.fr<b.fr; } class miku { public: int k; poi m[SIZEK]; miku() { k=0; } void print() { for(int i=1;i<=k;i++) cout<<m[i].fr<<" "<<m[i].to<<" "<<m[i].M<<endl; } void push(int fr,int to,int M) { k++; m[k].fr=fr;m[k].to=to;m[k].M=M; } void Sort() { sort(m+1,m+1+k,cmp); } int get() { int ans=0; multiset<int,greater<int> > load; multiset<int,greater<int> >::iterator it; int now=1; for(int i=1;i<=N;i++) { it=load.end();if(!load.empty()) it--; while(!load.empty()&&(*it)==i) load.erase(it--),ans++;//该下的下 while(m[now].fr==i) { for(int i=1;i<=m[now].M;i++) load.insert(m[now].to); now++; } while(load.size()>C) load.erase(load.begin()); } return ans; } }P,Q; void read() { scanf("%d%d%d",&K,&N,&C); int S,E,M; for(int i=1;i<=K;i++) { scanf("%d%d%d",&S,&E,&M); if(E>S) P.push(S,E,M); else Q.push(E,S,M); } P.Sort(); Q.Sort(); } int main() { freopen("cowflight.in","r",stdin); freopen("cowflight.out","w",stdout); read(); printf("%d",P.get()+Q.get()); return 0; }