阿里巴巴和n个大盗 博弈、策略
Source
My Solution
由于必须半数以上人同意才能通过方案,所以当剩余两个人时2号必死,因为1号不同意就能独吞。
当总人数三个以上时就有以下的情况:显然4号需要至少3人的同意,可知3号是无论如何不会同意的,因此他只需要拉拢1,2号即可,
5个人时只要3个人同意即可,此时因为5号如果死3号必定不会得到宝石,所以只要给他1个宝石即可。然后再拉拢1,2号中的任意一个,
以此类推,发现当(n+1)是偶数时阿里巴巴只要给1到n号人1,1,0,1,0,1,0....0即可;注意这里以 0 结尾 ;此时
m-(n+1)/2。★
/*给1号或者2号*/即可
因为题目所给数据范围的限制,本题不会出现m不够用的情况,在这里不再讨论。
注意心狠手辣一词。
#include
#include
#define LOCAL
using namespace std;
int main()
{
#ifdef LOCAL
freopen("a.txt","r",stdin);
#endif // LOCAL
int n,m;
scanf("%d%d",&n,&m);
if(n==1) printf("-1");
else if(n==2) printf("%d",m);
else if(n==3) printf("%d",m-2);
else if(n==4) printf("%d",m-3);
else {
if(n%2==1)printf("%d",m-(n+1)/2);
else printf("%d",m-(n+2)/2);
}
return 0;
}
非特殊说明,本站所有文章均为博主原创,未经许可不得转载。
https://www.prolightsfxjh.com/
Thank you!
------from ProLightsfx
非特殊说明,本博所有文章均为博主原创,未经许可不得转载。
如经许可后转载,请注明出处:https://prolightsfxjh.com/article/uestc-1253/
共有 0 条评论