首页 > 其他分享 >Codeforces Round 888 (Div. 3)

Codeforces Round 888 (Div. 3)

时间:2023-07-29 19:13:31浏览次数:33  
标签:数字 888 个数 Codeforces 异或 cost 数组 Div 思路

Codeforces Round 888 (Div. 3)

T1

​ 思路:直接模拟。

T2

​ 思路:首先记录原始数组的奇偶性,然后将奇数、偶数分为不同两组进行排序,然后再根据原数组的奇偶性按顺序填入奇数偶数,最后判断整个数组是否非递减。

T3

思路:我们已知开始在 \(a_1\) ,最后在 \(a_n\) 。那么当 \(a_1 \ne a_n\) 时,只需要满足路径中前 \(k\) 个数为 \(a_1\) ,后 \(k\) 个数为 \(a_n\) 。如果 \(a_1 = a_n\) ,只需要满足共有 \(k\) 个数为 \(a_1\) 即可。

T4

思路:通过前缀和数组我们可以得到 \(n-1\) 个数字。此时分两种情况来讨论:

​ 1.前缀和数组的尾缺失了。

​ 2.前缀和数组缺失了其余位置数。

​ 情况1:尾部缺失,如果得到的 \(n-1\) 个数字可以与排列中的不同数字一一对应,那么加上尾部后能够组成序列。

​ 情况2:中间缺失的话,这 \(n-1\) 个数当中有一个数代表了原数组中的 \(a_i + a_{i+1}\) 。如果 \(n-2\) 个数能与原序列当中不同数字相对应,且剩下的两个没有对应数字相加为余下的那一个数,则能够组成序列。综上,只需要记录一下有多少个数字能与序列匹配然后再判断即可。

T5

思路:典型的记忆化搜索题目,\(dp_i\) 表示求第 \(i\) 种药剂所花费的最小金币数,\(cost_i\) 表示第 \(i\) 种药剂所花费的最小金币数,\(flag_i\) 表示是否已经算出了 \(cost_i\) ,用容器 \(b_i\) 表示合成第 \(i\) 种药剂所需要的药剂。若 \(cost_i\) 已经求出来了,则标记一下,下次直接返回 \(cost_i\) 即可。\(cost_i = \min \{cost_i,\sum_{j=0}^{b_i.size()-1}(cost_{e_{i,j}})\}\) 。

T6

思路:( $a_i $ 异或 \(x\))&( \(a_j\) 异或 \(x\))由于异或相同的 \(x\) ,而且 \(x\) 能自己随意选,那么找最大值就相当于只要找到 \(a_i\) 异或 \(a_j\) 的最小值。

因为如果 \(a_i\) 与 \(a_j\) 某一位不相同,那么这一位不论异或1还是0,最后都会得到1和0,然后相与为0,只有某一位相同才能通过改变x在该位的值使得这一位异或后等于1.

上述就相当于 \(a_i\) 同或 \(a_j\) 后最大,那么也就是 \(a_i\) 异或 \(a_j\) 后最小。

然后有个结论,\(n\) 个数的最小异或对答案就是排序后最小的相邻异或和。

最后 \(x\) 的值就是从 \(0 \sim k-1\) 位遍历。

T7

思路:一条路径的起点与终点。我们很据 \(h_{起点}+初始能量\) 的大小来排序,从小到大依次查询,边也按边权排序,对于每次查询,将所有的边权小于等于 初始能量 \(h_{起点}+\) 的边两边的点在并查集中合并,最后如果起点终点在同个集合中就说明起点能到终点,否则就不能。

标签:数字,888,个数,Codeforces,异或,cost,数组,Div,思路
From: https://www.cnblogs.com/messiljk/p/17590295.html

相关文章

  • Educational Codeforces Round 152 (Rated for Div. 2) 题解
    \(6\)题做出来\(3\)题,这一次的D题没能复刻上一次Round888Div.3最后几分钟AC的奇迹A.MorningSandwich大水题,5min时间4min都在翻译题面直接拿\(b\)和\(c+h\)进行比较分类讨论即可单次操作时间复杂度\(O(1)\)B.Monsters首先有一个特别显然、复杂度特别高的......
  • Educational Codeforces Round 152 (Rated for Div. 2)记录
    A.MorningSandwich#include<cstdio>#include<algorithm>#include<cmath>#include<vector>#include<string.h>#include<set>#include<string>#include<map>#include<iostream>#include<queue......
  • Educational Codeforces Round 76 (Rated for Div. 2)
    EducationalCodeforcesRound76(RatedforDiv.2)A-TwoRivalStudents思路:最多可加x个距离,且最后的距离不能超过n-1#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong//#defineint__int128typedefpair<int,int>PII;typedefpair<string,......
  • Educational Codeforces Round 152 A~D
    A#include<bits/stdc++.h>#defineendl'\n'#defineiosios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr)usingnamespacestd;typedefpair<int,int>PII;constintN=2e5+10;constintMOD=1e9+7;intT;vo......
  • Codeforces Round 888 (Div. 3) 题解
    考场上\(7\)题做出来\(4\)题,最后几分钟才把D题调出来,但还是吃了不少罚时A.EscalatorConversations\(O(n)\)枚举即可,对于每个人计算需要的间隔台阶数是否在\((0,m)\)以内以及相差高度是否是\(k\)的倍数B.ParitySort显然,偶数和奇数是不可能产生交换操作的,而偶数......
  • Educational Codeforces Round 1
    EducationalCodeforcesRound1A.TrickySumintfac[N],p2[N];voidinit(){fac[0]=1;p2[0]=1;for(inti=1;i<=33;i++){fac[i]=fac[i-1]*2;p2[i]=p2[i-1]+fac[i];}}voidsolve(){intn=read();intsum=(1+n)*n/2;co......
  • CodeForces 1268E Happy Cactus
    洛谷传送门AtCoder传送门考虑一些简单的情况,比如树。设\(f_u\)为当前\(u\)能通过边权递增的路径到达的点数(包括它自己)。为了让两个点对在边权递增路径的边权最小的那条边被统计,我们倒序枚举边。当枚举到\((u,v)\)时,我们有\(f_u=f_v=f_u+f_v\)。这是因为\(u\)......
  • Codeforces Round 888 (Div. 3)记录
    A.EscalatorConversations#include<cstdio>#include<algorithm>#include<cmath>#include<vector>#include<string.h>#include<set>#include<string>#include<map>#include<iostream>#include<queue>......
  • Error: listen EADDRINUSE: address already in use 127.0.0.1:8888
    编译打包报错,Error:listenEADDRINUSE:addressalreadyinuse127.0.0.1:8888查询原因是端口被占用,关闭占用的端口号即可。具体怎么关闭端口,可以参考网上其他资料:https://blog.csdn.net/m0_55930697/article/details/118026084......
  • Codeforces Round 618 (Div. 2)
    CodeforcesRound618(Div.2)https://codeforces.com/contest/1300A.Non-zero要求和,积都不为0,则先把全部0操作一次,然后再check和是否为0,是的话再对任意数操作一次即可。#include<bits/stdc++.h>usingnamespacestd;constintN=105;intn,x,s,ans;voidsolve......