交互题
.
可爱美少女
ccpc绵阳铜,icpc西安银,jscpc江苏金。
展开
-
CFdiv2-Tournament Countdown-(思维+交互题套路)
然后你每次可以询问a和b,他俩谁赢的多,如果返回1a多,2b多,0一样多。只要想到这,题目就好处理了,既然是3场比赛,那么就是4个人,所以4个4个的看。刚开始没啥感觉,刚开始我想先把一半用暴力求出来,这样是n/2次查询,但是另一半怎么凑呢,如果n/4也不行,所以就不行了。如果1=3,那么1和3都是输掉的,因为如果他俩都是胜者,那么晋级后肯定要有一个比较大。所以再比较晋级的2和4就可以了。如果1>3,那么1肯定晋级,再查询1和4,比较一下就可以了。如果1...原创 2022-08-07 13:04:54 · 396 阅读 · 0 评论 -
Too Many Impostors (easy version)-(思维)
DIV2-D1题意:就是给你一个数n,n是3的倍数,然后其中有k个人是坏蛋,n-k个是好人。同时n/3<k<2n/3。然后你每次可以查询a,b,c,如果坏蛋多于好人返回0,如果好人多于坏蛋返回1。问你一共有多少坏蛋,分别是谁。一共最多2n次查询。思考:看了看题意,可以很明显想到,如果我已经直到一个好人和一个坏蛋,那么所有的人我都能分辨出来。然后就是看数据范围,和查询次数,查询2*n次,我光查询所有人的时候都要n次了。所以我要用n次把一个好人和一个坏蛋找出来,n次,能怎么找?,又不给你数组原创 2022-01-08 12:43:39 · 297 阅读 · 0 评论 -
Guess the Permutation-(思维)
DIV2-D题意:就是给你一个数组的长度n,数组就是从1到n,然后最多40次询问,每次询问可以求出[l,r]这段区间的逆序对个数,让你询问处i,j,k的位置。其中i~j-1这段区间反转,j到k这段区间反转。思考:其实i位置好找就是从1往右找出第一个没有逆序对的点,就是i。这里有个重要的思维是4 3 2 1这个数组,1到4这端是6个逆序对,2到4是3个,说明,从最后到第一个之间有3个值,因为差了3个逆序对,所以查询一下(i,n)和(i,n+1),可以把j的位置求出来,同理求出k的位置。代码:int原创 2021-11-16 17:02:51 · 455 阅读 · 0 评论 -
Bitwise Queries (Easy Version)
DIV2-E1题意:这是个交互提,有一个n个元素的数组b,每次你可以查询两个数的and xor or,最多查询n+2次,让你把这个数组求出来。思考:首先看到每次可以查询三个操作,这三个操作我该怎么把一个数求出来,然后再求一下每个数和第一个数的xor,那么每个数都出来了。问题是第一个数该怎么求,有一个性质A+B = AxorB+2*AandB,知道这个就很明显了,那么A+B B+C A+C都求出来那么A就求出来了,三元一次方程组。这里找不到两元一次的方程组。但是求出来就要6次,等下的n-3个还要求一次原创 2021-10-28 16:18:58 · 118 阅读 · 0 评论 -
Bear and Prime 100
DIV1-A题意:就是给你一个1到100之间的数A,让你猜猜这个数是质数还是合数,每次你可以询问一个数x是否为A的因子,最多20次询问。思考:明显就是看看是否有多于2个因子即可,一个合数至少有两个质因子,这两个因子相乘等于这个合数。然后20个以内质数都超过50了,如果还要大,那么51*2>100就不属于A的范围了。所以就查询19次,看看有多少个因子即可,值得注意的地方是如果这个数是质数的平方,就能枚举到一次,所以这样的也要加进数组,或者特判。代码:int T,n,m;int va[N];原创 2021-10-21 23:05:12 · 109 阅读 · 0 评论 -
Lost Numbers
DIV2-B题意:给你了6个数,求出这个数组的原排列,然后可以查询不超过四次,每次查询两个数的乘积是多少。思考:其实直接看前四组即可,然后全排列数组va然后看看什么时候符合条件就break。最后输出即可。代码:int T,n,m;int va[N];int vb[N];signed main(){ va[1] = 4,va[2] = 8,va[3] = 15,va[4] = 16,va[5] = 23,va[6] = 42; for(int i=1;i<=4;i++) {原创 2021-10-21 22:38:25 · 100 阅读 · 0 评论