2017 Multi-University Training Contest 2 solutions 1001 Is Derek lying?

来源:互联网 发布:云计算的好处有哪些() 编辑:程序博客网 时间:2024/06/09 18:54

首先,我们统计出Derek和Alfia答案相同的题目数量k1和答案不同的题目数量k2. 对于两人答案相同的题目,共有以下两种情况:

  • 两人都对

b.两人都错 对于两人答案不同的题目,共有以下三种情况: c.Derek对Alfia错 d.Alfia对Derek错 e.两人都错 于是我们可以列出一些方程: k1+k2=n a+b=k1 c+d+e=k2 a+c=x a+d=y 又a,b,c,d,e均为非负整数,且满足a,b<=k1;c,d,e<=k2 将a,b,d,e全部用c替换后需要同时满足以下四个条件: 0<=c<=k2 x-y<=c<=k2+x-y (x-y)/2<=c<=(k2+x-y)/2 x-k1<=c<=x 我们只需要判断这四段区间存不存在公共的整数点,如果存在,则说明Derek没有说谎;如果不存在,则说明Derek在说谎。


#include <cstdio>#include <cmath>const int N=80005;int main(){    int t;    int n,x,y;    char D[N],A[N];    scanf("%d",&t);    while(t--){        int cnt=0;        scanf("%d%d%d ",&n,&x,&y);        gets(D);        gets(A);        for(int i=0;i<n;i++){            if(D[i]!=A[i])  cnt++;        }        if(fabs(x-y)>cnt || (x+y)>(2*n-cnt))   printf("Lying\n");        else printf("Not lying\n");    }    return 0;}




阅读全文
0 0
原创粉丝点击