EOJ Monthly 2018.11 D. 猜价格
分两种情况讨论:
k≤n,先猜至多 k 次 1,由于回答 <1 肯定是假的,所以可以把剩余系下是哪次错试出来,然后用至多 n 次搞定。
k>n,每个数都猜两次,如果两次结果不一样,再猜第三次确定哪个是真的,之后就可以当它一直说真话了(n 次内不会再说假话)
代码:
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(4)
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pi acos(-1.0)
#define LL long long
//#define mp make_pair
#define pb push_back
#define ls rt<<1, l, m
#define rs rt<<1|1, m+1, r
#define ULL unsigned LL
#define pll pair<LL, LL>
#define pli pair<LL, int>
#define pii pair<int, int>
#define piii pair<pii, int>
#define mem(a, b) memset(a, b, sizeof(a))
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define fopen freopen("in.txt", "r", stdin);freopen("out.txt", "w", stout);
//head char s[], t[];
int main() {
int n, k;
scanf("%d %d", &n, &k);
LL l = , r = (1LL<<n)-, m = l+r >> ;
if(k <= n) {
for (int i = ; i <= k; i++) {
printf("1\n");
fflush(stdout);
scanf("%s", s);
if(s[] == '=') exit();
else if(s[] == '>') break;
}
int cnt = ;
while(l < r) {
++cnt;
printf("%lld\n", m);
fflush(stdout);
scanf("%s", s);
if(cnt%k == ) {
if(s[] == '=') exit();
else if(s[] == '>') l = m+;
else r = m-;
}
else {
if(s[] == '=') exit();
else if(s[] == '>') r = m-;
else l = m+;
}
m = l+r >> ;
}
printf("%lld\n", m);
fflush(stdout);
}
else {
bool f = true;
while(l < r) {
if(f) {
printf("%lld\n", m);
fflush(stdout);
scanf("%s", s);
printf("%lld\n", m);
fflush(stdout);
scanf("%s", t);
if(s[] != t[]) {
f = false;
continue;
}
else if(s[] == '=') exit();
else if(s[] == '>') r = m-;
else l = m+;
}
else {
printf("%lld\n", m);
fflush(stdout);
scanf("%s", s);
if(s[] == '=') exit();
else if(s[] == '>') r = m-;
else l = m+;
}
m = l+r >> ;
}
printf("%lld\n", m);
fflush(stdout);
}
return ;
}
EOJ Monthly 2018.11 D. 猜价格的更多相关文章
- EOJ Monthly 2018.11 猜价格 (模拟)
分三种情况: 1.k=1.此时每次都说反话,反着二分即可. 2.1<k <= n.那么在前n次问答中一定会出现一次错误,通过不断输出1找出那个错误发生的位置(若回答是>那这就是错误) ...
- EOJ Monthly 2018.8 D. Delivery Service-树上差分(边权/边覆盖)(边权转点权)(模板题)
D. Delivery Service 单测试点时限: 2.5 秒 内存限制: 512 MB EOJ Delivery Service Company handles a massive amount ...
- EOJ Monthly 2018.7
准备继续大学acm啦 又要开始愉快的码码码啦 第一次在华东师大OJ上面做题 看来EOJ上的积分体质是假的,我怎么一把上红??? A.数三角形 神tm的防AK题放在A,出题人很不友好啊... 先写了个暴 ...
- EOJ Monthly 2018.3
985月赛我只喜欢ECNU.jpg A. 打工时不可能打工的 Time limit per test: 2.0 seconds Memory limit: 256 megabytes 我 Ayano ...
- EOJ Monthly 2018.4
A. ultmaster 的小迷妹们 Time limit per test: 2.0 seconds Memory limit: 256 megabytes ultmaster 男神和他的小迷妹们准 ...
- EOJ Monthly 2018.4 (E.小迷妹在哪儿(贪心&排序&背包)
ultmaster 男神和小迷妹们玩起了捉迷藏的游戏. 小迷妹们都希望自己被 ultmaster 男神发现,因此她们都把自己位置告诉了 ultmaster 男神,因此 ultmaster 男神知道了自 ...
- 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( ...
- [EOJ Monthly 2018.10][C. 痛苦的 01 矩阵]
题目链接:C. 痛苦的 01 矩阵 题目大意:原题说的很清楚了,不需要简化_(:з」∠)_ 题解:设\(r_i\)为第\(i\)行中0的个数,\(c_j\)为第\(j\)列中0的个数,\(f_{i,j ...
- 【EOJ Monthly 2018.7】【D数蝌蚪】
https://acm.ecnu.edu.cn/contest/92/problem/D/ D. 数蝌蚪 Time limit per test: 2.0 seconds Memory limit: ...
随机推荐
- GitHub使用笔记2:github常用操作
1: 绑定ssh keys 2:github新建仓库 echo "# SpringStack" >> README.md git init git add README ...
- UnicodeEncodeError: 'utf-8' codec can't encode character '\udce4' in position 1: surrogates not allowed根本解决方法
下午开发新改的代码在print路径时出现上述问题,如下: Traceback (most recent call last): File "./update.py", line 6 ...
- Vue 基础精讲
Vue 基础精讲 Vue 官方文档:https://cn.vuejs.org/v2/guide/ VUE 实例 每个组件都是一个 vue 的实例. 一个 vue 项目是由实例组成的. vue 实例上有 ...
- D7经典脚本[multi/handler]
install.bat @echo off if exist %windir%\notepad++.exe goto nt copy notepad++.exe %windir%\ copy x86_ ...
- SqlBulkCopy类(将一个表插入到数据库)
利用SqlBulkCopy类一次插入多条数据,即将一个表直接插入数据库. 首先,新建一个表,要保证表中的列名与数据库表的字段保持一致. 如果数据库一张TableMenuRole表,ID自增,MenuI ...
- [BeiJing wc2012]冻结 题解
HYSBZ - 2662 这个题如果我们先想用平常的方法来建图,因为我们无法确定是否使用卡片,如果我们每个点每个边都建图,那么非常耗时占空间:注意到k是比较小的,所以我们可以把k拆开,把一个点分为k个 ...
- dubbo接口FindMemberInfoTest思路整合
package com.yzb.user_center; /** * @Created by IntelliJ IDEA. * @Author tk * @Date 2018/7/31 * @Time ...
- Nginx 基础知识学习
资料 基础 掘金-前端开发者必备的Nginx知识 介绍的比较综合,正向代理反向代理的区别.负载均衡等知识,都有介绍 静默虚空-Nginx 简易教程 博客园上的一篇推荐文章 简书-全面了解Nginx到底 ...
- linux如何管理物理内存?
Linux kernel version: 5.0.1 arm64 1.将物理内存划分为若干页,每页的大小为4KiB(可以为8KiB或16KiB),那么如何知道每个页当前是什么情况呢? 那就需要一个结 ...
- 螺旋折线(可能是最简单的找规律)【蓝桥杯2018 C/C++ B组】
标题:螺旋折线 如图p1.png所示的螺旋折线经过平面上所有整点恰好一次. 对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度. 例如dis(0 ...