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

虽然是大水题,竟然因为一个!=写成了==WA两次,不应该

Posted by KatrineYang at 2016-08-25 03:51:19 on Problem 1176
#include <iostream>
#include <stdio.h>
#include <vector>
#include <string>
using namespace std;

vector<string> results;

void quickSort(vector<string> &s, int l, int r)
{
    if (l < r)
    {
        int i = l, j = r;
        string x = s[l];
        while (i < j)
        {
            while(i < j && s[j] >= x)
                j--;
            if(i < j)
                s[i++] = s[j];
            while(i < j && s[i] < x)
                i++;
            if(i < j)
                s[j--] = s[i];
        }
        s[i] = x;
        quickSort(s, l, i - 1);
        quickSort(s, i + 1, r);
    }
}

int main() {
	int N, C;
	vector<int> liang, mie;
	scanf("%d%d", &N, &C);
	while(1){
		int temp;
		scanf("%d", &temp);
		if(temp == -1) break;
		liang.push_back(temp);
	}
	while(1){
		int temp;
		scanf("%d", &temp);
		if(temp == -1) break;
		mie.push_back(temp);
	}
	int state;
	for(state = 0; state < 16; state++){
		int st[4];
		for(int i = 0; i < 4; i++){
			if((state >> i)%2 == 0) st[i] = 0;
			else st[i] = 1;
		}
		int sum = 0;
		for(int i = 0; i < 4; i++) sum += st[i];
		if(sum > C || (C-sum)%2 != 0) continue;
		int lNum = liang.size(), mNum = mie.size();
		bool ky = 1;
		for(int i = 0; i < lNum; i++){
			int cs = 0;
			if(st[0]) cs++;
			if(st[1] && liang[i]%2 != 0) cs++;
			if(st[2] && liang[i]%2 == 0) cs++;
			if(st[3] && liang[i]%3 == 1) cs++;
			if(cs%2 != 0){
				ky = 0;
				break;
			}
		}
		if(!ky) continue;
		for(int i = 0; i < mNum; i++){
			int cs = 0;
			if(st[0]) cs++;
			if(st[1] && mie[i]%2 != 0) cs++;
			if(st[2] && mie[i]%2 == 0) cs++;
			if(st[3] && mie[i]%3 == 1) cs++;
			if(cs%2 == 0){
				ky = 0;
				break;
			}
		}
		if(!ky) continue;
		string tmp = "";
		for(int i = 1; i <= N; i++){
			int cs = 0;
			if(st[0]) cs++;
			if(st[1] && i%2 != 0) cs++;
			if(st[2] && i%2 == 0) cs++;
			if(st[3] && i%3 == 1) cs++;
			if(cs%2 == 0) tmp += '1';
			else tmp += '0';
		}
		results.push_back(tmp);
	}
	int sz = results.size();
	//cout << sz << endl;
	quickSort(results, 0, sz-1);
	string s = "";
	for(int i = 0; i < sz; i++){
		if(results[i] != s) {
			cout << results[i] << endl;
			s = results[i];
		}
	}
	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