蓝眼睛
C. 蓝眼睛岛
描述
有个偏僻的岛屿,有一个1000人组成的部落,他们眼睛的颜色各不相同.岛上的人拥有天生的智慧与逻辑性.然而,随之而来的还有神秘的诅咒,诅咒使他们不能通过任何途径看到自己眼睛的颜色,而依附诅咒诞生的严苛宗教也不允许他们互相讨论眼睛颜色的话题.于是,所有的岛民都处在知晓所有其他人眼睛的颜色却不自知的状态里.
部落的宗教强制要求,如果岛民知道了自己眼睛颜色,那么他必须第二天中午在村子广场自杀,所有其他人都会立刻知道他的死讯.
在宗教的多年洗脑下,所有的岛民都相当虔诚,并且他们也知道所有其他岛民也拥有智慧,逻辑性和虔诚. “相当有逻辑”是指,通过已有信息能推出的所有合理结论,岛民都能立刻知晓.
在这 n 个岛民中,其实是有 a 人蓝眼睛和 n-a 人棕眼睛,全体岛民从开始就不知道这个统计值(当然他们每人都知道其他人眼睛的颜色).
一天,一个蓝眼睛的外来者来到了这个岛上,并且赢得了所有人的喜欢和信任. 一天晚上,他把所有岛民聚集起来,要感谢岛民热情的款待.可惜他并不知道这个岛的习俗,无意中犯错提及到了眼睛的颜色,说了一句:"啊,能看到这个世界上还有其他蓝眼睛的人是多么开心啊."
请问在这之后,是否会有岛上的居民因此自杀?
Input
两个整数 n(1 ≤ n ≤ 65536),a(1≤a≤n) 含义如上
Output
如果没有人会自杀,
输出-1;
如果有
从第一天开始,按顺序输出每天自杀的居民数量(如果当天没有居民自杀,则不输出当天的信息)
输出格式:
天数 人数
天数 人数
如样例1,表示第一天有一个人自杀
examples
Input
1 1
Output
1 1
Input
2 1
Output
1 1
Input
2 2
Output
2 2
Hint
- 样例1中,岛上只有一个人,且是蓝眼睛.外来者告诉岛民岛上有蓝眼睛,该岛民立刻就意识到说的是自己,在之后的第一天就自杀了.
- 样例2中,岛上有一个蓝眼睛的人一个棕眼睛人.蓝眼睛者能看到另一个人是棕眼睛,结合外来者的话,能推出自己是蓝眼睛,因此在之后的第一天就自杀了.
- 样例3中,岛上有两个蓝眼睛的人.第一天,谁都不能确定自己眼睛颜色,因此无人自杀,第二天,两人通过对方的行为确定了自己是蓝色眼睛,因此都自杀了.
思路:
今天做了这道hin有意思的题~
说一下思路吧:
蓝2 棕0 这种情况,每个人都能看到一个蓝眼睛,若自己是棕色则第1天就会有人自杀,1天没人自杀,说明自己是蓝的,第2天2人自杀
棕色眼睛对蓝眼睛没干扰,比如蓝2 棕1, 蓝眼睛的看到1蓝1棕,棕眼睛能看到2蓝,棕眼睛不做参考,蓝眼睛做,蓝眼睛不能确定自己颜色,若自己是棕色,另一个蓝眼睛第1天会自杀,但第1天没人自杀,所以第2天2人都自杀
若3蓝n棕(棕色无影响)蓝眼睛的看到的有蓝有棕,若自己是棕眼睛,此时2个蓝眼睛,那么第2天一定有人自杀,(原因同上),但是第2天没人自杀,所以第3天3人自杀
……
以此类推
输出a a
即可
代码如下:
#include<iOStream>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<cmath>
#include<set>
#include<string>
#include<cstring>
#define ll long long
using namespace std;
int main(){
int n,a;
scanf("%d%d",&n,&a);
printf("%d %d\n",a,a);
}