首页 > 其他分享 >P2482 [SDOI2010] 猪国杀 代码(暂未完成)

P2482 [SDOI2010] 猪国杀 代码(暂未完成)

时间:2024-07-13 09:31:42浏览次数:15  
标签:猪国 int transCard top 暂未 SDOI2010 player now card

#include<bits/stdc++.h>
using namespace std;
namespace work{

const int maxPlayerNumber = 11;

int n,m,top = 1;//玩家数,牌堆中的牌数,目前的牌堆顶
unordered_map<string,int> transCard;//牌型编号
unordered_map<string,int> transRole;//角色编号

vector<int> cardHeap;//牌堆

int prince = 1,enemy;//反贼数量和主公数量

int Sstate = 0;//场上无懈可击状态

struct Player{
	int role,state,health;//玩家角色,装备(是否装备上诸葛连弩),体力值
	string endState = "ALIVE";//在场状态(死亡判断)
	bool usedKill;//是否在出牌阶段使用了‘杀’
	int emo[maxPlayerNumber];//对每个玩家的态度
	list<int> card;//手牌
}P[maxPlayerNumber];

void init() {
	transRole["MP"] = 1;transRole["ZP"] = 2;transRole["FP"] = 3;
	transCard["P"] = 1;transCard["K"] = 2;transCard["D"] = 3;transCard["F"] = 4;
	transCard["N"] = 5;transCard["W"] = 6;transCard["J"] = 7;transCard["Z"] = 8;
}

void getData() {
	//读数据
	cin>>n>>m;
	string s;
	for(int i = 1;i<=n;i++) {
		cin>>s;
		P[i].role = transRole[s];
		P[i].health = 4;
		if(P[i].role == 3) enemy++;
		for(int j = 1;j<=4;j++) {cin>>s;P[i].card.emplace_back(transCard[s]);}
	}
	for(int i = 1;i<=m;i++) {cin>>s;cardHeap.emplace_back(transCard[s]);}
}

bool Check() {
	//判断局面情况
	if(!prince) return -1;
	if(!enemy) return 1;
	return 0;
}

int now = 1;

void getCard(int player){
	//摸牌
	P[player].card.emplace_back(cardHeap[top++]);
	if(top == m + 1) top = m;
	P[player].card.emplace_back(cardHeap[top++]);
	if(top == m + 1) top = m;
}

void use_The_Next_Card(int player,list<int>::iterator it){
	//使用下一张牌
	for(;it != P[player].card.end();it++) {
		if()
	}
}

void PlayerOption(int player){
	getCard(player);
	auto now_used = P[player].card.begin();
	while(now_used != P[player].card.end()) {
		use_The_Next_Card(player,now_used);
		Check();
		Sstate = 0;
	}
}

void solve(){
	getData();
	while(Check()){
		PlayerOption(now);
		now = (now) % (n + 1) + 1;
	}
	if(Check() == 1) {
		cout<<"MP\n";
		for(int i = 1;i<=n;i++) {
			if(P[i].endState == "DEAD") cout<<P[i].endState;
			else for(auto j:P[i].card) cout<<j<<" ";
			cout<<'\n';
		}
	}else {
		cout<<"FP\n";
		for(int i = 1;i<=n;i++) {
			if(P[i].endState == "DEAD") cout<<P[i].endState;
			else for(auto j:P[i].card) cout<<j<<" ";
			cout<<'\n';
		}
	}
}

}

signed main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);
	work::init();
	work::solve();
	return 0;
}

标签:猪国,int,transCard,top,暂未,SDOI2010,player,now,card
From: https://www.cnblogs.com/WG-MingJunYi/p/18299689

相关文章

  • stm32f103c8t6使用bootloader进行ymodem下载和app程序测试,部分总结(暂未测试中断向量偏
    bootloader程序部分(功能测试)print_boot_message();/*USERCODEEND2*//*Infiniteloop*//*USERCODEBEGINWHILE*/uint8_tkey_get_state;while(1){/*USERCODEENDWHILE*//*USERCODEBEGIN3*/key_get_state=g......
  • 云渲染实施记录(暂未跑通)
    大家好,本文记录了尝试跑通云渲染的过程,目前暂时没有跑通,不过已经有了方向目录基本原理1.租GPU服务器2.部署到云渲染平台未来方向更多参考资料相关文章:数字孪生云渲染整体架构设计本文尝试把基于WebGPU-Node的路径追踪渲染器部署到云端,以云渲染/云游戏的方式渲染到客户端,从而......
  • RISmed软件包的使用(碰到EUtilsGet()步骤报错,暂未解决)
    教程1:https://www.jianshu.com/p/1544070a95e1教程2:https://www.jingege.wang/2020/06/03/pubmed数据挖掘:rismed包/问题网址:https://githubhelp.com/skoval/RISmed我也碰到同样问题未解决:运行代码记录如下:library(RISmed)library("XML")library("methods")##限定下检索......
  • Java中的数组-暂未完结
    数组的定义数组是相同类型数据的有序集合数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。◆其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们。数组声明创建◆首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的......
  • [SDOI2010] 大陆争霸
    [SDOI2010]大陆争霸屁话真多。第一眼看上去好像是最短路加了个强制拓扑。也就是说当结界还没被破坏的时候,已经到达的机器人只能干等着。在dijkstra中,机器人所在的点可以更新最短路。但拓扑图上该点的入度不为\(0\),即结界产生器没有被全部破坏时,不能入队。当炸掉一个结界......
  • [SDOI2010] 大陆争霸 题解
    [题目传送门](https://www.luogu.com.cn/problem/P2446)#解法由题可知,一个城市$u$保护城市$v$,所以建一条边$u\tov$表示城市$u$保护城市$v$,因为题目说保证有解,所以建的图一定是一个**有向无环图$DAG$**。再在此基础上求出最短路径。具体过程为设$dis_u$表示实际到达(攻破)$u$的最......
  • obproxy 源码编译以及一些问题整理-暂未编译成功
    尝试自己编译下oceanbase的obproxy并记录下一些问题,目前是暂未编译成功,因为是openssl版本包的问题环境说明基于了RockyLinuxrelease8.8,同时obproxy使用了4.2.1版本的构建参考命令这个官方已经提供了,主要就是initdebug,makeshbuild.shinitshbuild.sh......
  • 【题解】Luogu-P2482 SDOI2010 猪国杀
    写了\(358\)行,\(11.94\mathrm{KB}\),有这么几个地方写挂了:反猪决斗一定选主猪。游戏结束判定是主猪死亡或全部反猪死亡。决斗可能被反杀,之后不能再出牌。点击查看代码#include<bits/stdc++.h>usingnamespacestd;intn,m;charCh[3];queue<char>Deck;in......
  • 【遇到一个神奇的问题】暂未想到原因,http.Post 传入 nil参数正确,但是传输值为 nil 的
    出错的代码如下:funcgetEab(ctxcontext.Context,credentialsJSONstring,old*externalAccountKeyResp)(*externalAccountKeyResp,error){//inithttpclient// varpostData*bytes.Reader=nil ifold!=nil{ buf,_:=json.Marshal(old) postData......
  • [SDOI2010] 代码拍卖会 题解
    [SDOI2010]代码拍卖会题解题目描述一个\(n,n\le10^{18}\)位数,仅由\(1\sim9\)组成,后一位数字一定大于等于前一位数字。求这些数中可以被\(m,m\le500\)整除的有多少,对\(999911659\)取模。解析这个数一定形如\(112334455677788999\)可以把它拆成\[\begin{aligned}......