思维
杨小猪猪
这个作者很懒,什么都没留下…
展开
-
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 · 577 阅读 · 0 评论 -
CF1612D. X-Magic Pair
题目链接题意:给a,b,x问用以下操作,能不能得到x:解法:思考后得,令a,b中大的数为b,当b>a时,不断b-=a,可得到很多个b,而判断这些b会不会等于x很简单,就是b%a=x%a时会出现一个b等于x否则令b=b%a,swap(a,b),再进行下一次判断#include<bits/stdc++.h>#define fo(i,a,b) for(int i=a;i<=b;i++)using namespace std;typedef long long l原创 2021-11-30 20:27:08 · 119 阅读 · 0 评论 -
ABC228D - Linear Probing
题意:给一个长度为N=2e20的序列,初始每个序列的值为-1,这里记为数组a问Q个问题,每次输入t和x当t=1时,令h=x,当a[h%N]=-1时,令a[h%N]=x,否则h++,直到赋值了为止当t=2时,输出a[x%N]。解法:用并查集将已经赋值过的x,与x+1合并即可,就是令f[x]=x+1#include<bits/stdc++.h>#define fo(i,a,b) for(int i=a;i<=b;i++)using namespace std;typ原创 2021-11-20 21:57:39 · 1016 阅读 · 0 评论 -
CR754C. Dominant Character
题目链接题意:给一个只有abc的string,要求:1.长度大于等于22.a出现的次数严格大于b,严格大于c问满足以上要求的最短子串解法:思考后发现最短子串的可能很有限,只有以下几种:aa,aba,aca,abca,acba,abbaccb,accabba,4个a就不行了,因为4个a要夹着3个b和3个c,必定会出现abca或acba,更多a同理所以直接if else即可#include<bits/stdc++.h>#define fo(i,a,b) for原创 2021-11-13 19:35:43 · 449 阅读 · 0 评论 -
CF1586C. Omkar and Determination
题目链接题意:给一个由0(.)和1(X)组成的图,0代表该位置空,1代表该位置堵塞,由空的位置出发,如果能通过走上和左走出图外,则该位置能离开(E),如果由能离开(E)和不能离开(N)组成的图可以反推原图,则原图是确定的(YES)输入x1,x2,问x1列到x2列的图是不是确定的解法:当x1=x2时,全部空的点能往左走出图,所以是YES其他情况:当出现0110时,会导致右下角的0无法确定,所以先找到所有的0110,记该列(左边的列)为不可确定,最后看给的范围里有没有不可确定的列即可..原创 2021-10-18 15:49:18 · 412 阅读 · 0 评论 -
CF1586D. Omkar and the Meaning of Life
题目链接题意:交互题,用最多2n次提问找到n长度的序列a,提问时要给出一个数组b,他会返回数组c (ci=ai+bi)里重复数值的第一个位置解法:循环n-1次,最后一位为(2~n-1),其他输出1,再循环n-1次,最后一位为1,其他输出(2~n-1),这样就能得到所有位置和最后一位的差值(有正有负),将全部差值不断加1,直到全为正数即可。#include<bits/stdc++.h>using namespace std;int a[105];int main() { in原创 2021-10-18 15:34:05 · 275 阅读 · 1 评论 -
思维、模拟 CR744C. Ticks
题目链接题意:给一个图,上面有多个√,每个√占2d+1个格子,问能否用d>=k的√复原原图。注意:√必须要对称上手出现的问题:题目有点复杂,没看明白解法:将图读入a数组,用b数组在d>=k的条件下复原a数组,最后比较两个数组#include<bits/stdc++.h>using namespace std;int t, n, a[30][30],b[30][30],m,k;void pan(int i, int j) { int d = 1,.原创 2021-09-29 16:38:44 · 138 阅读 · 0 评论