P1148 拱猪计分90分求助
  • 板块题目总版
  • 楼主Bobi2014
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/8 12:47
  • 上次更新2024/7/8 14:40:30
查看原帖
P1148 拱猪计分90分求助
1211899
Bobi2014楼主2024/7/8 12:47
#include<bits/stdc++.h>
using namespace std;
const int C10 = 50,S12 = -100,D11 = 100,h[14] = {0,-50,-2,-3,-4,-5,-6,-7,-8,-9,-10,-20,-30,-40};
struct people{
	int cnt;
	map<string,bool> vis; 
} pes[5];
string str;
int ans,s[10];
void clean(){
	for(int i = 1;i <= 4;i ++){
		pes[i].vis.clear();
		pes[i].cnt = 0;
	}
} 
bool checkHongXing(int x){
//	cout << pes[x].vis["H13"] << endl;
	if(pes[x].cnt >= 13 and pes[x].vis["H1"] == true and pes[x].vis["H2"] == true and pes[x].vis["H3"] == true and pes[x].vis["H4"] == true and pes[x].vis["H5"] == true and pes[x].vis["H6"] == true and pes[x].vis["H7"] == true and pes[x].vis["H8"] == true and pes[x].vis["H9"] == true and pes[x].vis["H10"] == true and pes[x].vis["H13"] == true and pes[x].vis["H11"] == true and pes[x].vis["H12"] == true){
		return true;
	}else{
//		cout << x << endl;
		return false;
	}
}
void build(int x){
	int cnt = pes[x].cnt;
	if(cnt == 1 and pes[x].vis["C10"] == true){
		ans = 50;
		return;
	}
	if(checkHongXing(x) == true){
		ans = 200;
//		cout << "haha";
		if(pes[x].vis["S12"] == true and pes[x].vis["D11"] == true){
			ans = 500;
		}
	}else{
		int sum = 0;
		if(pes[x].vis["H1"] == true){
			sum += h[1];
		}
		if(pes[x].vis["H2"] == true){
			sum += h[2];
		}
		if(pes[x].vis["H3"] == true){
			sum += h[3];
		}
		if(pes[x].vis["H4"] == true){
			sum += h[4];
		}
		if(pes[x].vis["H5"] == true){
			sum += h[5];
		}
		if(pes[x].vis["H6"] == true){
			sum += h[6];
		}
		if(pes[x].vis["H7"] == true){
			sum += h[7];
		}
		if(pes[x].vis["H8"] == true){
			sum += h[8];
		}
		if(pes[x].vis["H9"] == true){
			sum += h[9];
		}
		if(pes[x].vis["H10"] == true){
			sum += h[10];
		}
		if(pes[x].vis["H11"] == true){
			sum += h[11];
		}
		if(pes[x].vis["H12"] == true){
			sum += h[12];
		}
		if(pes[x].vis["H13"] == true){
			sum += h[13];
		}
		ans = sum;
		if(pes[x].vis["S12"] == true){
			ans += S12;
		}
		if(pes[x].vis["D11"] == true){
			ans += D11;
		}
	}
	if(pes[x].vis["C10"] == true){
		ans *= 2;
	}
}
int main(){
	while(true){
		clean();
		int ops = 0;
		for(int i = 1,cnt;i <= 4;i ++){
			cin >> cnt;
			for(int j = 1;j <= cnt;j ++){
				cin >> str;
				if(str == "S12" or str[0] == 'H' or str == "D11" or str == "C10"){
					pes[i].vis[str] = true;
					pes[i].cnt ++;
				}
			}
			ans = 0; 
			build(i);
			if(cnt == 0){
				ops ++;
			}
			s[i] = ans;
		} 
		if(ops == 4){
			return 0;
		}else{
			for(int i = 1;i <= 4;i ++){
				if(s[i] > 0){
					cout << "+";
				}
				cout << s[i] << " ";
			}
			cout << endl;
		}
	}
	return 0;
}

2024/7/8 12:47
加载中...