ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

csp 201609-3 炉石传说

2021-10-05 15:33:34  阅读:184  来源: 互联网

标签:int 炉石 hlt pos att 201609 solder include csp


csp 201609-3 炉石传说

思路

这道题需要我们定义两个行为,攻击与加兵。

在写题过程中也一定要注意到细节,细节是解决模拟题的关键,一定要对题目有所设计。

代码

#include<iostream>
#include<cstring>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;

class solder {
public:
	solder(int a, int b, int c) {
		this->pos = a;
		this->att = b;
		this->hlt = c;
	}
	int hlt;
	int att;
	int pos;
	bool operator < (const solder& s) const {
		return this->pos < s.pos;
	}
};

int t = 0;
vector<vector<solder>> f;

int hlt[2] = { 30, 30 };

void summ(int pos, int att, int hlt) {
	int n = t % 2;
	for (int i = 0; i < f[n].size(); i++) {
		if (f[n][i].pos >= pos) f[n][i].pos++;
	}
	f[n].push_back(solder(pos, att, hlt));
	sort(f[n].begin(), f[n].end());
}

void att(int att, int def) {
	int n = t % 2, m = (t + 1) % 2;
	if (!def) {
		hlt[m] -= f[n][att - 1].att;
	}
	else {
		solder s1 = f[n][att - 1];
		solder s2 = f[m][def - 1];
		int a = s1.hlt - s2.att;
		int b = s2.hlt - s1.att;
		f[n][att - 1].hlt = a;
		f[m][def - 1].hlt = b;
		if (a <= 0) {
			for (int i = att; i < f[n].size(); i++) f[n][i].pos--;
			f[n].erase(f[n].begin() + att - 1);
		}
		if (b <= 0) {
			for (int i = def; i < f[m].size(); i++) f[m][i].pos--;
			f[m].erase(f[m].begin() + def - 1);
		}
	} 
}

void out() {
	if (hlt[0] <= 0) cout << -1 << endl;
	else if (hlt[1] <= 0) cout << 1 << endl;
	else cout << 0 << endl;
	for (int i = 0; i < 2; i++) {
		cout << hlt[i] << endl;
		cout << f[i].size() << " ";
		for (int j = 0; j < f[i].size(); j++) cout << f[i][j].hlt << " ";
		cout << endl;
	}
}

int main() {
	f.resize(2);
	int n; cin >> n;
	getchar();
	for (int i = 0; i < n; i++) {
		int a, b, c;
		string l;
		getline(cin, l);
		char* ch = (char*)l.data();
		if (l[0] == 's') {
			sscanf_s(ch, "summon %d %d %d", &a, &b, &c);
			summ(a, b, c);
		}
		else if (l[0] == 'a') {
			sscanf_s(ch, "attack %d %d", &a, &b);
			att(a, b);
		}
		else {
			t++;
		}
	}
	out();

}

标签:int,炉石,hlt,pos,att,201609,solder,include,csp
来源: https://www.cnblogs.com/Leopard1214/p/15368716.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有