2021多校
文章平均质量分 71
牛客2021多校+杭电2020多校,已完结撒花,不过后期还是有可能继续补题更新(咕咕
tcy今天长胖了吗
总有一天我也会是金牌女孩ヾ(≧▽≦*)o
展开
-
[HDU-6836] Expectation【矩阵树定理模板】
[HDU-6836] Expectation【矩阵树定理模板】传送门题意给定一个无向图,定义一颗生成树的权重是其所有边权的与,问任意选一颗生成树的权重期望。(每个生成树选择概率相同)思路首先,因为等概率,所以答案就是 所有生成树的权重和生成树个数\frac{所有生成树的权重和}{生成树个数}生成树个数所有生成树的权重和 。矩阵树定理可以 O(n3)O(n^3)O(n3) 求出一个无向图的生成树个数,也就是分母;其次对于边权的第 iii 位,其在生成树的最终权重中为 111 的唯一条件是该原创 2021-08-13 10:59:01 · 135 阅读 · 0 评论 -
[HDU-6832] A Very Easy Graph Problem【贪心】【搜索】
[HDU-6832] A Very Easy Graph Problem【贪心】【搜索】传送门题意对于给定的无向图,计算:KaTeX parse error: Undefined control sequence: \and at position 56: …times [a_i = 1 \̲a̲n̲d̲ ̲a_j = 0]思路对于第 iii 条边,如果 u,vu, vu,v 已经联通,那么此时 u,vu, vu,v 的距离之和最大是 ∑j=1i−12j\sum_{j = 1}^{i -原创 2021-08-13 14:52:32 · 124 阅读 · 0 评论 -
[HDU-6862] Hexagon【构造】
[HDU-6862] Hexagon【构造】传送门题意遍历一个半径为 rrr 的平铺六边形中每个小六边形恰好一次,问最多拐多少次弯?左:半径的定义 右:方向的定义思路如下构造:可以看到,每圈都以4开头,以3结尾,之间是6组两个方向的重复,依此构造即可。代码#include <bits/stdc++.h>using namespace std;typedef long long ll;int mp[10][2];void print(int r) // 半径{原创 2021-08-21 10:56:35 · 116 阅读 · 0 评论 -
2021牛客暑期多校训练营10
2021牛客暑期多校训练营10最后一次牛客,看到是cjb命题觉得应该是那种做起来很爽的题吧,毕竟打过很多次他命题的比赛都觉得体验非常好,结果两题罚坐到头……(没有说邦邦不好的意思(嗯)这个暑假的现场赛结束了(没有参加今年杭电,在vp去年的),希望自己有所进步,有所收获。(后期会看自己学习情况补其他题,先开个坑)F-Train Wreck思路把栈操作转换为树上操作(队友的思路绝绝子),如果是push就是在当前节点上添加一个子节点(并将指针转移到子节点上),如果是pop就是将指针移动到当前节点的父亲原创 2021-08-16 21:03:34 · 257 阅读 · 0 评论 -
E-Eyjafjalla(2021牛客暑期多校训练营9)【主席树】
E-Eyjafjalla(2021牛客暑期多校训练营9)【主席树】传送门思路以点1为根,可以发现这棵树有这样的性质:深度越深,温度越低。所以我们从当前点往根节点走,一直走到父亲节点的温度不在 [l,r][l, r][l,r] 区间内时停下,此时所在的节点就是病毒能够扩散到的深度最低的节点(这一步可以用倍增来做)。以这个节点为根节点的子树包含了所有被感染的节点,也就是说这颗子树外的节点不可能被感染。被感染的条件是温度在区间 [l,r][l, r][l,r] 之间,所以此时问题就转化为了找出这颗子树原创 2021-08-15 16:39:12 · 217 阅读 · 0 评论 -
2021牛客暑期多校训练营9
2021牛客暑期多校训练营9E-Eyjafjalla思路以点1为根,可以发现这棵树有这样的性质:深度越深,温度越低。所以我们从当前点往根节点走,一直走到父亲节点的温度不在 [l,r][l, r][l,r] 区间内时停下,此时所在的节点就是病毒能够扩散到的深度最低的节点(这一步可以用倍增来做)。以这个节点为根节点的子树包含了所有被感染的节点,也就是说这颗子树外的节点不可能被感染。被感染的条件是温度在区间 [l,r][l, r][l,r] 之间,所以此时问题就转化为了找出这颗子树下有多少温度大于等于原创 2021-08-17 13:59:58 · 255 阅读 · 0 评论 -
2021牛客暑期多校训练营8
2021牛客暑期多校训练营8A-Ares, Toilet Ares思路直接按照样例解释的公式算就行代码#include <bits/stdc++.h>using namespace std;typedef long long ll;const int mod = 4933;ll qpow(ll x, ll n){ ll ans = 1; while(n) { if(n & 1) ans = (an原创 2021-08-10 10:50:31 · 307 阅读 · 3 评论 -
F-xay loves trees(2021牛客暑期多校训练营7)【双指针+树链剖分+线段树维护最大值】
F-xay loves trees(2021牛客暑期多校训练营7)题意给定两个树,找一个最大的子图,使得在第一棵树中任意两个节点互为祖先-子孙关系,在第二棵树中任意两个节点互不为祖先-子孙节点关系。思路参考:2021牛客暑期多校训练营7 F - xay loves trees - naymi - 博客园 (cnblogs.com)显然这些点在第一棵树上必然是一条链,所以我们用双指针维护这棵树上的一条链;对于这条链,判断其在第二棵树上是否满足条件的方法是:对于链上的每个节点,将其在第二棵树上以该点为原创 2021-08-10 14:16:58 · 311 阅读 · 0 评论 -
2021牛客暑期多校训练营7
2021牛客暑期多校训练营7F-xay loves trees思路参考:2021牛客暑期多校训练营7 F - xay loves trees - naymi - 博客园 (cnblogs.com)显然这些点在第一棵树上必然是一条链,所以我们用双指针维护这棵树上的一条链;对于这条链,判断其在第二棵树上是否满足条件的方法是:对于链上的每个节点,将其在第二棵树上以该点为根的子树全部染色(值+1),那么某个节点子树的最大值若是0,就可以加入链(并对子树染色),否则不能加入链(说明要么它的父节点已经染色,要么原创 2021-08-10 14:15:22 · 188 阅读 · 0 评论 -
H-Hopping Rabbit(2021牛客暑期多校训练营6)【扫描线】
H-Hopping Rabbit思路其实从 (x,y)(x, y)(x,y) 点出发和从 (x+d,y+d)(x + d, y + d)(x+d,y+d) 出发是一样的,因为左右都只能跳 ddd 的距离,那么有区别的出发点其实都可以归纳到 x∈[0,d),y∈[0,d)x \in [0, d), y \in [0, d)x∈[0,d),y∈[0,d) 的范围内。我们把所有的陷阱都通过这种方法映射到 x∈[0,d),y∈[0,d)x \in [0, d), y \in [0, d)x∈[0,d),y∈[0原创 2021-08-06 20:07:35 · 182 阅读 · 3 评论 -
2021牛客暑期多校训练营6
2021牛客暑期多校训练营6F-Hamburger Steak思路按照时间长短降序排序,并计算 ansbest=max(⌈avg(ti)⌉,max{ti})ans_{best} = max(\lceil avg(t_i) \rceil , max\{t_i\})ansbest=max(⌈avg(ti)⌉,max{ti}) ,之后按照时间降序安排锅中汉堡的时间,若当前锅时间已经超过 ansbestans_{best}ansbest ,就换到下一锅进行安排并截掉超出的那部分放入下一锅,这样可以完全原创 2021-08-06 14:33:33 · 132 阅读 · 0 评论 -
2021牛客暑期多校训练营5
2021牛客暑期多校训练营5B-Boxes思路如果问,在最开头问一次是最优的,多问没有意义;但是不问也可能是最优的情况。所以对问的情况与不问的情况分别求期望,取其最小值即可。对于问的情况,期望为:E=∑i=1n2−n−i−1∗∑j=1i(wi)E = \sum_{i = 1}^{n}2^{-n - i - 1} * \sum_{j = 1}^i(w_i)E=∑i=1n2−n−i−1∗∑j=1i(wi),对于不问的情况,期望为:∑i=1nwi\sum_{i = 1}^nw_i∑i=1nwi原创 2021-08-06 14:32:08 · 79 阅读 · 0 评论 -
Tree Xor(2021牛客暑期多校训练营4)【线段树】
Tree Xor(2021牛客暑期多校训练营4)【线段树】传送门题意给定一颗树,每个点的权值 aia_iai 在 [li,ri][l_i, r_i][li,ri] 之间,已知每条边 u,vu, vu,v 的边权 wu,v=au xor avw_{u, v} = a_u \ xor \ a_vwu,v=au xor av ,思路参考:2021牛客多校4_bok_choy_的博客 队友的博客队友写的好好,我摸了()具体实现见代码注释代码#in原创 2021-08-21 10:38:01 · 170 阅读 · 0 评论 -
B-Sample Game 2021牛客暑期多校训练营4【概率DP】
传送门:B-Sample Game题意xxx 个数,随机到数 iii 的概率是 pip_ipi,现在进行以下步骤:随机生成一个数如果之前生成的所有数都不大于当前生成的这个数,则继续进行步骤1;否则,进行分数结算并结束,若当前已经生成了 numnumnum 个数,则总分数为 num2num ^ 2num2 。问分数的期望。思路参考:【训练题43:概率dp】Sample Game | 2021牛客暑期多校训练营4比赛的时候推出了一个大概的方程,但是没想出来怎么进行值的递推。赛后看原创 2021-07-27 14:51:36 · 325 阅读 · 0 评论 -
2021牛客暑期多校训练营4
2021牛客暑期多校训练营4:B,C,E,F,I,JB-Sample Game题意xxx 个数,随机到数 iii 的概率是 pip_ipi,现在进行以下步骤:随机生成一个数如果之前生成的所有数都不大于当前生成的这个数,则继续进行步骤1;否则,进行分数结算并结束,若当前已经生成了 numnumnum 个数,则总分数为 num2num ^ 2num2 。问分数的期望。思路参考:【训练题43:概率dp】Sample Game | 2021牛客暑期多校训练营4比赛的时候推出了一个大原创 2021-07-27 15:42:13 · 148 阅读 · 1 评论 -
2021牛客暑期多校训练营3
2021牛客暑期多校训练营3B-Black and white思路把n行m列看成n+m个不同的点,这样题目中三个点染色第四个点可以免费的操作就转换为了图中点1与点2联通、点2与点3联通推出点1与点3联通,由此转化为了求n+m个点的最小生成树。用裸prim或者kruskal会被卡,因为点太多了,因此我们转化为求对于每个值,有多少个点为该值。这么求的原因是p很小,所以所有点的值最终都是[0, p)范围内,求完后我们再从0~p求一遍最小生成树即可。代码#include <bits/stdc++.原创 2021-08-06 14:31:28 · 77 阅读 · 0 评论