牛客2021暑期训练
文章平均质量分 56
牛客2021暑期训练
yl-9
这个作者很懒,什么都没留下…
展开
-
牛客2021暑期训练9-E-Eyjafjalla
牛客2021暑期训练9-E-Eyjafjalla题目链接题意给定一个以 111 为根的有根树,孩子的点权小于父亲的点权。多次询问,每次询问包含 xxx 节点的权值范围为 [l,r][l, r][l,r] 的极大连通块的大小题解病毒传播可以看作两个阶段,第一个阶段先上升到可感染的最高的一个节点 rtrtrt,第二阶段感染 rtrtrt 的子树中所有温度大于 lll 的城市第一阶段可以通过倍增法求得 rtrtrt第二阶段相当于在 rtrtrt 的子树中查询权值大于 lll 的节点个数,根据每个节点原创 2021-08-15 14:45:21 · 146 阅读 · 1 评论 -
牛客2021暑期训练8-F-Robots
牛客2021暑期训练8-F-Robots题目链接题意一个 n∗mn*mn∗m 的地图,000 可达 111 不可达,有三种机器人,只能向下走、只能向右走、可以向下向右走,对给的 qqq 个机器人能否从 (x1,y1)(x1,y1)(x1,y1)走到 (x2,y2)(x2,y2)(x2,y2)题解主要记录下 bitsetbitsetbitset 存可达图代码#include<bits/stdc++.h>#define Pb push_backusing namespace std原创 2021-08-11 22:29:06 · 113 阅读 · 0 评论 -
牛客2021暑期训练4-E-Tree Xor
牛客2021暑期训练4-E-Tree Xor题目链接题意给定一棵树,节点有权值 w[i]w[i]w[i] 且 w[i]∈[li,ri]w[i]\in[l_i,r_i]w[i]∈[li,ri],相连节点权值异或已知,求满足的权值组数题解先令 w[1]=0w[1]=0w[1]=0, 解出剩下的 www,之后可以发现, 如果要 w[1]=aw[1]=aw[1]=a, 那么剩下的 www 都会 xorxorxor 上 aaa所以就变成了求解合法的 aaa 的数量, 限制有 nnn 个不等式, 形原创 2021-08-06 20:52:42 · 87 阅读 · 0 评论 -
牛客2021暑期训练6-H-Hopping Rabbit
牛客2021暑期训练6-H-Hopping Rabbit题目链接题意平面上有nnn个矩形,给定ddd,需要找一个位置(x,y)(x,y)(x,y),使得所有(x+kd,y+kd)(x+kd,y+kd)(x+kd,y+kd)均不落在矩形中题解前置知识:扫描线由于能到的位置是重复的,我们将所有矩形移到(0,0)(0,0)(0,0)到(d,d)(d,d)(d,d)范围内求并,如果最终范围内存在未被覆盖的点,则该点可作为答案。矩形求并,用扫描线即可。移动到(d,d)(d,d)(d,d)范围内可能拆成1原创 2021-08-04 21:31:37 · 185 阅读 · 0 评论 -
牛客2021暑期训练5-D-Double Strings
牛客2021暑期训练5-D-Double Strings题目链接题意对所给的两个字符串 A、B 求好的子序列个数,好的子序列为:一段相同的前缀(可以无)+ 一个不同字符(a比b小)+ 长度相同的任意后缀(可以无)题解设 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] 可用前缀个数,可得递推式f[i][j]=f[i−1][j]+f[i][j−1]−f[i−1][j−1]f[i][j]=f[i−1原创 2021-08-01 21:04:20 · 166 阅读 · 0 评论 -
牛客2021暑期训练5-B-Boxes
牛客2021暑期训练5-B-Boxes题目链接题意有 n 个盒子,每个盒子有黑球或白球,打开盒子需要 wi 的代价,同时可以提示当前未打开的盒子里共有多少个黑球,代价为 C,求知到所有球的期望题解当我们使用 C 时,之后每打开一个盒子都可以知道后续还有多少黑球,也就是说我们只需要使用一次 C,且在开始使用最优,直到后面颜色一样就可以结束。因此就有两种方案不用 C,直接打开全部盒子,代价为 w[i] 之和用 C,每次都有概率结束(后面全都是白球或全都是黑球)且概率为 12n−i×2\frac{1原创 2021-08-01 16:54:30 · 67 阅读 · 0 评论 -
牛客2021暑期训练4-J-Average
牛客2021暑期训练4-J-Average题目链接题意给定 n*m 的矩阵,w[i][j]=a[i]+b[j],求一个不小于 x * y 的子矩阵,其平均值最大n,m,ai,bi≤105题解假设我们要求的子矩阵为tot=∑i=x1x2∑j=y1y2(ai+bj)=(y2−y1+1)∗∑i=x1x2ai+(x2−x1+1)∗∑j=y1y2bjtot=\sum_{i=x1}^{x2}\sum_{j=y1}^{y2}(a_i+b_j)=(y2-y1+1)*\sum_{i=x1}^{x2}a_i+原创 2021-07-26 17:26:09 · 94 阅读 · 0 评论 -
牛客2021暑期训练3-B-Black and white
牛客2021暑期训练3-B-Black and white题目链接题意给定 n*m 的矩阵,每个小方块有一个被染黑的代价 c[i][j],若四个方块形成矩形,其中一个方块无需代价。求矩阵全部染黑代价的最小值题解对于⼀个位置 ,如果该格子是黑色,我们连⼀条 A[i] 到 B[j] 的边。绿色已染,红色未染,所以A[3]–B[2],A[5]–B[2],A[5]–B[6],当我们要染 (3,6) 时,可以发现 A[3], B[6]已经在一个集合了显然用最小生成树做就可以了代码#inclu原创 2021-07-25 17:06:51 · 98 阅读 · 0 评论 -
牛客2021暑期训练3-E-Math
牛客2021暑期训练3-E-Math题目链接题意给定 n(n≤1e18),求 (x,y) 数量,其中 xy+1 | x2+y2 (1≤x≤y≤n) (x2+y2能被xy+1整除)题解先看个公式证明回到本题,假设我们已知数对 (x,y) 为一组解,必然还有一组解为 (x,y’) ,又由上面的证明可知 y’<x≤y,而题目要求 x≤y,因此 (x,y’)->(y’,x),那么此时两组符合要求的解则为 (y’,x) (x,y) ,同时 y=k*x-y’通过上面的公式可以求出一组解 (x原创 2021-07-25 15:41:44 · 135 阅读 · 0 评论 -
牛客2021暑期训练3-J-Counting Triangles
牛客2021暑期训练3-J题目链接题意给一个 n(n<=8000) 个顶点的图,每两个顶点边颜色为黑或白,求三个顶点组成的三角形边颜色相同的个数题解每个三⻆形要么同⾊,要么有两边同⾊另⼀边异⾊。对于后者,三⻆形有恰有两个异⾊⻆,⽽前者没有异⾊⻆。因此异⾊⻆数/2 即为不符合条件的三⻆个数。⽤总数减去即可。复杂度 n^2代码#include<bits/stdc++.h>#define LL long longnamespace GenHelper{ unsign原创 2021-07-24 19:48:29 · 70 阅读 · 0 评论 -
牛客2021暑期训练1-H-Hash Function
牛客2021暑期训练1-H题目链接题意给定n个互不相同的数,找一个最小模域,使得它们在模域下不同,n<=500000,a[i]<=500000题解卷积,FFT/NTT对任意两个数 ai%mod == aj%mod 可以转换为 | a[i]-a[j] |%mod==0要求所有差值复杂度 n^2,此时就要用到卷积在 nlogn 的复杂度下求出推荐两个写的好的FFT/NTT文章倾心讲解 FFT 多项式与快速傅里叶变换 && 迭代模板带注释小学生都能看懂的FFT!!!原创 2021-07-23 18:32:33 · 91 阅读 · 0 评论 -
牛客2021暑期训练1-A-Alice and Bob
牛客2021暑期训练1-A题目链接题意给定两堆石子n,m(1<=n,m<=5e3),Alice先手,对任意一堆取k(k>0)个,另一堆取s*k(s>0)个题解简单博弈论,设f[i][j]为SG函数值f[0][0]=0,对每个0态枚举k,s,方便起见,另i<=j代码#include<bits/stdc++.h>using namespace std;const int N=5e3+9;int T,n,m;int f[N][N];void Ini原创 2021-07-23 11:15:01 · 90 阅读 · 0 评论