大模拟A不了,小蒟蒻求助
查看原帖
大模拟A不了,小蒟蒻求助
461366
封禁用户楼主2021/8/3 21:50
#include <bits/stdc++.h>
using namespace std;

const string result[] = {"", "Win ", "Loss", "Draw"};
set<pair<vector<int>, vector<vector<int> > > > path;
vector<int> cards;
vector<vector<int> > pile;
int ans;

void init() {
	path.clear();
	vector<int>().swap(cards);
	vector<vector<int> >(7).swap(pile);
	ans = 7;
}

int pending() {
	bool win = 1;
	for (int i = 0; i < 7; i++) win &= (pile[i].empty());
	if (win) return 1;
	if (cards.empty()) return 2;
	if (path.find(make_pair(cards, pile)) != path.end()) return 3;
	path.insert(make_pair(cards, pile));
	return 0;
}

bool check(int x) {
	if ((x == 10) || (x == 20) || (x == 30)) return 1;
	return 0;
}

void insert(vector<int> &ins, int x) {
	ins.push_back(x);
	if (ins.size() >= 3 && check(ins[0] + ins[1] + ins.back())) {
		cards.push_back(ins[0]);
		cards.push_back(ins[1]);
		cards.push_back(ins.back());
		ins.erase(ins.begin());
		ins.erase(ins.begin());
		ins.pop_back();
	}
	if (ins.size() >= 3 && check(ins[0] + ins[ins.size() - 2] + ins.back())) {
		cards.push_back(ins[0]);
		cards.push_back(ins[ins.size() - 2]);
		cards.push_back(ins.back());
		ins.erase(ins.begin());
		ins.pop_back();
		ins.pop_back();
	}
	if (ins.size() >= 3 && check(ins[ins.size() - 3] + ins[ins.size() - 2] + ins.back())) {
		cards.push_back(ins[ins.size() - 3]);
		cards.push_back(ins[ins.size() - 2]);
		cards.push_back(ins.back());
		ins.pop_back();
		ins.pop_back();
		ins.pop_back();
	}
}

bool solve() {
	int x;
	cin >> x;
	if (!x) return 0;
	cards.push_back(x);
	for (int i = 0; i < 51; i++) {
		cin >> x;
		cards.push_back(x);
	}
	
	for (int i = 0; i < 7; i++) pile[i].push_back(cards[i]);
	cards.erase(cards.begin(), cards.begin() + 7);
	int status, pos = -1;
	while (!(status = pending())) {
		while (pile[++pos % 7].empty());
		insert(pile[pos % 7], cards[0]);
		cards.erase(cards.begin());
		ans++;
	}
	
	cout << result[status] << ": " << ans << endl;
	return 1;
}

int main() {
	do init(); while (solve());
	return 0;
}

Qing_fy因拉低洛谷平均水平,已被封禁QAQ

2021/8/3 21:50
加载中...