交互题浅谈
·
概念
交互题,顾名思义,就是电脑和评测机交流,然后得出数据的题目,这种题往往与传统题相差不了太多,一点注意事项待会仔细说。
例题
1. Guess the Number
题目传送门
就是一个二分的交互题,相信有些同学已经写出这样的代码了:
#include<bits/stdc++.h>
using namespace std;
int l=1,r=1000000;
char s[2];
int main(){
while(l+1<r){
int m=(l+r)/2;
printf("%d\n",m);
scanf("%s",s);
if(s[0]=='<')
r=m-1;
else
l=m;
}
printf("%d\n",r);
scanf("%s",s);
if(s[0]=='<')
printf("! %d",l);
else
printf("! %d",r);
}
然后就开开心心的提交,开开心心的ILE了。
我不服,为啥我没有AC?
你问我我问谁是因为你没有刷新缓冲区。
每输出一次,就要刷新缓冲区,那怎么刷新呢?
怎么刷新缓冲区
c/c++(scanf):fflush(stdout)
c++(cin):cout<<flush
pascal:flush(output)
java:System.out.flush()
python:stdout.flush()
什么,这些都不是你的编程语言?自己上网查!
然后我们就能写对了:
#include<bits/stdc++.h>
using namespace std;
int l=1,r=1000000;
char s[2];
int main(){
while(l+1<r){
int m=(l+r)/2;
printf("%d\n",m);
fflush(stdout);
scanf("%s",s);
if(s[0]=='<')
r=m-1;
else
l=m;
}
printf("%d\n",r);
fflush(stdout);
scanf("%s",s);
if(s[0]=='<')
printf("! %d",l);
else
printf("! %d",r);
fflush(stdout);
}
2. 1505A. Is it rated - 2
题目传送门
很简单的一道题,直接看代码:
#include<bits/stdc++.h>
using namespace std;
char s[101];
bool b=true;
int n;
int main(){
while(1){
n=0;
char c;
while(c=getchar(),c!=EOF){
if(c=='\n')
break;
s[++n]=c;
}
if(c==EOF)
break;
printf("No\n");
fflush(stdout);
}
}
没写fflush(stdout)的给我自主站起来
习题
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)