BZOJ4042 : [Cerc2014] parades】的更多相关文章

设f[x]为x子树里能选的最多的路径数,h[x]为x子树里往上走的点的集合,且不与x子树内的最优解冲突 首先f[x]=sum(f[son]) 若h[son]与x可以直接匹配,则匹配上,f[x]++ 然后把剩下的未配对的son之间进行匹配,f[x]+=最大匹配数 因为度数不超过10,所以设dp[S]表示二进制表示为S的集合里的最大匹配,x=lowbit(S),则 dp[S]=max(dp[S^(1<<x)],dp[S^(1<<x)^(1<<y)]+1),其中y属于S,y&…
题目链接 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.php?id=4042 (Luogu) https://www.luogu.org/problem/P4757 题解 挺神仙的题. 观察到两个重要性质: (1) 只有不影响任何已选方案的时候,才需要去考虑是否要选择\(u\)的子树内往上走的链.(因为链不带权值) (2) 如果要选择\(u\)子树内往上走的链,那么最多选择一条. 由此可知,我们可以记录哪些链在\(u\)子树内的所有方案中是必…
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem 10983 18765 Y 1036 [ZJOI2008]树的统计Count 5293 13132 Y 1588 [HNOI2002]营业额统计 5056 13607 1001 [BeiJing2006]狼抓兔子 4526 18386 Y 2002 [Hnoi2010]Bounce 弹飞绵羊 43…
题目大意 给你一棵\(n\)个点的树和\(m\)条路径要求你找出最多的路径,使得这些路径不共边.特别的,每个点的度数\(\leq 10\). \(n\leq 1000,m\leq \frac{n(n-1)}{2}\) 题解 先对于每个点把相邻的边编号. 考虑状压DP. 设\(f_{i,j}\)为以\(i\)个点的子树内,状态为\(j\)的边的子树内的边也没有选(这些边也没选),所选的最多路径数. 然后对于每个点有很多种选法,分为两类:1.某条边不选,选对应的子树:2.选\(1\)~\(2\)条边…
洛谷_4762:[CERC2014]Virus synthesis 题目描述: 初始有一个空串,利用下面的操作构造给定串\(S\).\(len(S)\leq10^5\) 1: 串开头或末尾加一个字符. 2: 串开头或末尾添加一个该串的逆串. 输入描述: 给出一个\(T\)表示要处理的字符串的数量. 接下来第\(2\)~\(T+1\)行每行给出一个字符串. 输出描述: 对于每一个字符串,输出一个正整数表示答案. 思路: 回文自动机. 先建立一个回文自动机,然后记\(f(i)\)表示转移到\(i\)…
[CERC2014]Virus synthesis 初始有一个空串,利用下面的操作构造给定串 SS . 1.串开头或末尾加一个字符 2.串开头或末尾加一个该串的逆串 求最小化操作数, \(|S| \le 10^5\) 可以发现最终的答案必然是先构造出一个偶数的回文串,然后再在回文串的两端把剩下的用操作\(1\)补全 而这个偶数长度的回文串可以通过操作\(2\)得到,最终答案就是这个偶数长度的回文串的构造花费加上剩下来的字符的数量 我们构建回文自动机 我们只关心偶数长度回文串的构造花费,假设自动机…
bzoj4044/luoguP4762 [Cerc2014]Virus synthesis(回文自动机+dp) bzoj Luogu 你要用ATGC四个字母用两种操作拼出给定的串: 1.将其中一个字符放在已有串开头或者结尾. 2.将已有串复制,然后reverse,再接在已有串的头部或者尾部. 一开始已有串为空.求最少操作次数. len<=100000 题解时间 一个非空串经过一次操作2之后一定是一个偶回文串. 所以考虑建出PAM之后dp. 由于只有偶回文串可以通过操作2产生,所以只有偶回文串参与…
首先对于一个给定的图形,要找到是否存在答案非常简单... 只要维护当然图形的凸包,看一下是否有线段在这条直线上方,直接二分即可,单次询问的时间复杂度$O(logn)$ 现在用线段树维护凸包,即对于一个区间$[l, r]$,我们维护点$[P_l, P_{r +1}]$形成的凸包 于是每次查询只要在线段树上二分,总复杂度$O(nlogn + nlog^2n)$(建树 + 查询) /************************************************************…
我们把边按权值从大到小依次加入图中 如果加到边权$V$,则当前的最小生成森林中边权$v\in[V, V']$(其中$V'$是任意值)形成的森林的边权和就是对于询问$[V, V']$的答案 由于点数不多,所以可以每次暴力$dfs$找环上最大边以及暴力删除... 又由于是强制在线,于是用可持久化线段树维护不同权值的出现次数即可 /************************************************************** Problem: 4046 User: rau…
第一眼,我勒个去...然后看到n ≤ 300的时候就2333了 首先把时间离散化,则对于一个时间的区间,可以知道中间最大的那个一定要被选出来,然后把区间分成左右两份 于是区间DP就好了,注意用左开右开的区间比较方便2333 如果暴力找区间内最大值是O(n3)的,当然st表就是O(n2logn)的了...不过st表辣么难蒟蒻根本不会QAQQQ /************************************************************** Problem: 3928…