论洛谷为何办理的如此之好
查看原帖
论洛谷为何办理的如此之好
953149
DoubleQLzn楼主2024/10/30 21:19

因为总是有热心大佬帮助蒟蒻。

80 WA on #1#2 求调 玄关

#include <bits/stdc++.h>
using namespace std;
int num[5][105];
char kind[5][105];
int f[5][105];
int h[15] = {0,50,2,3,4,5,6,7,8,9,10,20,30,40};
int main()
{
	int n1,n2,n3,n4;
	while (1)
	{
		memset(f,0,sizeof 0);
		int fd1 = 0,fd2 = 0,fd3 = 0,fd4 = 0,;
		cin >> n1;
		for (int i = 1;i <= n1;i++) 
		{
			cin >> kind[1][i] >> num[1][i];
			if (kind[1][i] == 'C' && num[1][i] == 10) fd1 = 1;
			if (kind[1][i] == 'H') f[1][num[1][i]]++;
		}
		cin >> n2;
		for (int i = 1;i <= n2;i++) 
		{
			cin >> kind[2][i] >> num[2][i];
			if (kind[2][i] == 'C' && num[2][i] == 10) fd2 = 1;
			if (kind[2][i] == 'H') f[2][num[1][i]]++;
		}
		cin >> n3;
		for (int i = 1;i <= n3;i++) 
		{
			cin >> kind[3][i] >> num[3][i];
			if (kind[3][i] == 'C' && num[3][i] == 10) fd3 = 1;
			if (kind[3][i] == 'H') f[3][num[1][i]]++;
		}
		cin >> n4;
		for (int i = 1;i <= n4;i++) 
		{
			cin >> kind[4][i] >> num[4][i];
			if (kind[4][i] == 'C' && num[4][i] == 10) fd4 = 1;
			if (kind[4][i] == 'H') f[4][num[1][i]]++;
		}
		if (n1 == 0 && n2 == 0 && n3 == 0 && n4 == 0) break;
		int s1 = 0,s2 = 0,s3 = 0,s4 = 0,f3 = 0,f5 = 0,f6 = 0,f7 = 0,f8 = 0;
		for (int i = 1;i <= 4;i++)
		{
			int dkind = 0;
			for (int j = 1;j <= 13;j++)
			{
				if (f[i][j] != 0) dkind++;
			}
			if (dkind == 13)
			{
				f3 = 1;
				int n = 0,f2 = 0;
				if (i == 1) s1 = s1 + 200,n = n1;
				if (i == 2) s2 = s2 + 200,n = n2;
				if (i == 3) s3 = s3 + 200,n = n3;
				if (i == 4) s4 = s4 + 200,n = n4;
				for (int j = 1;j <= n;j++)
				{
					if (kind[i][j] == 'S' && num[i][j] == 12) f2++;
					if (kind[i][j] == 'D' && num[i][j] == 11) f2++;
				}
				if (f2 >= 2)
				{
					if (i == 1) s1 = s1 + 300,f5 = 1;
					if (i == 2) s2 = s2 + 300,f6 = 1;
					if (i == 3) s3 = s3 + 300,f7 = 1;
					if (i == 4) s4 = s4 + 300,f8 = 1;
					if (i == 1 && fd1) s1 = 1000;
					if (i == 2 && fd2) s2 = 1000;
					if (i == 3 && fd3) s3 = 1000;
					if (i == 4 && fd4) s4 = 1000;
				}
			}
			int n;
			if (i == 1) n = n1;
			if (i == 2) n = n2;
			if (i == 3) n = n3;
			if (i == 4) n = n4;
			for (int j = 1;j <= n;j++)
			{
				if (kind[i][j] == 'H')
				{
					if (i == 1) s1 = s1 - h[num[i][j]];
					if (i == 2) s2 = s2 - h[num[i][j]];
					if (i == 3) s3 = s3 - h[num[i][j]];
					if (i == 4) s4 = s4 - h[num[i][j]];
				}
				if (kind[i][j] == 'S' && num[i][j] == 12) 
				{
					if (i == 1) s1 = s1 - 100;
					if (i == 2) s2 = s2 - 100;
					if (i == 3) s3 = s3 - 100;
					if (i == 4) s4 = s4 - 100;
				}
				if (kind[i][j] == 'D' && num[i][j] == 11)
				{
					if (i == 1) s1 = s1 + 100;
					if (i == 2) s2 = s2 + 100;
					if (i == 3) s3 = s3 + 100;
					if (i == 4) s4 = s4 + 100;
				}
			}
		}
		if (fd1)
		{
			if (n1 == 1) s1 = s1 + 50;
			else s1 = s1 * 2;
		}
		if (fd2)
		{
			if (n2 == 1) s2 = s2 + 50;
			else s2 = s2 * 2;
		}
		if (fd3)
		{
			if (n3 == 1) s3 = s3 + 50;
			else s3 = s3 * 2;
		}
		if (fd4)
		{
			if (n4 == 1) s4 = s4 + 50;
			else s4 = s4 * 2;
		}	
		if (f5 == 1) {cout << "+1000 0 0 0\n";continue;}
		if (f6 == 1) {cout << "0 +1000 0 0\n";continue;}
		if (f7 == 1) {cout << "0 0 +1000 0\n";continue;}
		if (f8 == 1) {cout << "0 0 0 +1000\n";continue;}
		if (s1 > 0) cout << '+' << s1 << ' ';
		else cout << s1 << ' ';
		
		if (s2 > 0) cout << '+' << s2 << ' ';
		else cout << s2 << ' ';
		
		if (s3 > 0) cout << '+' << s3 << ' ';
		else cout << s3 << ' ';
		
		if (s4 > 0) cout << '+' << s4 << ' ';
		else cout << s4 << ' ';
		cout << '\n';
	}
	return 0;
}

补充:

本题题目描述实在不清楚。

2024/10/30 21:19
加载中...