第14届浙江省赛--Let's Chat
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第14届浙江省赛--Let's Chat相关的知识,希望对你有一定的参考价值。
ACM (ACMers‘ Chatting Messenger) is a famous instant messaging software developed by Marjar Technology Company. To attract more users, Edward, the boss of Marjar Company, has recently added a new feature to the software. The new feature can be described as follows:
If two users, A and B, have been sending messages to each other on the last m consecutive days, the "friendship point" between them will be increased by 1 point.
More formally, if user A sent messages to user B on each day between the (i - m + 1)-th day and the i-th day (both inclusive), and user B also sent messages to user A on each day between the (i - m + 1)-th day and the i-th day (also both inclusive), the "friendship point" between A and B will be increased by 1 at the end of the i-th day.
Given the chatting logs of two users A and B during n consecutive days, what‘s the number of the friendship points between them at the end of the n-th day (given that the initial friendship point between them is 0)?
Input
There are multiple test cases. The first line of input contains an integer T (1 ≤ T ≤ 10), indicating the number of test cases. For each test case:
The first line contains 4 integers n (1 ≤ n ≤ 109), m (1 ≤ m ≤ n), x and y (1 ≤ x, y ≤ 100). The meanings of n and m are described above, while x indicates the number of chatting logs about the messages sent by A to B, and y indicates the number of chatting logs about the messages sent by B to A.
For the following x lines, the i-th line contains 2 integers la, i and ra, i (1 ≤ la, i ≤ ra, i ≤ n), indicating that A sent messages to B on each day between the la, i-th day and the ra, i-th day (both inclusive).
For the following y lines, the i-th line contains 2 integers lb, i and rb, i (1 ≤ lb, i ≤ rb, i ≤ n), indicating that B sent messages to A on each day between the lb, i-th day and the rb, i-th day (both inclusive).
It is guaranteed that for all 1 ≤ i < x, ra, i + 1 < la, i + 1 and for all 1 ≤ i < y, rb, i + 1 < lb, i + 1.
Output
For each test case, output one line containing one integer, indicating the number of friendship points between A and B at the end of the n-th day.
Sample Input
2 10 3 3 2 1 3 5 8 10 10 1 8 10 10 5 3 1 1 1 2 4 5
Sample Output
3 0
Hint
For the first test case, user A and user B send messages to each other on the 1st, 2nd, 3rd, 5th, 6th, 7th, 8th and 10th day. As m = 3, the friendship points between them will be increased by 1 at the end of the 3rd, 7th and 8th day. So the answer is 3.
Author: WENG, Caizhi
Source: The 14th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple
题意:给出x,y两种区间,若区间交集长度L>=m,贡献值为L-m+1,求总贡献度。
题解:x,y均<100,直接暴力,时间复杂度O(n^2)。
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 struct Node 5 { 6 int r,l; 7 }a[100],t; 8 int main() 9 { 10 int T; 11 scanf("%d",&T); 12 while(T--) 13 { 14 memset(a,0,sizeof(a)); 15 int n,m,x,y,score=0; 16 scanf("%d %d %d %d",&n,&m,&x,&y); 17 for(int i=0;i<x;i++) 18 { 19 scanf("%d %d",&a[i].l,&a[i].r); 20 } 21 for(int i=0;i<y;i++) 22 { 23 scanf("%d %d",&t.l,&t.r); 24 if(t.r-t.l+1<m) continue; 25 for(int j=0;j<x&&a[j].l<t.r;j++) 26 { 27 if(a[j].r-a[j].l+1<m) continue; 28 int L,R; 29 L=max(t.l,a[j].l); 30 R=min(t.r,a[j].r); 31 if(R-L+1>=m) score+=R-L+1-m+1; 32 } 33 } 34 printf("%d\n",score); 35 } 36 return 0; 37 }
以上是关于第14届浙江省赛--Let's Chat的主要内容,如果未能解决你的问题,请参考以下文章
第15届浙江省赛 D Sequence Swapping(dp)
ZJCPC2022 第19届 浙江省赛The 19th Zhejiang Provincial Collegiate Programming Contest(CBALGMIF 8题)
ZJCPC2022 第19届 浙江省赛The 19th Zhejiang Provincial Collegiate Programming Contest(CBALGMIF 8题)