弱校联萌十一大决战之背水一战C. Counting Pair
Posted MissZhou要努力
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了弱校联萌十一大决战之背水一战C. Counting Pair相关的知识,希望对你有一定的参考价值。
Bob hosts a party and invites N boys and M girls. He gives every boy here a unique number Ni(1 <= Ni <= N). And for the girl, everyone holds a unique number Mi(1 <= Mi <= M), too.
Now when Bob name a number X, if a boy and a girl wants and their numbers' sum equals to X, they can get in pair and dance.
At this night, Bob will name Q numbers, and wants to know the maxinum pairs could dance in each time. Can you help him?
Input
First line of the input is a single integer T(1 <= T <= 30), indicating there are T test cases.
The first line of each test case contains two numbers N and M(1 <= N,M <= 100000).
The second line contains a single number Q(1 <= Q <= 100000).
Each of the next Q lines contains one number X(0 <= X <= 10^9), indicating the number Bob names.
Output
For each test case, print "Case #t:" first, in which t is the number of the test case starting from 1.
Then for each number Bob names, output a single num in each line, which shows the maxinum pairs that could dance together.
Sample Input
1
4 5
3
1
2
3
Sample Output
Case #1:
0
1
2
Hint
This problem has very large input data. scanf and printf are recommended for C++ I/O.
这个题当时读了好久 学弟看明白才给我讲的orz
他给的Q行数分别是要求的和!但是需要分类讨论 总共也没多麻烦
#include<cstdio>
#include<iostream>
using namespace std;
int t,n,m,p,test;
int main()
scanf("%d",&t);
for(int cas=1;cas<=t;cas++)
scanf("%d%d%d",&n,&m,&p);
printf("Case #%d:\\n",cas);
for(int j=0;j<p;j++)
scanf("%d",&test);
if(test-1<=n&&test-1<=m)printf("%d\\n",test-1);
else if(test>n+m) printf("0\\n");
else
int maxn1=(test>n?test-1-n:0),maxn2=test>m?test-1-m:0;
printf("%d\\n",test-1-(maxn1)-(maxn2));
以上是关于弱校联萌十一大决战之背水一战C. Counting Pair的主要内容,如果未能解决你的问题,请参考以下文章