前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【 HDU 1538 】A Puzzle for Pirates (海盗博弈论)

【 HDU 1538 】A Puzzle for Pirates (海盗博弈论)

作者头像
饶文津
发布2020-06-02 12:27:20
4270
发布2020-06-02 12:27:20
举报
文章被收录于专栏:饶文津的专栏

BUPT2017 wintertraining(15) #5D HDU 1538 偷懒直接放个果壳的链接了,感觉比网上直接找这题的题解要更正确、易懂。 海盗博弈论

代码

代码语言:javascript
复制
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
int t,n,m,p,a[10004],ans;
int main() {
	for(int i=2;i<=10000;i<<=1)a[i]=1;
	scanf("%d",&t);
	while(t--){
		scanf("%d%d%d",&n,&m,&p);
		int d=m-(n-1)/2;//贿赂后剩下的
		if(d>=0){
			if(p==n) ans=d;
			else ans=p%2==n%2;
		}else{//不剩
			if(!a[n-m*2]&&p==n)ans=-1;
			else{
				while(!a[n-m*2])n--;//第一个不会扔出去的
				if(p>n) ans=-1;
				else ans=0;//n号海盗有多种分金币的方案,没有人是确定能被分到贿赂的这1金币的
			}
		}
		if(ans==-1)puts("Thrown");
		else printf("%d\n",ans);
	}	
	return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-03-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档