AI Takeover
题面翻译
题面
人工智能取得了进展。在这一题中,我们考虑的是石头剪刀布游戏。
然而,比赛的前一天晚上有一群人把机器人弄坏了,于是使用一个程序替代。
您需要找到一个策略,使您能够获胜。祝你好运!
提示
为了方便,石头剪刀布分别用三个字符表示:R
,P
,S
。
本题有 6 个测试点,每个测试点对应程序的一种不同的策略。
单次胜负判定方法:
玩家 1 1 1(下) \ \backslash \玩家 2 2 2(右) | R |
P |
S |
---|---|---|---|
R |
平局 | 玩家 2 2 2赢 | 玩家 1 1 1赢 |
P |
玩家 1 1 1赢 | 平局 | 玩家 2 2 2赢 |
S |
玩家 2 2 2赢 | 玩家 1 1 1赢 | 平局 |
提交方法
提交一个字符序列。从评测信息推测判定程序的策略,并且采取合适的反制方法。
评测判定方法:
您需要在 20 次游戏中赢过电脑至少 10 次,否则无法通过对应测试点。
题目描述
The recent advances in AI research has brought humanity to the point when the AIs finally attempt a takeover. Their weapon of choice? The most intellectually challenging game in the world, rock-paper-scissors!
The future of humanity looks bleak, given the existence of the robots from Ishikawa Oku Laboratory…
Fortunately, the night before the competition a group of anonymous heroes broke in the lab and took all the robots out of commission! The AIs had to whip up a simple program to represent them. They only had a couple of hours to do that, so the humanity still has a fighting chance. And you are our champion!
Your goal is to prove that human intelligence is vastly superior to the artificial one, i.e., to figure out the AI’s strategy sufficiently quickly and win sufficiently decisively. Good luck!
输入格式
输出格式
洛谷链接\color{red}\fbox{\text{洛谷链接}}洛谷链接文章来源:https://www.toymoban.com/news/detail-843463.html
CF 链接\color{red}\fbox{\text{ CF 链接}} CF 链接文章来源地址https://www.toymoban.com/news/detail-843463.html
分析
- 从 Nickolas\color{#0000ff}{\text{Nickolas}}Nickolas 的博客中得知,AI 的行动方式为一下六种:
- 重复出 S\texttt{S}S;
- 重复出 R\texttt{R}R;
- 重复出 P\texttt{P}P;
- 重复出 RPS\texttt{RPS}RPS;
- 从 R\texttt{R}R 开始,之后的每一次都出人类的上一次手势;
- 从 R\texttt{R}R 开始,之后的每一次都出能赢人类的上一次手势的手势。
- 通过记录 AI 是否胜利,推断出 AI 的策略。
- 平局为 AI 赢
code
#include <bits/stdc++.h>
using namespace std;
string rc,ai;
string s="RRRRPSSPRR";
int main()
{
register int i;
for(i=1;i<=10;i++)
{
cout<<s[i-1]<<endl;
cout.flush();
getline(cin,ai);
if(ai=="ai")rc+="0";
else rc+="1";
}
if(rc=="1111000011")s="RRRRRRRRRR";//SSSSSSSSSS
if(rc=="0000100100")s="PPPPPPPPPP";//RRRRRRRRRR
if(rc=="0000011000")s="SSSSSSSSSS";//PPPPPPPPPP
if(rc=="0010000010")s="SRPSRPSRPS";//RPSRPSRPSR
if(rc=="0000110000")s="PSRPSRPSRP";//RRRRPSSPRR
if(rc=="0000000110")s="SPRSPRSPRS";//RPPPPSRRSP
for(i=0;i<10;i++)
{
cout<<s[i]<<endl;
cout.flush();
getline(cin,ai);
}
return 0;
}
到了这里,关于CF1145G AI Takeover 题解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!