记录编号 |
191410 |
评测结果 |
AAAAAAAAAAAAAAAA |
题目名称 |
[USACO Oct05]奶牛航班 |
最终得分 |
100 |
用户昵称 |
mikumikumi |
是否通过 |
通过 |
代码语言 |
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;
- }