谁能帮我调调这道题啊!!!QAQ
查看原帖
谁能帮我调调这道题啊!!!QAQ
461366
封禁用户楼主2021/8/1 21:17

苦逼的蒟蒻5小时了还没调出来,大佬帮忙看看吧

#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.count(make_pair(cards, pile))) return 3;
	path.insert(make_pair(cards, pile));
	return 0;
}

int check(int x) {
	if ((x == 10) || (x == 20) || (x == 30)) return x;
	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 = 0;
	do {
		while (pile[pos % 7].empty()) pos++;
		insert(pile[pos++ % 7], cards[0]);
		cards.erase(cards.begin());
		ans++;
	} while (!(status = pending()));
	
	cout << result[status] << ": " << ans << endl;
	return 1;
}


int main() {
	do init();
	while (solve());
	return 0;
}
2021/8/1 21:17
加载中...