Let's Chat(区间)
2017-04-24 14:36
169 查看
链接:http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5580
题意:给出 n,m,x,y,其中,n是最大天数,给出x,y段聊天记录,其中 x 与 y 段区间中,重叠部分即为连续聊天长度,当连续聊天长度大于等于 m 天后,友谊值为聊天长度- m + 1
思路:由于给出的x,y的值不大,而 n 的值很大,那么每段区间的左右值可以用数组来存,循环判断每两段区间的重叠区间的值即可。
代码:
题意:给出 n,m,x,y,其中,n是最大天数,给出x,y段聊天记录,其中 x 与 y 段区间中,重叠部分即为连续聊天长度,当连续聊天长度大于等于 m 天后,友谊值为聊天长度- m + 1
思路:由于给出的x,y的值不大,而 n 的值很大,那么每段区间的左右值可以用数组来存,循环判断每两段区间的重叠区间的值即可。
代码:
#include <iostream> using namespace std; typedef long long LL; int main() { int t; cin>>t; while(t--) { LL n,a[300][2],b[300][2]; int m,x,y; cin>>n>>m>>x>>y; for(int i=0; i<x; i++) cin>>a[i][0]>>a[i][1]; for(int i=0; i<y; i++) cin>>b[i][0]>>b[i][1]; int sum=0; for(int i=0; i<x; i++) { if((a[i][1]-a[i][0]+1)<m) continue; for(int j=0; j<y; j++) { if((b[j][1]-b[j][0]+1)<m) continue ; int xiao=max(a[i][0],b[j][0]); int da=min(a[i][1],b[j][1]); if(da-xiao+1>=m) { sum+=da-xiao+1-m+1; } } } cout<<sum<<endl; } return 0; }
相关文章推荐
- Let's Chat (并区间问题)
- 浙江省第十四次ACM程序竞赛 Let's Chat(D题)
- Let's Chat
- ZOJ3961 Let's Chat
- Let's Chat
- ZOJ - 3961 Let's Chat
- 浙江省赛 D Let's Chat
- Let's Chat
- ACM刷题之ZOJ————Let's Chat
- 浙江省赛 D Let's Chat
- 浙江省赛 D Let's Chat
- ZOJ 3961 Let's Chat
- 浙江省赛 D Let's Chat
- zoj 3961 Let's Chat
- 浙江省赛 D Let's Chat
- HDU 3698 Let the light guide us 线段树求区间优化dp
- 浙江省赛 D Let's Chat
- 浙江省赛 D Let's Chat
- D - Let's Chat
- 无语 LetUsChat