Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
没什么好怀疑的,就是用wrong123的那个思路 。因为只有一枚假币,凡是不平衡出现都必然有这个家伙,那么他的怀疑值必然为最大,或者最大之一,题目说了保证有解,那么有且仅有一个没有标记为真且怀疑值为最大的硬币就是那个解。 代码 # include <stdio.h> # include <string.h> char s1[20],s2[20],r[20]; int f[20],fn[20],i,j,n; int main() { scanf("%d",&n); while (n>0,n--) { memset(f,0,sizeof(f)); memset(fn,0,sizeof(fn)); for (i=0;i<3;i++) { memset(s1,0,sizeof(s1)); memset(s2,0,sizeof(s2)); memset(r,0,sizeof(r)); scanf("%s%s%s",s1,s2,r); if (r[0]=='e') for (j=0;j<strlen(s1);j++) {f[s1[j]-'A']=1;f[s2[j]-'A']=1;} if (r[0]=='u') for (j=0;j<strlen(s1);j++) {fn[s1[j]-'A']++;fn[s2[j]-'A']--;} if (r[0]=='d') for (j=0;j<strlen(s1);j++) {fn[s1[j]-'A']--;fn[s2[j]-'A']++;} } int max=-1,ans; for (i=0;i<12;i++) if ((abs(fn[i])>max)&&(!f[i])) {max=abs(fn[i]);ans=i;} printf("%c is the counterfeit coin and it is ",ans+'A'); if (fn[ans]<0) printf("light.\n"); else printf("heavy.\n"); } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator