牛客杭电多校补题
文章平均质量分 65
issue是fw
19 years old, struggling in life, chasing daydreams.
展开
-
2021牛客暑期多校训练营10 E.Eyjafjalla(倍增+线段树合并)
LINK考虑在点xxx处爆发[l,r][l,r][l,r]的瘟疫且x∈[l,r]x\in[l,r]x∈[l,r]考虑xxx往上延伸,节点温度不断上升,所以往上的节点不需要考虑下界lll的限制显然可以倍增到一个深度最浅的节点vvv满足tv<=rt_v<=rtv<=r,再往上的节点都不符合要求又因为vvv子树内的节点温度都小于tvt_vtv,显然不需要考虑上界rrr的限制问题转化为,求出vvv的子树内有多少节点的温度大于等于lll这个东西可以线段树合并保存每个节点的子树内温度为原创 2021-08-26 18:40:35 · 276 阅读 · 0 评论 -
2021牛客暑期多校训练营10 F.Train Wreck(栈,并查集,优先队列,贪心)
LINK题意有nnn个元素,第iii个元素的颜色为coloricolor_icolori给定一个长度为2∗n2*n2∗n的进出栈括号序列(每个元素恰好进栈一次出栈一次)要求你构造长度为nnn的序列ansansans,其中ansians_iansi表示第iii次入栈的元素颜色满足每次刚加入ansians_iansi后栈中形成的颜色序列抽出来(显然有nnn个颜色序列)这nnn个颜色序列是各不相同的对这个进出栈的括号序列进行模拟记录最后一次退栈时退出的元素是x1x_1x1那么当下次如原创 2021-08-26 17:18:25 · 241 阅读 · 0 评论 -
2021牛客暑期多校训练营10 War of Inazuma (Easy Version)(二分图)
LINK有2n2^n2n个点,编号为[0,2n−1][0,2^n-1][0,2n−1]每个点要么标记为000,要么标记为111我们说uuu和vvv相邻,当且仅当u,vu,vu,v的二进制恰有一位不同你需要给每个点构造一个标记,使得对任何一个点uuu,与uuu相邻且标记相同的点数不超过n\sqrt nn其中n<=22n<=22n<=22注意到相邻的两个点二进制中111的个数刚好相差111我们让二进制奇数个111的点都标记为000二进制偶数个111的点都标记为111那么这原创 2021-08-26 15:25:46 · 278 阅读 · 0 评论 -
2021牛客暑期多校训练营8 D.OR
题意给定bi=ai∣ai−1b_i=a_i|a_{i-1}bi=ai∣ai−1,ci=ai+ai−1c_i=a_i+a_{i-1}ci=ai+ai−1求满足条件的数组aaa有多少个ci=(ai∣ai−1)+(ai&ai−1)c_i=(a_i|a_{i-1})+(a_i\&a_{i-1})ci=(ai∣ai−1)+(ai&ai−1)那么其实可以得到di=ci−bi=ai&ai−1d_i=c_i-b_i=a_i\&a_{i-1}di=ci原创 2021-08-11 12:48:37 · 252 阅读 · 0 评论 -
2021“MINIEYE杯”中国大学生算法设计超级联赛(1) 6958. KD-Graph
LINKⅠ.同组点,必存在路径的最大值<=D等价于只保留<=D的边两点仍然连通,就可以作为同组点Ⅱ.不同组点,任何路径的最大值>D等价于只保留<=D的边若两点连通,就不能作为不同组点所以只需要把<=D的边加进去,若两点连通则必属于同一组,最后看一下有多少组即可显然可以二分D,随着D的增大分组组数减小#include <bits/stdc++.h>using namespace std;const int maxn = 5e5+10;int n,m原创 2021-08-10 12:27:43 · 256 阅读 · 0 评论 -
2021牛客暑期多校训练营4 G.Product(容斥,模型转化)
LINK一个序列aaa的权值定义为D!∏i=1n(ai+k)!\frac{D!}{\prod_{i=1}^n(a_i+k)!}∏i=1n(ai+k)!D!合法的序列aaa满足∑i=1nai=D\sum\limits_{i=1}^n a_i=Di=1∑nai=D且ai>=0a_i>=0ai>=0求所有合法序列的权值和模998244353998244353998244353其中D<=108,n<=50,k<=50D<=10^8,n<=50,k&原创 2021-08-09 15:07:05 · 243 阅读 · 0 评论 -
2021牛客暑期多校训练营7 F.xay loves trees(主席树+树上尺取)
LINK选择的点需要满足以下要求Ⅰ.在第一棵树上是深度递减的一条连续链Ⅱ.在第二棵树上不能互为子树中的点考虑在第一棵树上dfsdfsdfs,那么可以看作一个尺取一条链的过程,这样保证了在第一棵树上是合法的若加入当前点uuu在第二棵树不满足条件,那么尺取的链的顶点往下挪…如何判断判断是否在第二棵树满足条件,也就是考虑第二棵树上,判断当前尺取链的点是否是uuu的子树或祖先于是我们可以处理出第二棵树的dfsdfsdfs序,这样就可以用线段树给某个点子树内的节点赋值加入点vvv的时候就把vvv子原创 2021-08-09 11:12:08 · 328 阅读 · 0 评论 -
2021牛客暑期多校训练营5 C. Cheating and Stealing(模拟,思维)
LINK当胜负点定为kkk时候,最多存在∣S∣k\frac{|S|}{k}k∣S∣局游戏如果我们能O(1)O(1)O(1)求出每一局,总体复杂度就是O(∣S∣log(∣S∣))O(|S|log(|S|))O(∣S∣log(∣S∣))的考虑本局游戏在点iii开始,胜负点为kkk考虑记录一个AAA赢zzz局游戏的局面在posa[z]posa[z]posa[z]位置,BBB在posb[z]posb[z]posb[z]位置容易知道AAA在ap=posa[preai−1+k]ap=posa[prea_{i原创 2021-08-08 15:13:36 · 274 阅读 · 0 评论 -
2021牛客暑期多校训练营5 G.Greater Integer, Better LCM(搜索,子集合并)
LINKlcm(a+x,b+y)lcm(a+x,b+y)lcm(a+x,b+y)的意义就是对于每个质因子幂取a+xa+xa+x和b+yb+yb+y中更大的那个而且a+xa+xa+x和b+yb+yb+y在每个质因子上,至少一个是最高次幂,这才能满足lcm(a+x,b+y)=clcm(a+x,b+y)=clcm(a+x,b+y)=c考虑枚举a+xa+xa+x和b+yb+yb+y在每个质因子取到的幂次,复杂度是不超过O(2∑qi)O(2^{\sum\limits q_i})O(2∑qi)这些状态我们可原创 2021-08-08 11:39:11 · 298 阅读 · 0 评论 -
2021牛客暑期多校训练营5 D.Double Strings(容斥dp)
LINK考虑合法的序列,必定有一个分割点kkk使得ak<bka_k<b_kak<bk且在此之前相当于可以有一段串AAA和串BBB的公共子序列接在前面在此之后怎么选都无所谓,只需要满足选出来的长度相等即可我们定义f[i][j]f[i][j]f[i][j]表示A[1,i]A[1,i]A[1,i]和B[1,j]B[1,j]B[1,j]有多少种公共子序列当ai!=bja_i!=b_jai!=bj时,考虑容斥一下f[i][j]=f[i][j−1]+f[i−1][j]−f[i−1]原创 2021-08-08 09:12:04 · 280 阅读 · 0 评论 -
2021牛客暑期多校训练营4 E.Tree Xor(区间异或+扫描线)
LINK先dfsdfsdfs一遍求出rrr数组使得w[i]=z[i]⊕w[1]w[i]=z[i]\oplus w[1]w[i]=z[i]⊕w[1]于是现在就是找到xxx解的数量,对于i∈[1,n]i\in[1,n]i∈[1,n]都有x⊕zi∈[li,ri]x\oplus z_i\in[l_i,r_i]x⊕zi∈[li,ri]那么对于每个点iii都有一个合法xxx的集合,对于每个点求一遍然后求交即可可以把[li,ri][l_i,r_i][li,ri]拆为若干个区间,这些区间的前缀固定,左端点原创 2021-08-07 18:58:04 · 285 阅读 · 0 评论 -
2021牛客暑期多校训练营4 B.Sample Game(期望平方递推)
LINK定义f[i]f[i]f[i]表示当前最大的数字为iii,游戏结束还需要的游戏次数f[i]=1+∑j=i+1nf[j]∗pj+pi∗f[i]f[i]=1+\sum\limits_{j=i+1}^n f[j]*p_j+p_i*f[i]f[i]=1+j=i+1∑nf[j]∗pj+pi∗f[i]f[i]=1+∑j=i+1npj∗f[j]1−pif[i]=\frac{1+\sum\limits_{j=i+1}^n p_j*f[j]}{1-p_i}f[i]=1−pi1+j=i+1∑npj∗f[原创 2021-08-07 16:31:28 · 212 阅读 · 0 评论 -
2021牛客暑期多校训练营4 I.Inverse Pair(思维)
LINK考虑a[i]1a[i]1a[i]1加不加111,能影响到的只有a[i]−1a[i]-1a[i]−1和a[i]+1a[i]+1a[i]+1当a[i]+1a[i]+1a[i]+1在a[i]a[i]a[i]之前,此时若a[i]+1a[i]+1a[i]+1没加111而a[i]a[i]a[i]加上111可以使得逆序对数量减少111当a[i]−1a[i]-1a[i]−1在a[i]a[i]a[i]之后,此时若a[i]a[i]a[i]没加111而a[i]−1a[i]-1a[i]−1加上111可以使得逆序对数原创 2021-08-07 09:48:43 · 219 阅读 · 0 评论 -
2021牛客暑期多校训练营3 C.Minimum grid(二分图匹配)
LINK最差情况下答案是∑i=1nai+∑i=1nbi\sum\limits_{i=1}^n a_i+\sum\limits_{i=1}^nb_ii=1∑nai+i=1∑nbi考虑减小答案的唯一方式是在格子(i,j)(i,j)(i,j)放下数字且aia_iai,且此时ai==bja_i==b_jai==bj就同时满足一行一列这样就省去了一个aia_iai的代价于是考虑单独提出权值为www的行和列,问题转化为一个匹配问题若格子(i,j)(i,j)(i,j)存在可以由iii行向jjj原创 2021-08-06 21:25:17 · 251 阅读 · 0 评论 -
2021牛客暑期多校训练营2 L.WeChat Walk(倒序分块)
题意给出nnn个人,再给出mmm对好友关系,每个人都有一个朋友圈用来显示微信步数。朋友关系不具备传递性现在有qqq次操作,每次操作会让某个人的微信步数增加,问最后对于每个人来说,在自己朋友圈内获得冠军的时间因为权值在[0,10000][0,10000][0,10000]的范围内,直接倒序枚举权值设点uuu在第timtimtim秒达到权值valvalval,并在此权值下维持了zzz秒冠军那么z=max(0,min (lasu,min(u−>v){fv})−tim)z=\max原创 2021-08-06 19:49:31 · 262 阅读 · 0 评论 -
2021牛客暑期多校训练营2 K.Stack(构造,拓扑排序)
LINK已知bib_ibi和bjb_jbj,若bi+(j−i)<bjb_i+(j-i)<b_jbi+(j−i)<bj肯定无解,因为每个元素都入栈仍无法满足存在bjb_jbj个元素所以可以发现,在相邻的bi,bjb_i,b_jbi,bj之间的元素都加进去比较好如果在bjb_jbj处发现多了,可以构造一个aja_jaj弹出适量元素,但是少了就直接无解了.于是为了方便,我们构造bi+1=bi+1b_{i+1}=b_i+1bi+1=bi+1初始设一个栈,栈中存放原创 2021-08-06 16:14:00 · 260 阅读 · 0 评论 -
2021牛客暑期多校训练营2 G.League of Legends(模型转化,单调队列dp)
LINK题意给定nnn个区间分成kkk组,要求每组至少一个区间,每个区间恰好属于一个组每组的贡献是区间的交的点数,每组至少需要有一个公共交点求最大收益,无解输出0.考虑一个区间包含了小区间,那么这个区间只有两种决策是最优的Ⅰ.单独成一个组,贡献就是自己的长度Ⅱ.加入到自己包含的那个小区间的组去,此时答案不变对于情况Ⅱ,答案不变不需要考虑.对于情况Ⅰ,单独成组可以先放一放考虑剔除这些区间,剩下的区间有一个非常好的性质,就是左端点递增的同时右端点也递增如果这考虑这些区间,会发现选择连续相邻原创 2021-08-05 23:59:26 · 302 阅读 · 0 评论 -
2021牛客暑期多校训练营1 G.Game of Swapping Numbers(贪心,思维)
LINK考虑不管怎么交换,设最后的数组为aaa数组考虑绝对值的含义,aia_iai和bib_ibi一定有一个被加上,一个被减去那么如果不固定kkk的取值,最优情况相当于把a,ba,ba,b数组合并排序一下前nnn大的数就把正号赋给他们,后面nnn个数就把负号赋给他们,这样是最优的所以考虑一对(ai,bi)(a_i,b_i)(ai,bi),在最优解中被赋的正负号不同,那么就不需要管.因为这种情况下较大的那个数被赋的一定是正号,较小的那个数被赋的一定是正号于是我们只需要考虑哪些ai,bia_原创 2021-08-05 20:44:44 · 247 阅读 · 0 评论 -
2021牛客暑期多校训练营1 Hash Function(同余/NTT)
LINKnnn个数模mmm各不相同考虑若a1a_1a1和a2a_2a2模完相同,那么有a1=k1∗m+s,a2=k2∗m+sa_1=k_1*m+s,a_2=k_2*m+sa1=k1∗m+s,a2=k2∗m+s也就是mmm为∣a1−a2∣|a_1-a_2|∣a1−a2∣的因子所以现在就是求最小的mmm满足mmm不为∣ai−aj∣|a_i-a_j|∣ai−aj∣的因子,注意到∣ai−aj∣<=500000|a_i-a_j|<=500000∣ai−aj∣<=5原创 2021-08-05 17:44:42 · 256 阅读 · 0 评论 -
2021牛客暑期多校训练营1 I.Increasing Subsequence(期望,维护后缀和优化dp)
LINK可以定义f[i][j]f[i][j]f[i][j]表示第一个人上一次选的是pip_ipi,第二个人上一次选的是pjp_jpj,接下来游戏结束的期望值Ⅰ.当pi<pjp_i<p_jpi<pj时,显然此时应该是第一个人在选数f[i][j]=1+1c∑k>i&&pk>pjf[k][j]f[i][j]=1+\frac{1}{c}\sum\limits_{k>i\&\&p_k>p_j}f[k][j]f[i][j]=1+c1原创 2021-08-05 16:27:16 · 269 阅读 · 0 评论