基础贪心算法(HDU2037今年暑假不AC)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2037

下面我附上两篇代码,一篇是AC的,另一篇是WA的,错误原因是什么谁知道麻烦告诉我,谢谢了

AC代码:

  1. #include <iostream>
  2. #include <algorithm>
  3. using namespace std;
  4. struct Time
  5. {
  6. int s,e;
  7. }N[101];
  8. bool cmp(struct Time a,struct Time b)
  9. {
  10. return a.e<b.e;
  11. }
  12. int main()
  13. {
  14. int ans,t,i;
  15. while(cin>>t)
  16. {
  17. if(t==0) break;
  18. ans=1;
  19. for(i=0;i<t;i++)
  20. cin>>N[i].s>>N[i].e;
  21. sort(N,N+t,cmp);
  22. int n=N[0].e;
  23. for(i=1;i<t;i++)
  24. {
  25. if(N[i].s>=n)
  26. {
  27. ans++;
  28. n=N[i].e;
  29. }
  30. }
  31. cout<<ans<<endl;
  32. }
  33. return 0;
  34. }

WA代码:

  1. #include <iostream>
  2. #include <algorithm>
  3. using namespace std;
  4. struct Time
  5. {
  6. int s,e;
  7. }N[101];
  8. bool cmp(struct Time a,struct Time b)
  9. {
  10. return a.e<b.e;
  11. }
  12. int main()
  13. {
  14. int ans,t,i;
  15. while(cin>>t)
  16. {
  17. if(t==0) break;
  18. ans=1;
  19. for(i=0;i<t;i++)
  20. cin>>N[i].s>>N[i].e;
  21. sort(N,N+t,cmp);
  22. for(i=1;i<t;i++)
  23. {
  24. if(N[i].s>=N[i-1].e) ans++;
  25. }
  26. cout<<ans<<endl;
  27. }
  28. return 0;
  29. }

知道原因了!

  1. for(i=1;i<t;i++)
  2. {
  3. if(N[i].s>=N[i-1].e)
  4. ans++;
  5. }
这样比较的只是两个相邻的区间,如果某个节目的开始时间小于上一个节目的
结束时间,但是却大于前面第二个节目的结束时间ans的值依旧不会加一! 
全部评论

相关推荐

等闲_:感觉有好多地方会被问穿,mysql存储向量这个方案问题应该很大的,如果深问的的话,为什么不用es,不用pg,不用mivus,分块策略是怎么做的,向量化是怎么向量化的,稠密向量还是稀疏向量,再深问余弦相似度,HSWM算法,Bm25算法,为什么不用混合检索或者Rank重排序优化?其他的项目不停机分库分表咋实现的,切库过程中数据有diff的话有没有补偿策略?既然有了分库分表了有没有碰到业务上不好优化的慢sql,让这个sql读从库?而且点评的话,最好自己压测过,要不这个数据也不好解释。现在就27的情况来看,很多同学已经有了中大厂实习,这个节点也会偏向这些有大厂实习的92同学,而且hc也不多,所以坚持海投吧
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
dian3b:挺妙的,如果上纲上线显得不合人心,但是这样以来既能监督适当摸鱼,也有一定的人文关怀。
摸鱼被leader发现了...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务