
康复计划
文章平均质量分 76
OI界第一麻瓜
入门菜鸟
展开
-
二分图乱炖
想起来一些二分图经典的操作在这里随便整理一下Hall定理一个二分图,最大匹配数为n−max(∣X′∣−∣Y′∣)n-max(|X'|-|Y'|)n−max(∣X′∣−∣Y′∣)其中X′X'X′为XXX侧我们任意选出的一个子集,Y′Y'Y′为这个子集所对应的Y侧所有的点考虑对于任何一个在匹配中没有的点,把他选上,得到∣Y′∣|Y'|∣Y′∣此时所有的Y点肯定都是被匹配了的,这时把他们所匹配的点全部丢进来。不断重复这个操作,必然可以得到一个闭合的子图。这时候左侧的点比右侧的点就之多了本来这一个点。因此原创 2021-05-19 23:01:23 · 281 阅读 · 0 评论 -
一些有趣的小问题
1从(0,1)里面随机n个数,求和小于k的概率可以理解为广义的方案数/广义的总方案数1n1^n1n先容斥掉(0,1)的限制然后对于n个数和小于k的方案可以考虑将nnn个数随机撒在kkk里面,然后取差分即可故方案数为knn!\frac{k^n}{n!}n!kn从这个方法稍微推到一下就可以得到n个数小于1的概率为1n!\frac{1}{n!}n!12把111分为nnn段,求最kkk小段的期望长度最后的结论是E(Vk)=1n∑i=1k1n−i+1E(V_k)=\frac{1}{n}\原创 2021-01-27 23:44:47 · 489 阅读 · 0 评论 -
训练记录1
好久没做题,新开一个好了计数器:2uoj495新年的促销80分的做法也挺有启发性的一般来说fi,j,k,lf_{i,j,k,l}fi,j,k,l表示前iii个,拿了jjj个,白嫖了kkk个,花了lll元最用更新答案的时候,其实我们只需要判断最后k≤2⌊j/a⌋k\le 2\lfloor j/a \rfloork≤2⌊j/a⌋不妨把式子改一改0≤2⌊j/a⌋−k0\le 2\lfloor j/a \rfloor-k0≤2⌊j/a⌋−k即0≤j−a⌊k/2⌋0\le j-a \lfloor k/2原创 2021-01-24 22:00:41 · 442 阅读 · 2 评论 -
基数排序
又是被mld教育的一天梗概mld:两个亿都能排序三千万不是随随便便mld:你这写个鸡排不就过了我:1e9怎么鸡排mld:?。。你退役吧巧了,我确实退役了鸡排就是先排个位,在排十位,如此类推里面的排序部分用桶排实现可以压位配合循环展开使用更加复杂度压得越多跑得越快模板上网看了一下,感觉用define比较好写一点这里大概是4*n的测试了一下3e7还是在1s内的如果配合循环展开可以跑得更快#include<cstdio>#include<alg原创 2020-12-06 23:04:25 · 200 阅读 · 0 评论 -
BCPC预赛2020
来随便做做,当作康复训练了因为都是胡乱扫一眼题面就去做别的事情了然后用一些零碎的时间想,因此数据范围常常看错目前做了F,K,MF一开始看上去非常不可做…大力猜结论:一定先推完一个再推另外一个然后被样例打没了仔细看数据范围都是15发现可以大力压箱子和人的位置,然后就没了O((nm)3)O((nm)^3)O((nm)3)K一开始看上去非常不可做想着枚举r,然后线段树维护每一个l的答案然后发现并没有任何很好的性质仔细看数据范围,a,b都小于20开始大力考虑维护一个hih_ihi,g原创 2020-12-02 09:24:46 · 699 阅读 · 1 评论 -
codeforces/atcoder乱搞记录+杂题记录
打算如果有空的话就开两个CF的题玩一下并不保证都有代码。。也就是部分可能是口胡尽量保证口胡的题都是可以的。。1142C. Graph Transpositions一开始有一个很傻逼想法就是直接拆为两个图,一个正图,一个反图直接记录二元组跑最短路。。写了之后发现一直过不去。。后来发现,直接最短路是不行的。。因为在2操作较小的时候,你可能通过更多的2操作获得了一个更快的到某个点的走法,但这可能使你在后面付出代价,也就是最后的答案不优看来我还是很菜啊。。那怎么办呢?我们可以发现,当二操作用原创 2020-11-05 17:04:16 · 1693 阅读 · 0 评论 -
Educational Codeforces Round 97 (Rated for Div. 2)
感觉div2的难度似乎有所下降了?B不难发现,每一次转动我们一定可以减少一对相邻的0/1不可能减少两对,也不会一对也不减少故答案就是连续对的个数C数据范围很小fi,jf_{i,j}fi,j表示时间到i,解决了前j个的最小代价就可以了D把递增的序列放在一层就好了E单调上升-i转化为不降然后每一段的答案就是n-最长不降Ffi,jf_{i,j}fi,j 表示前i个数,最大值用到j的答案胡乱转移一下发现可以用前缀和优化GAC自动机建出来,然后每一次就是询问到跟路径上的最大值d原创 2020-10-31 10:25:13 · 270 阅读 · 1 评论 -
牛客挑战赛选做
考虑到现在没什么时间做题+没有水平+恢复智商一套做下来肯定是不现实的因此挑战赛都堆在一起好了43A一开始想的是胡乱DP因为能使或增大的转移点只有log个,因此可以暴力转移然而实际上一个数一段就是最优的了...原创 2020-09-28 22:23:56 · 173 阅读 · 0 评论 -
牛客练习赛58
B暴力贪心C显然行与行之间没有影响暴力枚举选了哪些列,然后贪心选行就可以了D可以发现左和上都是不能出现的于是fi,jf_{i,j}fi,j表示走到这里的最少的移动数就可以了胡乱转移一下就行E显然只选一个数朴素的想法是暴力枚举因数,看看存不存在稍微优化一下的话就是对l进行排序,对于每一个数维护大于l最左的,这样就可以O(1)查询了复杂度就是n根号的F推一下就可以发现无非就是奇偶的异或和分两个数树剖就可以了...原创 2020-09-28 13:08:31 · 133 阅读 · 0 评论 -
牛客练习赛59
A直接做就可以了B不难发现式子里面i,ji,ji,j没啥关系因此排序之后相邻的连在一起就可以了C显然满足三分性三分出每个方案选多少最优就可以了D如果iii可以到达必败态iii就必胜反之亦然E每一次修改都重新算一次可以发现,n分成k份一定是平均分最优差分一下每一组多分一次可以减少的代价,然后丢到优先队列里面就可以了F会填的会填的...原创 2020-09-27 16:53:57 · 94 阅读 · 0 评论 -
牛客练习赛60
链接:https://ac.nowcoder.com/acm/contest/4853#question还有几个题如果有空就做A一位一位做就可以了B没有三点共线的话直接考虑每条边的贡献就可以了C序列自动机建起来,然后胡乱DP一波就可以了顺便把模板丢在这里#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#include<vector>原创 2020-09-25 13:20:45 · 577 阅读 · 2 评论 -
牛客练习赛66
今天就先更一题好了平方数显然暴力枚举就好了异或图显然答案只有-1,1,2判断一下就可以了公因子学过的知识早忘了我们学过忘记过gcd(a,b,c)=gcd(a,b-a,c-b)这就好说了,差分一下就可以得到答案了...原创 2020-09-20 22:27:59 · 166 阅读 · 2 评论 -
牛客练习赛67
继续恢复智商A无B显然就是最大的数当然,如果你想一位一位做也是可以的…C我好菜啊想了半天策略发现没什么用博弈题就应该打表SG…发现和3的倍数有关…证明的话看题解观察到2k2^k2k在膜3的意义下为2,1,2,1,2循环这就好搞了D显然从后往前DP就可以了E显然对于每一位建一个虚点,然后连一连就可以直接dij了F学过的知识早忘了51nod1766直径具有可并性然而我忘了然后就没了RMQ维护一波就行...原创 2020-09-18 22:59:55 · 142 阅读 · 0 评论 -
牛客练习赛69
胡乱点个题恢复下智商A无B可以发现,val(i,j)val(i,j)val(i,j)就是最大的i∗ji*ji∗j个数C可以发现,把最大生成树建出来dis(i,j)dis(i,j)dis(i,j)就是两点间最小的边权因为题目要最大,最大值显然不可能超过最大生成树的边权和显然可以构造一个方案达到上界每次选最小的边分治就可以了因此答案就是最大生成树的边权和D显然先排序然后胡乱dp一下就可以了E不难发现对于一个右端点rrr,最大值为rrr的lll集合为一段区间对于左端点lll也是同原创 2020-09-13 22:09:15 · 146 阅读 · 1 评论 -
二分图最小点覆盖输出方案
老年选手不记得怎么输出方案了…其实就是复习一波König定理首先我们知道:最小点覆盖(N)=最大匹配数(M)下面给出证明N<M在匹配边之间,显然不存在相同的顶点因此,想覆盖每一条匹配边,则至少需要M个顶点矛盾N>M如果我们可以给出一个方案使得N=M那么显然这个情况就不用讨论了N=M我们尝试使用我们构造出的最大匹配方案来进行最小点覆盖过程其实很简单,从每一个右边未匹配的节点出发,类似于匈牙利算法地走也就是走一条非匹配边再走一条匹配边然后将沿路所有的节点标记最后左边标原创 2020-09-12 16:47:35 · 957 阅读 · 0 评论 -
康复计划1:csp2019
争取恢复一下智商要不以后头被打下来施工时间大概无限长现在还在放假(理不直气也壮)突然发现自己现在怎么这么沙雕?括号树很明显题目就是要求你加入每次加入一个括号,然后统计以他结尾的合法串又多少个设为did_idi括号序列自然就是转化为和为0然后只有)))的时候统计贡献就可以了(突然发现为啥输入法每次打‘统计’第一个都是‘酮基’)维护一个类似邻接表的样子,快速找到合法的和他配对的’('就做完了前缀和加上就行#include<cstdio>#include<algor原创 2020-08-25 13:18:37 · 288 阅读 · 0 评论