Anton and Classes
2017-03-16 15:02
295 查看
额。。这个题刚开始是想将围棋课的时间标记为1,将编程课标记为2,然后根据结束时间来排个序,选取结束时间最短的那一个时间作为先上的课,然后其他就搜其他课开始时间与这个课结束时间差的最大值。然后呢WA在了第七组测试数据上了,想了一下,会不会是因为最短的结束时间相同的有好几个,两门课都有,如果只选a[0]的话,那样,就不能确定是时间是最大的了,因为a[0]所在的课中有可能有一个最晚的开始时间。。。然后事实证明,我的想法还是差一点。然后最后的思路是,将围棋课的最小结束时间记录下来,和编程的开始时间比,最后得到一个max。然后将编程课的最小时间记录下来,和围棋课的开始时间比,得到一个max,取最大的一个max就好了。
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> using namespace std; #define maxn 200000+10 struct zb { long long bg,ed; }; zb a[maxn],bb[maxn]; bool cmp(zb b,zb c) { if(b.ed!=c.ed) return b.ed<c.ed; } int main() { int n; scanf("%d",&n); for(int i=0;i<n;i++) cin>>a[i].bg>>a[i].ed; int m; scanf("%d",&m); for(int i=0;i<m;i++) cin>>bb[i].bg>>bb[i].ed; sort(a,a+n,cmp); long long k1=a[0].ed; sort(bb,bb+m,cmp); long long k2=bb[0].ed; long long ans=0; for(int i=0;i<m;i++) { long long temp=ans; if(bb[i].bg>=k1) temp=bb[i].bg-k1; ans=max(temp,ans); } for(int i=0;i<n;i++) { long long temp=ans; if(a[i].bg>=k2) temp=a[i].bg-k2; ans=max(temp,ans); } cout<<ans<<endl; return 0; }
相关文章推荐
- Anton and Classes
- Codeforces 785B-Anton and Classes
- Anton and Classes
- Codeforces Round #404 (Div. 2) B. Anton and Classes 水题
- Anton and Classes
- B. Anton and Classes
- codeforces round#404(dv.2) B. Anton and Classes
- B. Anton and Classes
- B. Anton and Classes
- Codeforces Round #404 (Div. 2) B. Anton and Classes
- Codeforces Round#404 B. Anton and Classes
- Anton and Classes
- Anton and Classes
- Codeforces #404 (Div. 2) B. Anton and Classes (贪心
- 【codeforces 785B】Anton and Classes
- Anton and Classes
- Anton and Classes
- codeforce Anton and Classes
- 关于idea 没有update classes and resources
- iOS: Classes for fetching and parsing XML or JSON via HTTP