分三种情况:

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. C语言位操作--奇偶校验算法

    信息是以比特流的方式传输的,类似01000001.在传输过程中,有可能会发生错误,比如,我们存储了01000001,但是取出来却是01000000,即低位由0变成了1.为了检测到这种错误,我们可以通过 ...

  2. VUE中父组件向子组件传递数据 props使用

    VUE中,子组件是不能直接访问父组件的数据(一般来说,当然如果你要破坏原则也是可以),如下< <body> <div id="fathercomponent" ...

  3. python2和python3的不同

    1.性能 Py3.0运行 pystone benchmark的速度比Py2.5慢30%.Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可 以取得很好的优化结果. Py3.1性能比Py2 ...

  4. JavaScript简介与使用方法

    1.JavaScript简介 1.1.JavaScript简史 最初:网络通信很慢,网页上的数据要传送到数据库验证,然后再返回错误结果,找客观过程要等很久,于是,网景公司开发出一门新语言,当时Java ...

  5. xp上使用vsphere client报错问题

    出现该问题的原因是新版本的esxi和vcenter中增强了加密强度,而Windows XP和Windows Server 2003未能达到所需加密强度,client发起的链接被esxi和vcenter ...

  6. iOS-图像之CoreImage框架

    1.coreImage的介绍   coreImage是IOS5中新加入的一个Objective-C的框架,提供了强大高效的图像处理功能,用来对基于像素的图像进行操作与分析.iOS提供了很多强大的滤镜( ...

  7. 【Git 使用笔记】第一部分:安装git 和 使用git

    第一部分:安装git(本人使用ubuntu系统) sudo apt-get install git 第二部分:基本配置 git config core.filemode false//忽略文件属性的修 ...

  8. ZB api

    本文介绍ZB api Rest API (已开启) ZB为用户提供了一个简单的而又强大的API,旨在帮助用户快速高效的将ZB交易功能整合到自己应用当中. 如果在使用过程中有任何问题,请加群764113 ...

  9. python全栈开发目录

    python全栈开发目录 Linux系列 python基础 前端~HTML~CSS~JavaScript~JQuery~Vue web框架们~Django~Flask~Tornado 数据库们~MyS ...

  10. ICMP报文

    类型:表示ICMP消息类型 代码:表示同一消息的不同信息 其他是时间戳或者标识符及序列号 类型 编码 描述   0 0 Echo Reply 3 0 网络不可达 3 1 主机不可达 3 2 协议不可达 ...