BZOJ4046 [Cerc2014] Pork barre】的更多相关文章

我们把边按权值从大到小依次加入图中 如果加到边权$V$,则当前的最小生成森林中边权$v\in[V, V']$(其中$V'$是任意值)形成的森林的边权和就是对于询问$[V, V']$的答案 由于点数不多,所以可以每次暴力$dfs$找环上最大边以及暴力删除... 又由于是强制在线,于是用可持久化线段树维护不同权值的出现次数即可 /************************************************************** Problem: 4046 User: rau…
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…
洛谷_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)$(建树 + 查询) /************************************************************…
第一眼,我勒个去...然后看到n ≤ 300的时候就2333了 首先把时间离散化,则对于一个时间的区间,可以知道中间最大的那个一定要被选出来,然后把区间分成左右两份 于是区间DP就好了,注意用左开右开的区间比较方便2333 如果暴力找区间内最大值是O(n3)的,当然st表就是O(n2logn)的了...不过st表辣么难蒟蒻根本不会QAQQQ /************************************************************** Problem: 3928…
分组赛的题……madan原题,考试想不出来真是SB得不行 首先,从大往小加边,每次加边如果成环必然弹出环上最大边 考虑询问[x,y],如果边权在[x,y]的边弹出了小于等于y的边j,说明j不在最小生成树上 其余边权在[x,y]的边都在最小生成树上 因此我们每次只要询问,在一段区间内边权小于等于y的边权和是多少,显然用主席树维护 处理弹出的最大边可以暴力,因为n不大 但我写了lct还是t真是简直了…… ; type way=record x,y,z:longint; end; node=recor…
回文自动机上dp f[x]表示形成x代表的回文串所需的最小步数, 若len[x]为奇数,f[x]=len[x],因为即使有更优的,也是直接添加,没有复制操作,那样就不用从x转移了. 若len[x]为偶数,f[x]=min(f[fa[x]]+1,len[x]/2-len[fro[x]]+f[fro[x]]+1),因为fa[x]肯定是最后复制更优,那么将复制前的子串末尾加一个字符即可,fro则是len不大于len[x]/2的最长的x的fail. memsetT死了,改成每次只memset用的就过了…
设f[i]为形成极长回文串i的最小操作数.答案为min f[i]+n-len[i]. 在不形成偶回文的情况下形成奇回文的最小操作数为该串长度.可以不考虑(但ans赋为len). 正确性基于: 1)奇.偶回文嵌套形成最终的偶回文一定可以转化为由在不形成奇回文的情况下形成偶回文. 2)奇.偶回文嵌套形成最终的奇回文并不需要讨论. 也不知道理解对没有... 所以,以下的回文串皆代指偶回文. 转移1:f[i]=f[j]+1 | 在极长回文串j前后补上一对相同字符可得到i. 举例: aabbaa : a…