#交互#CF1375F Integer Game
2021/8/10 23:38:20
本文主要是介绍#交互#CF1375F Integer Game,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
题目
有三堆石子初始石子数分别为\(a,b,c\),可以选择先手还是后手操作,
每次操作形如先手选择一个正整数 \(k\) ,后手自由选择一堆石子加上 \(k\) ,
但是不能和上一次操作选择的石堆相同。
如果在1000次操作内,存在两堆石子相同则先手必胜,否则先手必败
分析
考虑如果单纯补上两堆石子的差值那么后手必然会选择第三堆石子或者大的那堆石子,
那么就是要让后手无法选择,所以要让\(b-a=c-b\)并且强制\(c\)这一堆不能选先手必胜,
考虑先设置公差,\(c\)要倒数第二轮,那么可以先指定\(b\)是哪一堆,一开始设置\(inf\)即可,
那么\(b\)就是第二大的,因为最后要使\(b*2=a+c\),那么可以将公差设为\(b*2-a-c\),
这样后手选的数一定是最大的,这样再设置公差三轮先手必胜
代码
#include <cstdio> #define rr register using namespace std; typedef long long lll; lll a[3]; inline signed Get_Rank(lll x){ printf("%lld\n",x),fflush(stdout); rr int ret; scanf("%d",&ret); if (!ret) return -1; a[--ret]+=x; return ret; } signed main(){ for (rr int i=0;i<3;++i) scanf("%lld",&a[i]); printf("First\n"),fflush(stdout); rr int now0=Get_Rank(1e10); if (now0==-1) return 0; rr int now1=Get_Rank(a[now0]*3-a[0]-a[1]-a[2]); if (now1==-1) return 0; Get_Rank(a[now1]-a[now0]); return 0; }
这篇关于#交互#CF1375F Integer Game的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-26怎么使用nsenter命令进入容器?-icode9专业技术文章分享
- 2024-12-26导入文件提示存在乱码,请确定使用的是UTF-8编码怎么解决?-icode9专业技术文章分享
- 2024-12-26csv文件怎么设置编码?-icode9专业技术文章分享
- 2024-12-25TypeScript基础知识详解
- 2024-12-25安卓NDK 是什么?-icode9专业技术文章分享
- 2024-12-25caddy 可以定义日志到 文件吗?-icode9专业技术文章分享
- 2024-12-25wordfence如何设置密码规则?-icode9专业技术文章分享
- 2024-12-25有哪些方法可以实现 DLL 文件路径的管理?-icode9专业技术文章分享
- 2024-12-25错误信息 "At least one element in the source array could not be cast down to the destination array-icode9专业技术文章分享
- 2024-12-25'flutter' 不是内部或外部命令,也不是可运行的程序 或批处理文件。错误信息提示什么意思?-icode9专业技术文章分享