记录编号 191410 评测结果 AAAAAAAAAAAAAAAA
题目名称 [USACO Oct05]奶牛航班 最终得分 100
用户昵称 Gravatarmikumikumi 是否通过 通过
代码语言 C++ 运行时间 0.656 s
提交时间 2015-10-07 17:26:41 内存使用 1.46 MiB
显示代码纯文本
  1. #include<cstdio>
  2. #include<iostream>
  3. #include<algorithm>
  4. #include<cstring>
  5. #include<iomanip>
  6. #include<set>
  7. using namespace std;
  8. const int SIZEK=50010,SIZEN=10010,SIZEC=110;
  9. int K,N,C;
  10. class poi
  11. {
  12. public:
  13. int fr,to,M;
  14. poi()
  15. {
  16. fr=to=M=0;
  17. }
  18. };
  19. bool cmp(poi a,poi b)
  20. {
  21. if(a.fr==b.fr) return a.to<b.to;
  22. return a.fr<b.fr;
  23. }
  24. class miku
  25. {
  26. public:
  27. int k;
  28. poi m[SIZEK];
  29. miku()
  30. {
  31. k=0;
  32. }
  33. void print()
  34. {
  35. for(int i=1;i<=k;i++)
  36. cout<<m[i].fr<<" "<<m[i].to<<" "<<m[i].M<<endl;
  37. }
  38. void push(int fr,int to,int M)
  39. {
  40. k++;
  41. m[k].fr=fr;m[k].to=to;m[k].M=M;
  42. }
  43. void Sort()
  44. {
  45. sort(m+1,m+1+k,cmp);
  46. }
  47. int get()
  48. {
  49. int ans=0;
  50. multiset<int,greater<int> > load;
  51. multiset<int,greater<int> >::iterator it;
  52. int now=1;
  53. for(int i=1;i<=N;i++)
  54. {
  55. it=load.end();if(!load.empty()) it--;
  56. while(!load.empty()&&(*it)==i) load.erase(it--),ans++;//该下的下
  57. while(m[now].fr==i)
  58. {
  59. for(int i=1;i<=m[now].M;i++) load.insert(m[now].to);
  60. now++;
  61. }
  62. while(load.size()>C) load.erase(load.begin());
  63. }
  64. return ans;
  65. }
  66. }P,Q;
  67. void read()
  68. {
  69. scanf("%d%d%d",&K,&N,&C);
  70. int S,E,M;
  71. for(int i=1;i<=K;i++)
  72. {
  73. scanf("%d%d%d",&S,&E,&M);
  74. if(E>S) P.push(S,E,M);
  75. else Q.push(E,S,M);
  76. }
  77. P.Sort();
  78. Q.Sort();
  79. }
  80. int main()
  81. {
  82. freopen("cowflight.in","r",stdin);
  83. freopen("cowflight.out","w",stdout);
  84. read();
  85. printf("%d",P.get()+Q.get());
  86. return 0;
  87. }