贪心
杨小猪猪
这个作者很懒,什么都没留下…
展开
-
CF 1617D1. Too Many Impostors (easy version)
题目链接题意:有n个人,其中有n/3~2*n/3个狼人,可以询问2n次,每次三个人,返回狼人多还是好人多。解法:按1,2,3和2,3,4和3,4,5........这样询问下去,当出现上一次询问结果和这一次结果不一样时,说明中间两个人一个好人,一个狼人(可以举例证明),用这两个人可以得出其他所有人的身份,最后再取两个身份不同的询问这两个人即可#include<bits/stdc++.h>#define fo(i,a,b) for(int i=a;i<=b;i++)us原创 2021-12-17 17:12:41 · 524 阅读 · 0 评论 -
CF 1617C. Paprika and Permutation
题目链接题意:给一个数列,问通过操作:a[i]=a[i]%x(x自己选择)后,能不能成为1到n的排序,如果能,输出最小操作次数,否则输出-1.解法:对数组a排序后,先把a中出现的1~n的数删掉最多一个,并标记,因为这个数对可以不经过操作而作为答案的一份子。然后遍历排序后的数组,k为当前的位置应该能操作后得到的数,当a[i]不能变成k,直接输出-1.对a[i]取模可以得到的数范围0~(a[i]-1)/2#include<bits/stdc++.h>#define fo(i,原创 2021-12-17 17:01:13 · 421 阅读 · 0 评论 -
栈、贪心 CR744D. Productive Meeting
题目链接题意:有n个人,每个人能与其他人交谈a[i]次,求最大交谈次数的方案解法:先对a数组进行sort,然后按从大到小的顺序存入栈b和c,哪个栈的交谈总数小,就存哪个栈,然后对交谈总数大的栈进行判断,如果它的交谈总数比另一个至少大2,且至少有两个人,则这个栈内部先交谈,最后两个栈互相交谈即可#include<bits/stdc++.h>#define fo(i,a,b) for(int i=a;i<=b;i++)using namespace std;typ...原创 2021-09-29 16:49:03 · 119 阅读 · 0 评论