01 2019 档案
摘要:题面 永无乡包含 $n$ 座岛,编号从 $1$ 到 $n$ ,每座岛都有自己的独一无二的重要度,按照重要度可以将这 $n$ 座岛排名,名次用 $1$ 到 $n$ 来表示。某些岛之间由巨大的桥连接,通过桥可以从一个岛到达另一个岛。如果从岛 $a$ 出发经过若干座(含 $0$ 座)桥可以 到达岛 $b$
阅读全文
摘要:题面 "luogu" 题解 什么是启发式合并? 小的合并到大的上面 复杂度$O(nlogn)$ 这题颜色的修改,即是两个序列的合并 考虑记录每个序列的$size$ 小的合并到大的 存序列用链表 但是有一种情况, $x y$ $siz[x] siz[y]$ 这个时候我们可以新建一个$f$数组,存一个真
阅读全文
摘要:题解 "动态树Link cut tree(LCT)总结" LCT常数大得真实 没有环,就是$lct$裸题吧 有环,我们就可以绕环转一圈,缩点 怎么搞? 当形成环时,把所有点的值全部加到一个点上,用并查集维护加到哪个点上 判断连通性再用一个并查集 Code cpp include define LL
阅读全文
摘要:题面 弱化版: "luogu" 强制在线版: "bzoj" 题解 本题有两种解法 离线算法:线段树合并 先看一道简单题 "[USACO18JAN]MooTube" 本题就是在此基础上求第$k$高的点 首先把询问和路径都排一下序 然后记一个指针,如果当前路径可以对这个询问有贡献,就加入这条边 本题也是
阅读全文
摘要:参考资料 https://www.cnblogs.com/zhoushuyu/p/9069164.html https://www.cnblogs.com/candy99/p/dsuontree.html https://www.cnblogs.com/zcysky/p/6822395.html 简
阅读全文
摘要:题面 "luogu" 题解 LCT "动态树Link cut tree(LCT)总结" 考虑先按边权排序,从小到大加边 如果构成一颗树了,就更新答案 当加入一条边,会形成环. 贪心地想,我们要最大边权 最小边权最小 最大边权固定就是新加入的这条边,我们要让最小边权尽量地大 那么我们可以去掉原先路径上
阅读全文
摘要:动态树是个好玩的东西 "LCT题集" 预备知识 "Splay" 树链剖分(好像关系并不大) 动态树(Link cut tree) 先搬 "dalao博客" 什么是LCT? 动态树是一类要求维护森林的连通性的题的总称,这类问题要求维护某个点到根的某些数据,支持树的切分,合并,以及对子树的某些操作。其中
阅读全文
摘要:题面 "luogu" 题解 矩阵快速幂$+dp$ ~~其实也不是很难~~ 先考虑朴素状压$dp$ $f[i][S]$ 表示最慢的车走到了$i$,$[i, p+i 1]$的覆盖情况 状态第一位一定是$1$ 那么显然$f[i][S] = \sum f[i 1][S']$($S'$能转移到$S$) 什么情
阅读全文
摘要:题面 "luogu" 题解 最小费用最大流 先假设剩下$m$场比赛,双方全输。 考虑$i$赢一局的贡献 $C_i (a_i+1)^2+D_i (b_i 1)^2 C_i a_i^2 D_i b_i^2$ $=C _i+2 a_i C_i+D_i 2 b_i D_i$ 建$m$个点限制每场比赛只有一个
阅读全文
摘要:Description 小R最近遇上了大麻烦,他的程序设计挂科了。于是他只好找程设老师求情。善良的程设老师答应不挂他,但是要 求小R帮助他一起解决一个难题。问题是这样的,程设老师最近要进行一项邪恶的实验来证明P=NP,这个实验一共 持续n天,第i天需要a[i]个研究生来给他搬砖。研究生毕竟也是人,所
阅读全文
摘要:题解 Dinic求最小割 题目其实就是求最小的代价使得每个纵轴被分成两部分 最小割!!! 我们把每个点抽象成一条边,一个纵轴就是一条$S T$的路径 但是题目要求$|f(x,y) f(x’,y’)| ≤D$ 不能直接跑最小割 考虑如何限制 首先,$|f(x,y) f(x’,y’)| ≤D$是相互的
阅读全文
摘要:题解 最小费用最大流 ~~n和m是反着的~~ 首先, $$ ans = \sum{cost[i][j]} k $$ 其中,$k$为它在当前技术人员那里,排倒数第$k$个修 我们可以对于每个技术人员进行拆点, 对于每个技术人员的各个点,表示倒数第几次修 然后每个人连向技术人员,显然花费是根据连的点来算
阅读全文
摘要:题解 二分答案+Dinic最大流 二分答案$mid$ 把门拆成$mid$个时间点的门 相邻时间的门连一条$inf$的边 预处理出每个门到每个人的最短时间 为$dis[k][i][j]$ 在$(i,j)$的人到第$k$个门最短时间 然后一个人连向每个第$dis[k][i][j]$那个时刻的门,容量为$
阅读全文
摘要:题面 "Loj" 题解 ~~感觉挺难的啊~~~ 状压$dp$ 首先,有一个性质 对于一个序列的最大前缀和$\sum_{i=1}^{p} A[i]$ 显然对于每个$\sum_{i=p+1}^{x}A "i" 0$ 那么$sum[S] += sum[S (1 define LL long long de
阅读全文
摘要:题面 "Loj" 题解 枚举每一个点 分两种情况 翻倍or不翻倍 $1.$如果这个点$i$翻倍, 要保持排名不变,哪些必须翻倍,哪些可以翻倍? 必须翻倍: $a[i] \leq a[x] include include include include define ll long long usin
阅读全文
摘要:题面 "luogu" 题解 $Cdq分治+dp$ $mx[i],mn[i]$分别表示第$i$位最大,最小能取到多少 那么有 $j define LL long long define RG register using namespace std; template inline void read
阅读全文
摘要:题面 "luogu" 题解 裸的错排问题 错排问题 百度百科:$n$个有序的元素应有$n!$个不同的排列,如若一个排列使得所有的元素不在原来的位置上,则称这个排列为错排;有的叫重排。如,1 2的错排是唯一的,即2 1。1 2 3的错排有3 1 2,2 3 1。这二者可以看作是1 2错排,3分别与1、
阅读全文
摘要:题面 "luogu" 题解 一道复杂的期望$dp$ 思路来源: "__stdcall" 容易想到,只要把每张牌打出的概率算出来就可以求出$ans$ 设$fp[i]$表示把第$i$张牌打出来的概率 可知:$fp[0] = 1 (1 p[0])^r$ ($(1 p[0])^r$即一直不打出的概率) 后面
阅读全文
摘要:题面 "luogu" "Codeforces" 题目大意: 给一个长度为$n$的序列,求两个不相交的子集长度之和最大是多少,能放入同一子集的条件是首先顺序不能变,然后每一个相邻的要么相差$1$或者相差$7$的倍数。 $n define LL long long define RG register
阅读全文
摘要:题面 "luogu" "bzoj" 题目大意: 给你一个长度为$n$的序列,元素都在$1 k$之间,有些是$ 1$,让你把$ 1$也变成$1 k$之间的数,使得逆序对最多,求逆序对最少是多少 $n define LL long long define RG register using namesp
阅读全文
摘要:题面 "luogu" 题解 树形$dp$ $f[x][y]表示x的y层以下的所有点都已经覆盖完,还需要覆盖上面的y层的最小代价。$ $g[x][y]表示x子树中所有点都已经覆盖完,并且x还能向上覆盖y层的最小代价。$ 对于 $u v$, $u$为$v$的父亲: $g[u][j] = min(g[u]
阅读全文
摘要:题面 "bzoj" 题目大意: 给出一个模式串$S(|S|≤15)$ 问存在多少个长为$m(m≤1000)$ 的字符串T满足$LCS(S,T)=x(0≤x≤|S|)$ 输出$|S|+1$个结果$(mod 1e9+7)$ ($|S|$表示字符串S的长度,字符集为$A,T,C,G$四个字母) 题解 朴素
阅读全文
摘要:题面 "luogu" 题解 数据范围已经告诉我们是虚树了,考虑如何在虚树上面$dp$ 以下摘自 "hzwer博客" : 构建虚树以后两遍dp处理出虚树上每个点最近的议事处 然后枚举虚树上每一条边,考虑其对两端点的答案贡献 可以用倍增二分出分界点 如果a,b的分界点为mid,a,b路径上a的第一个儿子
阅读全文
摘要:题面 "CodeForces" "luogu" 题解 数位dp 设$f[i][j][k][l]$表示当前在第$i$位有$j$位大于等于$k$,当前有没有卡上界的方案数 则枚举新加的数$p$, 有$f[i+1][j+(p≥k)][k][l|(p define LL long long define R
阅读全文
摘要:题面 "luogu" 题解 ~~本来想练数位dp的,结果又忍不住写了组合数..~~ 去掉一个$0$可以看作把$0$移到前面去 那么题目转化为 $n$有多少个排列小于$n$ 强制某一位比$n$的对应位置上的数小, 后面方案组合数算一下即可 Code cpp include define LL long
阅读全文
摘要:题面 "luogu" 题解 组合数 枚举有多少个$1$,求出有多少种数 扫描$n$的每一位$1$, 强制选$0$然后组合数算一下有多少种方案 Code cpp include define LL long long define RG register using namespace std; te
阅读全文
摘要:题面 "luogu" "CodeForces" 题解 $orz$ "yyb" 转移蜜罐其实是吓唬人的...... 转移的蜜罐都是尝试过的,所有只关心当前架子上的蜜罐数 设$f[i][j]$表示第i个货架有j个蜜罐没有被试吃的概率 然后枚举品尝了几个之前没有品尝过的,组合数转移一下 Code cpp
阅读全文
摘要:题面 "luogu" 题解 缩点+树形dp 依赖关系可以看作有向边 因为有环,先缩点 缩点后,有可能图不联通. 我们可以新建一个结点连接每个联通块. 然后就是树形dp了 Code cpp include define LL long long define RG register using nam
阅读全文
摘要:题面 "洛谷" 题解 $f[i][j]$表示有i个人参与游戏,从庄家(即1)数j个人获胜的概率是多少 $f[1][1] = 1$ 这样就可以不用讨论淘汰了哪些人和顺序 枚举选庄家选那张牌, 枚举下一次的庄家 可以得到这次的庄家 然后转移即可 Code cpp include define LL lo
阅读全文
摘要:题面 "luogu" 题解 2019年AC的第一道题~~ ~~函数名命名为rank竟然会ce~~ 我写的是树状数组套值域线段树(动态开点) 操作1:询问$k$在$[l r]$这段区间有多少数比它小,再加$1$ 操作2:前缀和思想得到$[l r]$区间的线段树,然后类似平衡树找第$k$大 操作3:直接
阅读全文

浙公网安备 33010602011771号