Is Derek lying?

来源:互联网 发布:访客网络设置多少 编辑:程序博客网 时间:2024/05/29 14:47

DerekDerek and AlfiaAlfia are good friends.DerekDerek is Chinese,and AlfiaAlfia is Austrian.This summer holiday,they both participate in the summer camp of Borussia Dortmund.During the summer camp,there will be fan tests at intervals.The test consists of NN choice questions and each question is followed by three choices marked “AA” “BB” and “CC”.Each question has only one correct answer and each question is worth 11 point.It means that if your answer for this question is right,you can get 11 point.The total score of a person is the sum of marks for all questions.When the test is over,the computer will tell DerekDerek the total score of him and AlfiaAlfia.Then AlfiaAlfia will ask DerekDerek the total score of her and he will tell her: “My total score is XX,your total score is YY.”But DerekDerek is naughty,sometimes he may lie to her. Here give you the answer that DerekDerek and AlfiaAlfia made,you should judge whether DerekDerek is lying.If there exists a set of standard answer satisfy the total score that DerekDerek said,you can consider he is not lying,otherwise he is lying.
Input
The first line consists of an integer TT,represents the number of test cases. 

For each test case,there will be three lines. 

The first line consists of three integers NN,XX,YY,the meaning is mentioned above. 

The second line consists of NN characters,each character is “AA” “BB” or “CC”,which represents the answer of DerekDerek for each question. 

The third line consists of NN characters,the same form as the second line,which represents the answer of AlfiaAlfia for each question. 

Data Range:1N800001≤N≤80000,0X,YN,0≤X,Y≤N,Ti=1N300000∑i=1TN≤300000
Output
For each test case,the output will be only a line. 

Please print “LyingLying” if you can make sure that DerekDerek is lying,otherwise please print “Not lyingNot lying”.
Sample Input
23 1 3AAAABC5 5 0ABCBCACBCB
Sample Output
Not lyingLying
有n道题,每个题有ABC三个选项,有一个答案是正确的。每道题做对得一分,做错不得分,给定命题:“第一个人得X分,第二个人得Y分”,然后有这两个人关于这n道题得答案,判断一下这个答案序列能否成立

#include<algorithm>using namespace std;int main(){    int n,m,x,y;    char str[80001],str1[80001];    scanf("%d",&n);    while(n--)    {        int ans=0;        scanf("%d %d %d",&m,&x,&y);        scanf("%s %s",str,str1);        for(int i=0; i<m; i++)        {            if(str[i]==str1[i])                ans++;        }        if(abs(x-y)<=m-ans&&(x+y)<=m+ans)            printf("Not lying\n");        else            printf("Lying\n");    }    return 0;}/*按这两个列子找出判断条件的不等式,理解确实吃力,最好从反面考虑,即从大于的那面考虑,不要从小于等于那面考虑abs(x-y)表示两个的分数差,m-ans表示两个人答案不同的个数如果答案不同的个数小于分数差的话,肯定是假话,因为   分数差   来自于  答案不同的个数如果x+y还大于了  可能正确的   最大分数和   的话,也肯定是假话 23 1 3AAAAACLying3 1 3AAABBBLying*/