当前位置:网站首页>杭电多校七 1008-Triangle Game(博弈)
杭电多校七 1008-Triangle Game(博弈)
2022-08-10 09:48:00 【AC__dream】
样例输入:
3
2 2 3
2 3 4
5 3 4
样例输出:
Win
Lose
Win
题意:一开始给定一个非退化三角形的三边长a,b,c,两个人轮流操作,,每次操作可以选择一个边长将其减少不小于1个单位长度,要保证操作后必须还是非退化三角形,保证两个玩家都是采取的最优策略,问先手是必胜还是必败。
注意下面以^代表异或
分析:结论:先手胜当且仅当(a-1)^(b-1)^(c-1)!=0。
我们定义先手的必胜态为W态:(a-1)^(b-1)^(c-1)!=0
必败态为L态:(a-1)^(b-1)^(c-1)==0
我们先来看一下必败态是不是一个非退化三角形,假设a<=b<=c,c-1=(a-1)^(b-1)<=(a-1)+(b-1)等价于c<a+b,所以显然必败态是一个非退化三角形。
根据博弈论的知识我们知道,一个必胜态一定能够经过一次操作到达必败态,而一个必败态无论怎样操作都只能到达必胜态。
下面我们分别来证明这两个结论:
假设我们当前处于必败态L态,也就是有(a-1)^(b-1)^(c-1)==0
假设a<=b<=c
如果a等于1,那么代入必败态条件种可以知道有b==c,那么这显然是一个必败态,也就是说先手已经无法操作。
如果a不等于1,那么肯定有b<c,那么就有1<a<b<c,那么显然我们可以对a,b,c中的一个数进行操作,不妨假设对a进行操作,得到x,那么有a>x,由于(b-1)^(c-1)=a-1>x-1,那么显然有(b-1)^(c-1)^(x-1)!=0,也就是说我们由必败态走到了必胜态,而且无论如何都无法找到一个x使得(b-1)^(c-1)^(x-1)==0,也就是说我们由必败态只能走到必胜态。
下面我们证一下由必胜态存在一种合法方案走到必败态。
这里的证明方法类似于尼姆博弈:我们令x=(a-1)^(b-1)^(c-1),那么如果我把(a-1)或者(b-1)或者(c-1)的其中一个对应地换成(a-1)^x,(b-1)^x,(c-1)^x,那么就会得到操作后的三个数异或值变为0.能这样进行操作的条件就是(a-1)>(a-1)^x,(b-1)>(b-1)^x,(c-1)>(c-1)^x三个不等式中至少有一个是成立的,由于x=(a-1)^(b-1)^(c-1),那么x的二进制中为1的位置代表在(a-1)、(b-1)、(c-1)这三个数中的出现次数为奇数次,那么我们不妨让x中最高位为1的那一位上也为1的一个数来跟x进行异或,那么异或后值肯定会变小,那么也就是说三个不等式中肯定有成立的不等式,所以也就是说一定存在一个操作使得我们从必胜态走到必败态。
证毕!
下面是代码:
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<map>
#include<queue>
#include<vector>
#include<cmath>
using namespace std;
int main()
{
int T;
cin>>T;
while(T--)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(((a-1)^(b-1)^(c-1))!=0) printf("Win\n");
else printf("Lose\n");
}
return 0;
}
边栏推荐
- 「微服务架构」编曲与编舞——让系统协同工作的不同模式
- 12 【其它组合式API】
- shell iterates over folders and outputs
- 初识Flink 完整使用 (第一章)
- 【企业架构】敏捷与企业架构:战略联盟
- The first offline workshop in 2022!Data application experience day for application developers is coming | TiDB Workshop Day
- VBA: 采用Combox控件实现二级下拉菜单功能
- 亚信AntDB数据库有啥业务应用场景和应用案例?
- navicat导入SQL文件报:[ERR] 2006 - MySQL server has gone away [ERR] -- MySQL dump 10.13 Distrib 5.7.34
- Fourier series and Fourier transform
猜你喜欢
Basic concepts, structures, and classes of thread pools
Nvidia's gaming graphics card revenue plummets / Google data center explosion injures 3 people / iPhone battery percentage returns... More news today is here...
win下的开发环境变量记录
jq封装树形下拉选择框组件
07 【动态组件 组件注册】
【STL】位图的介绍使用以及代码的模拟实现
「技术选型」工作流引擎哪家强?首席架构帮你挑
「微服务架构」编曲与编舞——让系统协同工作的不同模式
阻塞队列与线程池原理
IDEA中xml文件头报错:URI is not registered (Settings | Languages & Frameworks | Schemas and DTDs)
随机推荐
ELK入门
UE4 Sequence添加基础动画效果 (04-在序列中使用粒子效果)
SQL优化总结
「业务架构」TOGAF建模:业务功能分解图
LCD DRM驱动框架分析二
关于编程本质那些事
Development environment variable record under win
《广州市公路工程安全生产监督管理办法》印发,从六大方面进行修订
Controller层代码这么写,简洁又优雅!
属性动画QPropertyAnimation
【企业架构】敏捷与企业架构:战略联盟
09 【Attributes继承 provide与inject】
The Generation of Matlab Symbolic Functions and the Calculation of Its Function Values
【数据架构】概念数据模型和逻辑数据模型有什么区别
LCD DRM component 框架分析
JWT:拥有我,即拥有权力
高通 msm8953 LCD 休眠/唤醒 流程
用高质量图像标注数据加速AI商业化落地
裸辞→自我放松→闭关→复习→斩获Offer
Which is the strongest workflow engine for "Technology Selection"?Chief Architecture Helps You Pick