AtCoder Regular Contest 070F:Honest Or Unkind
题目传送门:https://arc070.contest.atcoder.jp/tasks/arc070_d
题目翻译
有\(n\)个人,其中有\(a\)个人是诚实的,另外\(b\)个是不诚实的。你可以向交互库提问:如果问\(x\)号\(y\)号是否诚实\(x\)将怎么回答?如果\(x\)是诚实的,那么\(x\)的回答就是正确的,否则有\(50\)%的几率是他瞎扯淡来唬你的。你的提问次数不能超过\(2n\)次,请确定哪些人是诚实的,哪些不是。如果为无法确定,那么输出Impossible。\(a,b\leqslant 2000\)
题解
如果\(a\leqslant b\)那么就确认不了,我只需要从\(b\)个骗子里叫\(a\)个说真话你就\(GG\)了。
当\(a>b\)我们就可以确认,只需要找出一个诚实的人,然后问他这\(n\)个人分别是不是诚实的就行了。假设存在一条链\(x_1->x_2->x_3->...->x_k\),表示\(x_{i-1}\)说\(x_i\)是诚实的。这\(k\)个人里面只要任意一个人是诚实的,那么\(x_k\)就必然是诚实的。所以我们可以维护一个栈,如果栈顶说当前枚举的人不是真的,那么两个人里面必然有一个假的,那我两个都不要。因为\(b>a\)所以最后栈里必然会留下一些人并且这些人中肯定有诚实的人,栈顶必然是诚实的,我们再问栈顶的人\(n\)个问题就解决了。
时间复杂度:\(O(n)\)
空间复杂度:\(O(n)\)
代码如下:
#include <cstdio>
using namespace std;
const int maxn=4005;
int n,a,b,top;
int sta[maxn];
bool ans[maxn];
int read() {
int x=0,f=1;char ch=getchar();
for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;
for(;ch>='0'&&ch<='9';ch=getchar())x=x*10+ch-'0';
return x*f;
}
int main() {
a=read(),b=read(),n=a+b;
if(a<=b) {puts("Impossible");return 0;}
for(int i=1;i<=n;i++)
if(!top)sta[++top]=i;
else {
printf("? %d %d\n",sta[top]-1,i-1);
fflush(stdout);char s[3];
scanf("%s",s+1);
if(s[1]=='N')top--;
else sta[++top]=i;
}
int honest=sta[top];
for(int i=1;i<=n;i++) {
printf("? %d %d\n",honest-1,i-1);
fflush(stdout);char s[3];
scanf("%s",s+1);
ans[i]=(s[1]=='Y');
}printf("! ");
for(int i=1;i<=n;i++)
printf("%d",ans[i]);
return 0;
}
AtCoder Regular Contest 070F:Honest Or Unkind的更多相关文章
- AtCoder Regular Contest 068E:Snuke Line
题目传送门:https://arc068.contest.atcoder.jp/tasks/arc068_c 题目翻译 直线上有\(0-m\)这\(m+1\)个点,一共有\(m\)辆火车.第\(i\) ...
- AtCoder Regular Contest 061
AtCoder Regular Contest 061 C.Many Formulas 题意 给长度不超过\(10\)且由\(0\)到\(9\)数字组成的串S. 可以在两数字间放\(+\)号. 求所有 ...
- AtCoder Regular Contest 094 (ARC094) CDE题解
原文链接http://www.cnblogs.com/zhouzhendong/p/8735114.html $AtCoder\ Regular\ Contest\ 094(ARC094)\ CDE$ ...
- AtCoder Regular Contest 092
AtCoder Regular Contest 092 C - 2D Plane 2N Points 题意: 二维平面上给了\(2N\)个点,其中\(N\)个是\(A\)类点,\(N\)个是\(B\) ...
- AtCoder Regular Contest 093
AtCoder Regular Contest 093 C - Traveling Plan 题意: 给定n个点,求出删去i号点时,按顺序从起点到一号点走到n号点最后回到起点所走的路程是多少. \(n ...
- AtCoder Regular Contest 094
AtCoder Regular Contest 094 C - Same Integers 题意: 给定\(a,b,c\)三个数,可以进行两个操作:1.把一个数+2:2.把任意两个数+1.求最少需要几 ...
- AtCoder Regular Contest 095
AtCoder Regular Contest 095 C - Many Medians 题意: 给出n个数,求出去掉第i个数之后所有数的中位数,保证n是偶数. \(n\le 200000\) 分析: ...
- AtCoder Regular Contest 102
AtCoder Regular Contest 102 C - Triangular Relationship 题意: 给出n,k求有多少个不大于n的三元组,使其中两两数字的和都是k的倍数,数字可以重 ...
- AtCoder Regular Contest 096
AtCoder Regular Contest 096 C - Many Medians 题意: 有A,B两种匹萨和三种购买方案,买一个A,买一个B,买半个A和半个B,花费分别为a,b,c. 求买X个 ...
随机推荐
- Linux XMind
XMind这个软件好像不错的样子,至少在Windows/Linux/Mac下都可以工作,作为FreeMind的替代品应该是没什么问题(还有一个vym貌似也可以,可能没有XMind好,毕竟XMind有公 ...
- 摩托罗拉SE955 One Discrete Length,Two Discrete Lengths,Length Within Range 相关解释
motorola scanner datasheet相关解释(下面通过Simple Serial Interface(SSI)进行设置,非扫描官方datasheet的设置条码): One Discre ...
- python学习(四)字符串学习
#!/usr/bin/python # 这一节学习的是python中的字符串操作 # 字符串是在Python中作为序列存在的, 其他的序列有列表和元组 # 1. 序列的操作 S = 'Spam' # ...
- Appium python Uiautomator2 多进程问题
appium更新uiautomator后可以获取tost了,大家都尝试,课程中也讲解了,但是这些跑的时候都在单机上,当我们多机并发的时候会出现一个端口问题,因为我们appium最后会调用uiautom ...
- Unity3D 与 objective-c 之间数据交互。iOS SDK接口封装Unity3D接口 .-- 转载
Unity 3D 简单工程的创建.与Xcode 导出到iOS 平台请看这 Unity3D 学习 创建简单的按钮.相应事件 Unity C# 代码 using UnityEngine; using Sy ...
- Entity Framework 4.1:多对多的关系
这篇文章讨论多对多的关系. 让我们从最简单的例子开始.我们让 EF4.1 来推断表的映射.我在订单和雇员之间建模多对多的关系. )] publicstring CustomerName { get; ...
- iOS 流布局 UICollectionView使用(使用FlowLayout进行更灵活布局)
在UICollectionView的布局中,如果每个item的大小都一样那么是十分简单的事情,但是,如果我们想要的每个item大小不一样呢,这个时候,就要对UICollectionViewFlowLa ...
- CUDA: 流
1. 页锁定主机内存 c库函数malloc()分配标准的,可分页(Pagable)的内存,cudaHostAlloc()分配页锁定的主机内存.页锁定内存也称为固定内存(Pinned Memory)或者 ...
- 深刻理解render 和 redirect_to
深刻理解render 和 redirect_to http://www.blogjava.net/fl1429/archive/2009/03/12/259403.html 由于最近老是在表单提交后出 ...
- windows server 2008 r2 下发布网站excel有时候无法下载文档
最近将公司网站服务器更新了系统,从win2003 到 win2008 r2 (64bit),一切正常,但是使用网站的过程中发现了一个比较奇怪的问题,就是,有时候网站的excel文档无法下载,但是我什么 ...