11 2020 档案

摘要:题意 将$n$个数划分成$m$段使得每中不同数字的个数$\le k$,对于每个$k$满足$1\le k\le n$求出最小的$m$。 算法 根号分治+二分 思路 面对那不大不小的数据范围,难以优化的查询方法以及令人疑惑的值域,我们可以联想到根号分治。 首先明确: 答案的范围是不会超过$\frac$的 阅读全文
posted @ 2020-11-29 20:24 When_C 阅读(156) 评论(0) 推荐(0)
摘要:题意 现在有n个数$a_1,a_2,a_3,...,a_n$ 。你最多可以进行k次操作,每次操作你可以将其中一个数乘以$x$,使得$a_1|a_2|...|a_n$ 最大。 算法 贪心+前缀后缀 思路 首先明确:答案的这$k$次$\times x$操作用都会在同一个数身上。因为$x$大于$2$,所以 阅读全文
posted @ 2020-11-26 20:47 When_C 阅读(99) 评论(0) 推荐(0)
摘要:题意 给出2个正整数 $n,m(1\leq n,m \leq 105)$与长度为$m$的序列$a[1-m]$,保证$a[i]\leq n$,你可以把所有值为$a[i]$的元素改为$a[j]\(,可以不改且只能改一次,要求最小化\)\sum\limits_{i\leq m-1} |a_i-a_{i+1 阅读全文
posted @ 2020-11-26 19:42 When_C 阅读(171) 评论(0) 推荐(0)
摘要:算法 最大权闭合子图 思路 首先,如果没有租借这个条件,就是一个最大权闭合子图的模板了,让我们背诵最大权闭合子图的建图方法: 将源点与正权点连边,流量为权值; 将负权点与汇点连边,流量为权值相反数(正数); 将原图中的边相连,流量为正无穷。 最大权闭合子图$ =$ 原图正权点权值和$ -$ 最小割 阅读全文
posted @ 2020-11-23 21:21 When_C 阅读(79) 评论(0) 推荐(0)
摘要:模拟退火 博客 洛谷日报 OI-Wiki 另一个博客 node:其实这些博客都讲得很好,实现的话可以参考第一个 练习 UVA10228 A Star not a Tree? LuoguP5544 [JSOI2016]炸弹攻击1 上一题的AC代码 剩下的再说把…… 阅读全文
posted @ 2020-11-20 11:37 When_C 阅读(82) 评论(0) 推荐(0)
摘要:算法 贪心+无数有趣的细节 高能预警:本题细节较多,请仔细食用。 思路 从小数点往后搜,直到遇见第一个$\geq 5$的数字,它就是我们要四舍五入的第一个。然后从它开始往回搜,只要$\geq 5$就四舍五入。 正确性 小数点后位数靠前的数字越大,值越大,所以我们将第一个能“$5$入”的点“入”掉(因 阅读全文
posted @ 2020-11-19 20:11 When_C 阅读(136) 评论(0) 推荐(0)
摘要:prufer编码 $prufer$序列可以将一个代标号的$n$个节点的树用$[1,n]$中的$n-2$个整数表示,可以理解为完全图的生成树与数列之间的双射。 出自OI Wiki 有关无根树转$prufer$编码,$prufer$编码转无根树等内容可以去$OI Wiki$上看 这里只介绍**$pruf 阅读全文
posted @ 2020-11-18 21:50 When_C 阅读(139) 评论(0) 推荐(0)
摘要:题意 给定一个序列,一些位置未确定(是$o$与$x$的几率各占$50%$)。对于一个$ox$序列,连续$x$长度的$o$会得到$x^2$的收益,请问最终得到的序列的期望收益是多少? 算法 期望DP 思路 一段一段地处理其实并不方便,因为我们并不知道一段连续$o$的长度(它会随着你的选择而变化)。 于 阅读全文
posted @ 2020-11-17 21:10 When_C 阅读(153) 评论(0) 推荐(0)
摘要:算法 期望DP入坑题 思路 设$f_{i,j}$为第$i$时刻,电梯上正好有$j$人的概率,于是有: $$\left{\begin{f_{i + 1,j + 1}=f_{i,j}\times p}\{f_{i+1,j}=f_{i,j}\times (1-p)} \end \right. $$ 采用刷 阅读全文
posted @ 2020-11-17 19:56 When_C 阅读(136) 评论(0) 推荐(0)
摘要:结论题 先给结论吧: 一个两直角边分别为$x$,$y$的格点直角三角形(即在网格图上),其斜边上的整点数量为$gcd(x,y)+1$(包含两端点). 貌似看完结论还是不会呢 思路 首先声明:本题是格点图,所以要把行数列数都加上$1$。 先简单容斥一下,合法三角形数量$=\(从格点图上任选三个点的方案 阅读全文
posted @ 2020-11-16 21:11 When_C 阅读(293) 评论(0) 推荐(0)
摘要:算法 暴力枚举+拓欧检查 思路 两个野人$i$与$j$会相遇,当且仅当方程$c_i + xp_i \equiv c_j + xp_j(mod M)\(有正整数解且该解\)\leq min(l_i,l_j)$。 又发现题目中保证 \(M \leq 1e6\),于是就可以愉快的暴力枚举了。 而上面的方程 阅读全文
posted @ 2020-11-16 17:55 When_C 阅读(156) 评论(0) 推荐(0)
摘要:数学题 排列组合+高精度 前置芝士 插空法 高精度计算 思路 考虑容斥,老师不相邻的方案数$=\(不考虑老师特殊要求的方案数\)-$保证老师相邻的方案数 不考虑老师限制,即老师与男生相同,则方案数为:\(A(n+3,m)\times A(n+2,n+2)\) 保证老师相邻,即把两个老师捆在一起,看做 阅读全文
posted @ 2020-11-16 11:21 When_C 阅读(119) 评论(0) 推荐(0)
摘要:前置芝士 裴蜀定理 若$a$,$b$是整数,且$gcd(a,b)=d$,那么对于任意的整数$x$,\(y\),$ax+by$都一定是$d$的倍数,特别地,一定存在整数$x$,\(y\),使$ax+by=d$成立。 推广: $a_1,a_2,a_3...a_n$为$n$个整数,$d$是它们的最大公约数 阅读全文
posted @ 2020-11-15 21:15 When_C 阅读(111) 评论(0) 推荐(0)
摘要:裴蜀定理 见我的这篇博客 拓展欧几里得定理 当已知$a$,$b$时,求一组$x$,$y$使得$a\times x + b\times y = GCD(a, b)$ 解一定存在 因为$GCD(a,b) = GCD(b, a % b)$,所以$a \times x + b \times y = GCD( 阅读全文
posted @ 2020-11-14 15:53 When_C 阅读(400) 评论(0) 推荐(0)
摘要:思路 \(n \leq 18\),一看就很状压。 设$f_{st,i}$为当前状态为$st$(二进制下第$x$位为$1$时表示选了第$x$个),最后一个选了$i$时的最大满意度(记录$i$是为了计算吃菜顺序的额外贡献),则有: $$ f_{st,i} = max(f_{pre,j} + a_i + 阅读全文
posted @ 2020-11-14 12:03 When_C 阅读(88) 评论(0) 推荐(0)
摘要:思路 首先,我们根据题意建树,并给边附上权值:原有的边权值为$0$,反向边权值为$1$,代表走这条边所需代价。 第一次$DFS$,钦定$1$为根,我们可以求出以$1$为根的答案。 第二次$DFS$,考虑根由$u$转移到$v$时答案会怎么变。 若$u$到$v$的边权为$0$,那么一开始我们是从$u$到 阅读全文
posted @ 2020-11-13 09:29 When_C 阅读(102) 评论(0) 推荐(0)
摘要:题意补充 事实上,$A$每次能染的$k$个节点并不一定与$B$所在节点相邻,换言之,$A$可以提前染一些节点使得$B$以后走不到。 数据范围:$1 \leq n \leq 300000$ 算法 二分答案 + 树形DP 思路 二分每次染的节点个数$k$,再用树形DP检查; 设$f_u$为以$u$节点为 阅读全文
posted @ 2020-11-13 08:49 When_C 阅读(78) 评论(0) 推荐(0)
摘要:题意 中文题面,不再赘述 算法 树形DP + 贪心乱搞 思路 所有无法描述的正解都是贪心算法 不过这道题还是可以感性理解的 设$f_u$为以$u$为根的子树内最大毛毛虫的大小(尽管答案并不可以由它直接得出),则: $$ f_u = max(f_v) + 1 + min(siz_u - 1, 0) \ 阅读全文
posted @ 2020-11-12 21:40 When_C 阅读(91) 评论(0) 推荐(0)
摘要:树形依赖背包 一般形式:给定一颗$n$个节点的点权树,要求选出$m$个节点使得这些选出的节点的点权和最大,一个节点能选当且仅当其父亲节点被选中,根节点能直接选。 一般解法: 用$f_{u,i}$表示在$u$的子树中选择$i$个节点(包括本身)的最大价值,转移方程为:\(f_{u,i} = max(f 阅读全文
posted @ 2020-11-11 09:14 When_C 阅读(337) 评论(1) 推荐(2)
摘要:题意 合并一堆数,每次合并相加或相乘(题目已给出),设计合并顺序使得最终答案最大 其实就是一个区间DP 设$f_{i, j}\(为合并区间\)[i,j]$的最大价值 加法很好写:\(f_{i, j} = max_{k \geq i}^{k < j}{(f_{i, k} + f_{k + 1, j}) 阅读全文
posted @ 2020-11-09 17:09 When_C 阅读(127) 评论(0) 推荐(1)
摘要:思路 看到是无向图最小环,考虑$Floyd$,但是$n^3$的复杂度太高了,怎么办? 观察题面,发现两个数只要与起来是$1$就有边,进而想到只要有一个二进制位有三个以上的数字是$1$,就能构成$3$元环。考虑最坏情况,即每个位都只有两个数为$1$,就有$64 \times 2=128$种,那么只要$ 阅读全文
posted @ 2020-11-09 08:07 When_C 阅读(85) 评论(0) 推荐(0)
摘要:思路 显然,这题正着不太好推,那么就考虑二分答案,有一个很大的问题,我们需要在$O(n\log n)$或者$O(n)$的时间内判断我们二分答案的可行性。首先肯定想到贪心,但是你会发现每一个元素需要加的值不一样,加了值以后影响的范围也不一样,并不好维护。 因为涉及到区间修改,考虑使用线段树。我们维护每 阅读全文
posted @ 2020-11-04 21:27 When_C 阅读(127) 评论(0) 推荐(0)
摘要:这题面不禁让我联想到了树剖 思路 显然,这道题并不需要树剖毕竟它只是蓝题,不过,它也需要用到$DFS$序,把树上操作转化成序列操作(这个思想可以说很套路了),但这题有一个麻烦的地方:在修改子树时每一条边都会对修改值造成影响,而这用线段树是难以维护的。 于是我们考虑将边上的影响分离出来,可以先预处理出 阅读全文
posted @ 2020-11-03 20:08 When_C 阅读(118) 评论(0) 推荐(0)
摘要:前置芝士 $Dilwoth$定理$or$你已经做了导弹拦截 什么是$Dilworth$定理? 对于任意有限偏序集,其最大反链中元素的数目必等于最小链划分中链的数目. ​ --百度百科 或许你可以通过这篇神的博客学习一下。 事实上,对于本题而言,所有的比分信息就是偏序集,而我们要求的就是最小链划分,即 阅读全文
posted @ 2020-11-03 16:45 When_C 阅读(124) 评论(1) 推荐(0)
摘要:云剪贴板戳我 #include <bits/stdc++.h> #define fuck_you int #define shit double #define LC_txdy main #define zhy_is_god return #define wrp for #define tiger 阅读全文
posted @ 2020-11-02 21:23 When_C 阅读(184) 评论(5) 推荐(0)