[atARC070F]HonestOrUnkind
考虑当$a\le b$时,构造两种方案,满足诚实的人不交,接下来要求对于任意询问,这两种方案的答案都有可能相同
考虑询问$(i,j)$,若$i$在两种方案中有一种不诚实,那么总可以让答案相同,又因为诚实的人不交,因此一定可行
当$a>b$,我们只需要找到一个诚实的人就可以做了,考虑如何找到这个诚实的人:
对于询问$(i,j)$,若结果为不诚实,至少存在一个人不诚实,考虑同时删去$i$和$j$,显然最终不可能只剩下不诚实的人
维护一个栈(初始为空),从1到$n$遍历所有人,并询问$(栈顶,i)$,考虑结果:
1.结果为不诚实,同时删去(弹出)栈顶和$i$即可
2.结果为诚实,将$i$加入栈中,并继续此过程
当我们询问完之后,可以发现栈中若栈顶不诚实,由于栈顶的下一个元素认为栈顶诚实,因此其也不诚实,以此类推,整个栈中所有人都不诚实,即矛盾
通过栈顶再$n$次询问即可确定剩余的人


1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 4005
4 stack<int>st;
5 int a,b,ans[N];
6 char s[11];
7 int query(int x,int y){
8 printf("? %d %d\n",x-1,y-1);
9 fflush(stdout);
10 scanf("%s",s);
11 return s[0]=='Y';
12 }
13 int main(){
14 scanf("%d%d",&a,&b);
15 if (a<=b){
16 printf("Impossible");
17 return 0;
18 }
19 for(int i=1;i<=a+b;i++)
20 if (st.empty())st.push(i);
21 else{
22 if (query(st.top(),i))st.push(i);
23 else st.pop();
24 }
25 for(int i=1;i<=a+b;i++)ans[i]=query(st.top(),i);
26 printf("! ");
27 for(int i=1;i<=a+b;i++)printf("%d",ans[i]);
28 }
[atARC070F]HonestOrUnkind的更多相关文章
- AT2348 HonestOrUnkind
传送门 显然\(a>b\)的情况下才有解 考虑先找出一个诚实的人,然后剩下的都可以在\(n\)次以内问出来了 发现如果一个人说另一个人是说谎的那么这两个人必有一个是说谎的,由于诚实的人严格多于不 ...
- AT2348 [ARC070D] HonestOrUnkind
不妨先从无解的情况下手,不难发现当 \(A \le B\) 时是一定无解的. 因为不诚实的 \(B\) 个人可以装作是诚实的,全部说自己这一方是诚实的对方是不诚实的我们就无法判断了. 下面我们就可以在 ...
- AtCoder瞎做第二弹
ARC 067 F - Yakiniku Restaurants 题意 \(n\) 家饭店,\(m\) 张餐票,第 \(i\) 家和第 \(i+1\) 家饭店之间的距离是 \(A_i\) ,在第 \( ...
- AtCoder刷题记录
构造题都是神仙题 /kk ARC066C Addition and Subtraction Hard 首先要发现两个性质: 加号右边不会有括号:显然,有括号也可以被删去,答案不变. \(op_i\)和 ...
- 【AtCoder】ARC070
ARC070 C - Go Home 题目大意:一只袋鼠第i秒可以向左或向右跳i步或者不跳,问从0跳到x的最小时间 就是1,2,3,4...k总和超过x的最小的k,因为如果超过了x的那部分需要减掉的那 ...
随机推荐
- 点击按钮改变div背景色,再次点击恢复 -- 原生JS
如果对您有帮助,记得点个赞哦!
- [spring-rabbit]自动配置原理
1 一个简单的示例 在Spring Boot项目中使用spring-rabbit时,需要经过以下几个步骤: 引入依赖. 配置基本连接信息. 创建消息发布者,并发送消息. 创建消息消费者,监听消息并处理 ...
- L1-023 输出GPLT (20 分) java题解 GPLT天梯赛防坑技巧
上题目先 给定一个长度不超过10000的.仅由英文字母构成的字符串.请将字符重新调整顺序,按GPLTGPLT....这样的顺序输出,并忽略其它字符.当然,四种字符(不区分大小写)的个数不一定是一样多的 ...
- Python&Selenium 数据驱动测试【unittest+ddt+xml】
一.摘要 本博文将介绍Python和Selenium做自动化测试时,基于unittest框架,借助ddt模块,使用xml文件作为测试输入. 二.xml文件 保存路径:D:\\Programs\\Pyt ...
- Mydoom样本分析报告
文件检测 信息 值 文件名 1.virus 文件类型 WIN 32 EXE 文件大小 41664 bytes MD5 3d466b0f8ba9f3fe03e137a34d79f682 SHA-256 ...
- Android QMUI实战:实现APP换肤功能,并自动适配手机深色模式
Android换肤功能已不是什么新鲜事了,市面上有很多第三方的换肤库和实现方案. 之所以选择腾讯的QMUI库来演示APP的换肤功能,主要原因: 1.换肤功能的实现过程较简单.容易理解: 2.能轻松适配 ...
- Nginx安装及核心配置解析
安装 使用yum进行安装 yum install -y nginx 查看nginx的安装位置 whereis nginx 启动测试 nginx 核心配置文件结构 读取Nginx自带的Nginx配置文件 ...
- IDEA 激活码,最新激活码,亲测有效,持续更新(2021.10.26)
这里整理了一份 IntelliJ IDEA的最新激活码,持续更新 获取链接:[腾讯文档]分享白嫖JB Account和激活码(并附带破解工具) https://docs.qq.com/doc/DVnB ...
- OO第三单元
OO第三单元 JML语言理论基础,应用工具链 JML语言基础 JML简介 定义: JML 是一种形式化的. 面向 JAVA 的行为接口规格语言 作用: 开展规格化设计.这样交给代码实现人员的将不是可能 ...
- configure: error: invalid variable name: `'
今天在交叉编译一个编解码库的时候,出现一个莫名其妙的报错,一直找不到原因,后来无意中删除了一个空格,才发现就是这个空格造成的错误. ./configure --host=arm-linux LDFLA ...