网站后台怎么用,管理咨询系统,cps推广联盟,网络公司推广今天cf遇到了交互题#xff0c;这个交互题的算法很很很简单#xff0c;但是在交互上卡了#xff0c;导致交上的代码都不算罚时。#xff08;更伤心了。
所以#xff0c;现在写一下交互题的做法#xff0c;印象深刻嘛。
交互题#xff0c;就是跟机器进行交互。你代码运…今天cf遇到了交互题这个交互题的算法很很很简单但是在交互上卡了导致交上的代码都不算罚时。更伤心了。
所以现在写一下交互题的做法印象深刻嘛。
交互题就是跟机器进行交互。你代码运行程序发出的东西会影响机器向你传来的东西即输入跟上次输出有关系。
对于c要用
flush(stdout);
// 或者
cout.flush();
// 或者
coutendl;使用这些主要是为了刷新标准输出缓冲区让之前输入可能得到的输出序列刷新得到新的输出序列。
如何做题
传统算法题的交互相当于跟已经输入的冷漠的数据进行交互但是交互题相当于跟一个人进行交谈。注意刷新缓冲区和算法逻辑跟传统的一样。其实还是要做题我没做题前感觉交互题不就是记得刷新一下缓冲区的么其他有什么区别但在实际中感觉还是有一点不一样。 在div2 897场的C题就是一道交互题是在cf赛中第一次遇到。读完题感觉算法就有了读入S进行记录从0开始递增判断是否在S里第一个不在S里的数输出之后输入什么就输出什么就行。
这一题把交互去掉其实就是一个很简单的博弈题。但是这个交互我写错了我把他当作传统题来写了找到第一个不在S里的数输出之后输入然后判断输出-1结束。
void solve() {int n; cinn;vectorint a(n);mapint,int mii;for(auto t: a) cint,mii[t] 1;int y;int sd 0;while(mii[sd] 1) sd;coutsd\n;fflush(stdout);ciny;if(y -1) return;couty\n;fflush(stdout);puts();ciny;if(y -1) return ;
}但是缺忘记Bob即使会失败但是他可能还会去尝试。这点跟传统算法题不一样传统博弈都是每个人都是最优的策略。这个感觉Bob笨笨的。
void solve() {int n; cinn;vectorint a(n);mapint,int mii;for(auto t: a) cint,mii[t] 1;int y;int sd 0;while(mii[sd] 1) sd;while(1) {coutsdendl;// coutst\n; fflush(stdout); # 都可以ciny;if(y -1) return;sd y;}
}