Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

修正+附个码。。

Posted by lilingfei at 2015-04-22 22:36:36 on Problem 1013 and last updated at 2015-04-22 23:05:11
In Reply To:小计数法 Posted by:lilingfei at 2015-04-22 22:36:08
> 1、遇到even的则都标记为真钱
> 2、遇到up的把两边swap
> 3、遇到up/down则把每个可疑钱币在两边出现的次数+1
> 4、三次完毕后,假钱一定在某一边出现了与up/down相同的次数。在左边就轻,右边就重。

第3步表达有误。。应该将可疑钱币在出现的那边的计数器+1

#include<cstdio>
#include<cstring>
#include<string>
#include<iostream>

using namespace std;


int main(){

    int kase;
    cin>>kase;
    while(kase--) {
        int ok[30], cnt1[30], cnt2[30], down = 0, n;
        memset(ok, 0, sizeof(ok));
        memset(cnt1, 0, sizeof(cnt1));
        memset(cnt2, 0, sizeof(cnt2));
        string s1, s2, s3;
        for(int i = 0; i < 3; i ++) {
            cin>>s1>>s2>>s3;
            n = s1.length();
            if(s3 == "even") {
                for(int j = 0; j < n; j ++) {
                    ok[s1[j]-'A'] = 1;
                    ok[s2[j]-'A'] = 1;
                }
            }
            else {
                if(s3 == "up") swap(s1, s2);
                for(int j = 0; j < n; j ++) {
                    int a = s1[j]-'A', b = s2[j]-'A';
                    if(!ok[a]) cnt1[a] ++;
                    if(!ok[b]) cnt2[b] ++;
                }
                down ++;
            }
        }
        for(int i = 0; i < 30; i ++) {
            if(!ok[i]){
                if(cnt1[i] == down) printf("%c is the counterfeit coin and it is light.\n", i + 'A');
                else if(cnt2[i] == down) printf("%c is the counterfeit coin and it is heavy.\n", i+'A');
            }
        }
    }

    return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator