分三种情况:

1.k=1。此时每次都说反话,反着二分即可。

2.1<k <= n。那么在前n次问答中一定会出现一次错误,通过不断输出1找出那个错误发生的位置(若回答是>那这就是错误)。此后每隔k次就会有一个错误发生,判断出来即可。

3.k > n。不能用上面的方式,否则回答次数会超过2n。因为k>n,所以在2n次问答中只会出现一个错误,所以通过每次输出两个同样的数,判断是否出现错误。当两次得到应答不一致时,就说明错误发生,再输出一个同样的数确定是非。此外便可以正常二分。

*清空缓冲区要用cin

#include<bits/stdc++.h>
using namespace std;
const int mod = 1e9+7;
typedef long long LL;
LL n,k; void gao1()
{
LL mid,L= 1, R= ((1LL)<<n)-1;
char c;
while(L<=R){
mid = L+(R-L)/2;
printf("%lld\n",mid);
cin>>c;
if(c== '=' ){
break;
}
else if(c== '<' ){
R = mid-1;
}
else{
L = mid+1;
}
}
} void gao2()
{
int pos;
char c;
for(int i=1;i<=n;++i){
printf("1\n");
cin>>c;
if(c=='>'){
break;
}
}
LL mid,L= 1, R= ((1LL)<<n)-1;
int cnt = 1;
while(L<=R){
mid = L+(R-L)/2;
printf("%lld\n",mid);
cin>>c;
if(c=='=')
break;
else if(c=='<'){
if(cnt==k){
cnt = 0;
R = mid-1;
}
else L = mid+1;
}
else{
if(cnt==k){
cnt = 0;
L = mid+1;
}
else{
R = mid-1;
}
}
cnt++;
}
} void gao3()
{
LL mid,L= 1, R= ((1LL)<<n)-1;
char c1,c2;
bool flag = true;
while(L <= R ){
mid = L+(R-L)/2;
printf("%lld\n",mid);
cin>>c1;
if(c1=='=')
break; if(flag){
printf("%lld\n",mid);
cin>>c2;
if(c2=='=')
break;
if(c1!=c2){ //error
flag = false;
char c3;
printf("%lld\n",mid);
cin>>c3;
if(c1==c3){
if(c1=='<') L = mid+1;
else R = mid-1;
}
else{
if(c2=='<') L = mid+1;
else R = mid-1;
}
}
else{
if(c1=='<') L = mid+1;
else R = mid-1;
}
}
else{
if(c1=='<') L = mid + 1;
else R = mid - 1;
}
}
} int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
#endif
int in;
scanf("%lld %lld",&n, &k);
if(n==1){
printf("1\n");
return 0;
} if(k==1) gao1();
else if(k<=n) gao2();
else gao3();
return 0;
}

EOJ Monthly 2018.11 猜价格 (模拟)的更多相关文章

  1. EOJ Monthly 2018.11 D. 猜价格

    猜价格 分两种情况讨论: k≤n,先猜至多 k 次 1,由于回答 <1 肯定是假的,所以可以把剩余系下是哪次错试出来,然后用至多 n 次搞定. k>n,每个数都猜两次,如果两次结果不一样, ...

  2. EOJ Monthly 2018.8 D. Delivery Service-树上差分(边权/边覆盖)(边权转点权)(模板题)

    D. Delivery Service 单测试点时限: 2.5 秒 内存限制: 512 MB EOJ Delivery Service Company handles a massive amount ...

  3. EOJ Monthly 2018.7

    准备继续大学acm啦 又要开始愉快的码码码啦 第一次在华东师大OJ上面做题 看来EOJ上的积分体质是假的,我怎么一把上红??? A.数三角形 神tm的防AK题放在A,出题人很不友好啊... 先写了个暴 ...

  4. EOJ Monthly 2018.3

    985月赛我只喜欢ECNU.jpg A. 打工时不可能打工的 Time limit per test: 2.0 seconds Memory limit: 256 megabytes 我 Ayano ...

  5. EOJ Monthly 2018.4

    A. ultmaster 的小迷妹们 Time limit per test: 2.0 seconds Memory limit: 256 megabytes ultmaster 男神和他的小迷妹们准 ...

  6. EOJ Monthly 2018.4 (E.小迷妹在哪儿(贪心&排序&背包)

    ultmaster 男神和小迷妹们玩起了捉迷藏的游戏. 小迷妹们都希望自己被 ultmaster 男神发现,因此她们都把自己位置告诉了 ultmaster 男神,因此 ultmaster 男神知道了自 ...

  7. EOJ Monthly 2019.11 E. 数学题(莫比乌斯反演+杜教筛+拉格朗日插值)

    传送门 题意: 统计\(k\)元组个数\((a_1,a_2,\cdots,a_n),1\leq a_i\leq n\)使得\(gcd(a_1,a_2,\cdots,a_k,n)=1\). 定义\(f( ...

  8. [EOJ Monthly 2018.10][C. 痛苦的 01 矩阵]

    题目链接:C. 痛苦的 01 矩阵 题目大意:原题说的很清楚了,不需要简化_(:з」∠)_ 题解:设\(r_i\)为第\(i\)行中0的个数,\(c_j\)为第\(j\)列中0的个数,\(f_{i,j ...

  9. 【EOJ Monthly 2018.7】【D数蝌蚪】

    https://acm.ecnu.edu.cn/contest/92/problem/D/ D. 数蝌蚪 Time limit per test: 2.0 seconds Memory limit:  ...

随机推荐

  1. Artech的MVC4框架学习——第五章Model的绑定

    第一Model绑定本质就是为目标Action方法生成参数列表的过程,参数数据存在于http请求.请求的 URL .消息报头或主体中. 第二aciton 参数的元数据通过 ParameterDescri ...

  2. MacOS 安装 nginx

    brew install nginx 开机启动 $ sudo cp `brew --prefix nginx`/homebrew.mxcl.nginx.plist /Library/LaunchDae ...

  3. stopImmediatePropagation和stopPropagation (事件、防止侦听)

    参考: ActionScript 3.0 Step By Step系列(六):学对象事件模型,从点击按扭开始 actionscript宝典 一.事件模型 egret中的事件模型和flash是一样的,但 ...

  4. 使用curl进行s3服务操作

    最近使用curl对s3进行接口测试,本想写个总结文档,但没想到已有前辈写了,就直接搬过来做个记录吧,原文见: http://blog.csdn.net/ganggexiongqi/article/de ...

  5. mysql rowid实现

    ) a, b b表是数据表

  6. centos6.8升级python3.5.2

    1.查看系统python版本 [root@myserver01 Python-]# python -V Python 2.升级3.5.2 A.下载:wget https://www.python.or ...

  7. OC开发_整理笔记——多线程之GCD

    一.进程和线程   二.各种队列! 1.GCD:Grand Central Dispatch 2.串行队列(Serial)      你可以创建任意个数的串行队列,每个队列依次执行添加的任务,一个队列 ...

  8. tomcat启动后,页面浏览时报错 Unable to compile class for JSP的解决方案【原创】

    问题描述: tomcat启动后,console正常,console中语句为: 信息: Server startup in 7291 ms   但浏览器访问首页面http://localhost:808 ...

  9. Linux 系统内核的调试

    http://www.ibm.com/developerworks/cn/linux/l-kdb/index.html 本文将首先介绍 Linux 内核上的一些内核代码监视和错误跟踪技术,这些调试和跟 ...

  10. OKEX API

    本文介绍OKEX API Rest 开始使用 REST,即Representational State Transfer的缩写,是目前最流行的一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方 ...