0pts求调
  • 板块P1148 拱猪计分
  • 楼主hxjus
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/1/20 17:29
  • 上次更新2024/1/20 20:13:25
查看原帖
0pts求调
1017932
hxjus楼主2024/1/20 17:29
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
using namespace std;

int s[14] , h[14] , d[14] , c[14] , t;
int main()
{
	cin >> t;
	while(t--)
	{
		for(int i = 1; i <= 4; i++)
		{
			memset(s , 0 , sizeof s);
			memset(h , 0 , sizeof h);
			memset(d , 0 , sizeof d);
			memset(c , 0 , sizeof c);
			int n;
			cin >> n;
			for(int i = 1; i <= n; i++)
			{
				string a;
				cin >> a;
				if(a[0] == 'S')
				{
					if(a.length() == 2) s[a[1] - '0'] = 1;
					else s[(a[1] - '0') * 10 + a[2] - '0'] = 1;
				}
				else if(a[0] == 'H')
				{
					if(a.length() == 2) h[a[1] - '0'] = 1;
					else h[(a[1] - '0') * 10 + a[2] - '0'] = 1;
				}
				else if(a[0] == 'D')
				{
					if(a.length() == 2) d[a[1] - '0'] = 1;
					else d[(a[1] - '0') * 10 + a[2] - '0'] = 1;
				}
				else
				{
					if(a.length() == 2) c[a[1] - '0'] = 1;
					else c[(a[1] - '0') * 10 + a[2] - '0'] = 1;
				}
			}
			int f1 = 0 , f2 = 0 , f3 = 0;
			if(c[10]) f3 = 1;
			for(int i = 1; i <= n; i++)
			{
				if(h[i] == 1) f1 = 1;
				else f2 = 1;
			}
			if(f1 && !f2)
			{
				if(f3)
				{
					if(s[12] == 1 && d[11] == 1) {cout << "+1000 ";continue;}
					else {cout << "+400 ";continue;}
				}
				else
				{
					if(s[12] == 1 && d[11] == 1) {cout << "+500 ";continue;}
					else {cout << "+200 ";continue;}
				}
			}
			else if(f1 && f2)
			{
				int sc = 0;
				for(int i = 1; i <= n; i++)
				{
					if(h[i] == 1 && i == 1) sc -= 50;
					else if(h[i] == 1 && i >= 2 && i <= 10) sc -= i;
					else if(h[i] == 1 && i > 10) sc += -((i - 9) * 10);
				}
				if(s[12] == 1) sc -= 100;
				if(d[11] == 1) sc += 100;
				if(f3) cout << sc * 2 << " ";
				else cout << sc << " ";
			}
			else
			{
				if(f3) cout << "+50";
				cout << 0 << " ";
			}
		}
		cout << endl;
	}
    return 0;
}

实在看不出错误啦

2024/1/20 17:29
加载中...