自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

辗转山河弋流歌

暂停更新和答疑

  • 博客(33)
  • 收藏
  • 关注

原创 【BZOJ3998】【TJOI2015】弦论 后缀自动机

题解:首先我们可以建一个后缀自动机。 然后每条路径走到每个点都是一个串,它们是有字典序的。 我们只需要统计出往每个点走之后都有多少串就好了。 fi=(∑fson)+numif_i = (\sum {f_{son}})+num_i 对于不计重复的情况下,numi=1num_i=1 对于计算重复的情况下,每个节点都有多种走到最后的方式,numinum_i 就是看有这个种数。 比如 ab

2015-04-29 17:37:55 2729

原创 【BZOJ4010】【HNOI2015】菜肴制作

题解:把所有入度为0的点入优先队列,每次取出标号最大的,并将此点取走后入度为0的点入优先队列,最后反序输出。代码:#include #include #include #include #include #define N 101000#define M 101000using namespace std;struct Eli{ int v,next;}

2015-04-29 14:07:51 1395

原创 【BZOJ4011】【HNOI2015】落忆枫音 拓扑图DP,

题解:如果没有后加的边,那么 ans=∏ni=2dians = \prod_{i=2}^n di ,可以回忆构建树形数据的普遍方法——点 ii 连一条 [1,i-1] 的边即可。 然后后加边了以后,有且仅有一些方案会形成环是错误方案。 拓扑图DP就好啦~, f(i)f(i) 表示从 yy 到 ii 时的方案。 发现对于一条 y→iy \rightarrow i 的路径,再加上一条 i→y

2015-04-29 09:15:39 1662

原创 【BZOJ4029】【HEOI2015】定价 模拟

题解:枚举后面有几个 00,然后每次(当前求 kk 个后导 00 )算出第一个比 LL 大的 10k10^k 的倍数,和第一个比 LL 大的 5×10k5\times 10^k 的倍数。 然后把所有这些数都比较一下就好啦。代码:#include #include #include #include #define inf 0x3f3f3f3fusing namesp

2015-04-28 13:34:39 1643

原创 【BZOJ4027】【HEOI2015】兔子与樱花 贪心

题解:贪心策略步骤一:如果有多个儿子,那么显然(这里是真的显然,真的不给证明了)我们肯定要先合并小儿子后合并大儿子。贪心策略步骤二:因为所有节点的载重是相同的,所以我们要先合并叶子节点,不能合并就把父亲的权值+1然后叶子就可以去掉啦~(若父亲要被合并上去,那么爷爷就会多出若干被计数为1的儿子)。 证明1: 为什么一定先合并叶子? 因为: 1.如果合并完父亲叶子还能合并,

2015-04-27 20:12:14 2060

原创 【BZOJ4032】【HEOI2015】最短不公共子串 后缀自动机

题解:T1:我们按长度bfs所有的串,对于每个串记录A串中终点位置、B串中终点位置(B串中位置由B的后缀自动机中节点标号表示)、长度——(x,y,l)(x,y,l)。 然后 (x,y,l)(x,y,l) 可以 O(1)O(1) 转移到 (x+1,son[y,stringax+1−′a′],l+1)(x+1,son[y,stringa_{x+1}-'a'],l+1) 时间复杂度 O(

2015-04-27 17:40:48 2967

原创 【自用】有上下界的网络流

无源汇网络流(有向图):最终的最大流需要是一个循环体,流量在内部循环流动。必须流和自由流的定义:首先设每条边上界为flow,下界为low,那么就存在low的必须流和flow-low的自由流。「无源汇」有上下界的「可行」流:建图:记录每个点的所有流入的必须流in和所有流出的必须流out。 然后新图先设立一个超级源点和一个超级汇点, 对于每条边,保留其自由流的容

2015-04-24 09:39:19 1572

原创 【USACO 2015 Open Gold】Palindromic Paths 动态规划

题解:f(i,j,k,l)f(i,j,k,l) 表示起点横着走 ii 步,竖着走 jj 步,终点竖着走 kk 步,横着走 ll 步时的回文方案数。 然后跑动态规划时 f(i,j,k,l)f(i,j,k,l) 可以更新 f(i+1,j,k+1,l)、f(i+1,j,k,l+1)、f(i,j+1,k+1,l)、f(i,j+1,k,l+1)f(i+1,j,k+1,l)、f(i+1,j,k,l+

2015-04-23 15:38:15 2091

原创 【自用】OI知识点总结

看目录就好了。不用看具体部分网络流二分图最大匹配最小点覆盖最小边覆盖最小路径覆盖最大独立集最大流上下界最大流最小割全局最小割费用流上下界费用流线性规划转费用流最大权闭合图RMQ优化建图单纯形字符串相关hashKMP扩展KMPMa

2015-04-23 09:13:46 2564

原创 【BZOJ3996】【TJOI2015】线性代数 最小割

题解:题意部分注释:最终的矩阵 DD 长宽都1,所以其实要求的是一个数 首先 (A×B−C)×AT=A×B×AT−C×AT(A \times B-C)\times A ^ T = A \times B \times A ^ T - C \times A^T 然后发现 左边式子 AiA_i 和 ATj A^T_j 都选的时候才会得到 Bi,jB_{i,j} 的价值 如果 ATiA^T_

2015-04-22 20:35:13 1739

原创 【BZOJ4002】【JLOI2015】有意义的字符串 推公式+矩阵乘法

题解:公式推导部分:见大爷博客http://blog.csdn.net/popoqqq/article/details/45148309公式:fi=b×fi−1+ (d−b2)4ai−2 f_i=b \times f_{i-1}+\frac {~(d-b^2)} {4}a_{i-2}f0=2,f1=b f_0=2,f_1=b矩阵: ⎡⎣⎢fi 0 fi−10⎤⎦⎥= ⎡⎣⎢f

2015-04-21 18:58:50 1766

原创 【BZOJ4004】【JLOI2015】装备购买 线性基

题解:基本裸题,不写题解了。看这篇博客吧。 【BZOJ3105】【cqoi2013】新Nim游戏 线性基神马的 http://blog.csdn.net/vmurder/article/details/42560691 这篇博客没写拟阵部分,只写了线性基部分,刚刚好。 哎考试时时间都喂T2了。这种裸题竟然没去AC它哭死啊啊啊啊。对了,据BK说这道题可能卡精度,然后就需要一些黑科技。

2015-04-21 15:32:04 2862 2

原创 【BZOJ4003】【JLOI2015】城池攻占 可并堆

题解:傻题随便上数据结构都能搞过。 可并堆或者启发式合并splay都可以。 考试时状态太差一个裸模板启发式合并splay调了3h最后还爆零了Qwq、200行!!!!!! 然后可并堆又快又短,细节又少(然后特么也全都是模板内容,一点非模板代码都没有……),完虐启发式合并。另外这道题可以用 f(i,j)f(i,j) 表示 从点 ii 到其第 2j2^j 个父亲需要的最小战斗力,这种做

2015-04-21 14:29:02 2889

原创 【BZOJ1861】【Zjoi2006】Book 书架 Splay

题解:随便来一种数据结构就好啦。 这里写的是平衡树(一眼直接想到,而且发现很水)注意。。呃或许也不用太注意。 就是那个Insert操作要你干什么千万要看明白……代码:#include #include #include #include #define N 101000#define ls son[x][0]#define rs son[x][1]

2015-04-21 09:40:54 1598

原创 【BZOJ4007】【JLOI2015】战争调度 war 搜索

题解:暴力是什么样呢? O(21023)O(2^{1023}) 是也。 然后能过的算法是什么样呢?首先对于一棵子树,如果根节点到整棵树的根节点这一部分节点的【挂机/送人头】的状态已经确定了,那么左子树的最优答案和右子树的最优答案就都是独立的,所以我们在这个时候就可以对左子树和右子树分别进行搜索。然后 f(i,j)f(i,j) 表示节点 ii 里有 jj 个平民送人头 ※※ 且 ii

2015-04-20 09:27:37 3748 4

原创 【自用】二分图相关总结

概念:最大匹配:二分图上最大对数的点对使得对之间有连边,且任意两点对4个点之间互不相同 最大匹配:无视上面那条,其实就是你找一个点,然后给它连一个有边连过去且没匹配过的点,然后就称得到一个匹配。最大匹配就是匹配数最大是多少。 最大独立集:二分图上最大点数的子点集使得两两之间没有连边 最小边覆盖:二分图上最小条数的子边集使得所有点都被且仅被一条边覆盖 最小路径覆盖:拓扑图上最小条数的路径

2015-04-17 09:34:53 1171 1

原创 【BZOJ2303】【Apio2011】方格染色 异或方程+并查集

题解:首先我们发现对于 ai,ja_{i,j} 有下列式子: ai,j xor ai+1,j xor ai,j+1 xor ai+1,j+1==1a_{i,j} ~xor\ a_{i+1,j} ~xor\ a_{i,j+1} ~xor\ a_{i+1,j+1} == 1 然后推导得到对于 ai,ja_{i,j} 有下列式子: a1,1 xor a1,j xor ai,1 xor

2015-04-16 21:52:19 3378 2

原创 【BZOJ1912】【Apio2010】巡逻 树上最长链(才不是树的直径呢)

题解:对于 k==0k==0 的情况: 我们发现遍历一棵树最后回到原点,那么对于所有的边,我们都是走过去,再走回来。 答案 (n−11)(n-1对于 k==1k==1 的情况 设每条边长度为1,然后树上找最长链,然后这条链走过去就不再一步步往回了,直接从链底连一条边去链顶,然后链中间连的那些点,直接走过去再走回来,它们那些边的答案是不变的。 答案 (n−11)−(链长度)+1(n-

2015-04-15 17:47:41 2943 3

原创 【BZOJ2588】【Spoj 10628.】 Count on a tree 可持久化线段树+lca

题解:对于每个树上节点存一个版本的可持久化线段树,为它到根节点上所有权值的权值线段树(需要离散化)。 然后对于每次询问,这条链(a,b)的线段树就是:线段树a+线段树b−线段树lca−线段树falca线段树_a + 线段树_b - 线段树_{lca} - 线段树_{fa_{lca}} 然后线段树上求第k小啦。代码:#include #include #include

2015-04-14 22:05:17 2361

原创 【BZOJ2298】【HAOI2011】problem a 动态规划

题解:一句话 (a,b)(a,b) 可以理解成一个线段 (a,n−b](a,n-b] 。 然后排个序去下重,最后一个线段的权值 xx 就是表示 这 xx 人互不冲突,一起算。然后动态规划求若干条不相交线段的权值最大值,最后用总人数减去就行了。 fif_i 表示有 ii 人时最大权值。 fseqi→ r=max  (    fsi→ r    ,    fsi→ l+si→ x

2015-04-10 14:41:10 1363

原创 【BZOJ3922】Karin的弹幕 线段树&暴力

题解:我们对每个等差数列维护一棵线段树。 比如等差为 55 , nn 为 1717 ,则线段树内节点顺序为: 1,6,11,16,2,7,12,17,3,8,13,4,9,14,5,10,15。1,6,11,16,2,7,12,17,3,8,13,4,9,14,5,10,15。然后查询的时候到对应线段树内查询一段就好了。 然后等差太大 (>5)(>5) 就不用维护线段树了,数量不会太

2015-04-10 13:52:39 1436

原创 【BZOJ3943】【Usaco2015 Feb】SuperBull 最大生成树 Prim

题意:给n个数,然后每次可以选择一对尚存活的数,将其异或和加和到答案中,然后删掉其中一个数,直到只剩一个数为止。题解:花样教人理解最小生成树,一片苦心啊,不会最小生成树的可以从这开始理解2333。 对了,数据范围有点大,完全图 kruscalkruscal 多个 log log 估计过不去。代码:#include #include #include #include

2015-04-09 15:49:20 1643

原创 【BZOJ3940】【Usaco2015 Feb】Censoring AC自动机

题意:题意同BZOJ3942,不过要删除的串是多串 http://blog.csdn.net/vmurder/article/details/44959895题解:……思路一模一样,除了不用kmp用AC自动机代码:#include #include #include #include #include #define N 101000#define T 2

2015-04-09 15:11:58 1814

原创 【BZOJ3942】【Usaco2015 Feb】Censoring KMP

我猜的题意(已经AC):有一个S串和一个T串,长度均小于1,000,0001,000,000,设当前串为U串,然后从前往后枚举S串一个字符一个字符往U串里添加,若U串后缀为T,则去掉这个后缀继续流程。题解:用 KMPKMP 判断当前U串最后一个字母加进来以后有多少字符匹配。代码:#include #include #include #include #define

2015-04-09 14:42:07 2165

原创 【BZOJ3907】网格 组合数,补集转换

题解:     ~~~~~ 首先从 (0,0)(0,0) 到 (n,m)(n,m) 是右走 nn 步, 上走 mm 步。方案数是在 nn 个数中 n+1n+1 个空中插 mm 个数,组合数是Cmn+mC_{n+m}^m。      ~~~~~ 然后从中减去穿过 y=xy = x 这条线的那些方案数就好了。     ~~~~~ 但是这个很难求,而若要求 [ 不经过 ] 则就可以有特别的技

2015-04-08 18:03:22 2120

原创 【BZOJ3932】【CQOI2015】任务查询系统 可持久化线段树

题解:首先肯定要用线段树。 如果没有强制在线,那么直接把询问排个序然后按秩插入、删除、查询。普通线段树就好了,但是这道题强制在线,就需要可持久化线段树了。线段树的每个区间记录[x:这段区间有的权值总和]、[n:这段区间有多少个权值][x:这段区间有的权值总和]、[n:这段区间有多少个权值] 然后每个版本表示一个时间点的线段树。 这道题每个版本可能有多个节点被修改,所以我们可以先当成多

2015-04-08 10:44:20 1682

原创 【POJ3164】Command Network 最小树形图模板题 重修版

我以前的版本算法构造过程以及傻叉代码+弱版注释见以前博客 http://blog.csdn.net/vmurder/article/details/38819711最小树形图:名词解释:       ~~~~~~~其实就是有向图的最小生成树,然后需要有一个根(一般默认为1),如果是无根最小树形图,我们可以牺牲时间复杂度, O(n)O(n) 枚举根跑最小树形图。算法流程

2015-04-08 08:54:41 1822

原创 【BZOJ3931】【CQOI2015】网络吞吐量 最短路+网络流

题解:……两遍最短路然后判断哪些边可以在某条最短路上,然后加到网络流图中。 然后题意是一个点经过流量有限制,拆点就好。然后有重边Qwq(调了好久。。。) 然后或许有自环,不过这并不影响什么。代码:调试过程中代码风格已经狗一样。 看到 long long i;i#include #include #include #include #include #defi

2015-04-07 16:28:15 1594

原创 【BZOJ3916】【Baltic2014】friends 暴力

前言妈呀我调了两个多小时, 就特么因为一个运算符优先级的问题?……!!! 太弱了。你们D我吧,那道题的提交都是我刷上去的QwqQwq题解首先S串如果存在,一定是U串(长度姑且设为2n+1,偶数则直接impossible)的[1,n]或者[n+2,2n+1]。。 然后我们可以暴力匹配,允许一次失配(就是第一次失配就跳过接着匹配。) 然后如果匹配完全串了,就是一种可行S串。然后

2015-04-05 23:59:06 1808

原创 【BZOJ3926】【Zjoi2015】诸神眷顾的幻想乡 广义后缀自动机

链接:#include <stdio.h>int main(){ puts("转载请注明出处[vmurder]谢谢"); puts("网址:blog.csdn.net/vmurder/article/details/44891009");}题意、题解、数据、出题人标程http://wjmzbmr.com/archives/zjoi-2015-day-1%e9%a2%98%e8%

2015-04-05 20:51:43 2344

原创 【BZOJ3622】已经没有什么好害怕的了 动态规划+容斥原理

题解:首先我们给AA数组(糖果)和BB数组(药片)从小到大排个序。 lastilast_i 表示一个极大值 xx 使得 BxAiB_x 。 f(i,j)f(i,j) 表示枚举到第 AiA_i 时,有至少 jj 对匹配,使得 A∗∗∗>B∗∗∗A_{***}>B_{***} 然后枚举到 AiA_i 不代表也必须只能使用 BiB_i 以及其前的B数组元素。f(i,j)=f(i−1,j)+

2015-04-02 19:20:33 2746 3

原创 【BZOJ1095】【ZJOI2007】Hide 捉迷藏 线段树维护括号序列 数据结构的压缩。

题解:首先由于此题太神以至于我其实还不会这道题,所以不妨介绍一下括号序列维护树构。其实都是假的,就是一个点被扫到入栈的时候,序列加一个左括号,然后加入一个字符(可以不加),点出栈的时候就加一个右括号。然后两点间距离就是两点的在序列的位置中间那一堆括号里,删掉一些匹配的括号后的答案,比如 )(()()(()( ,最后就变成了 )(()(( ,表示左端点需要向上走一步,右端点需要向上走两步

2015-04-02 11:18:14 1677

原创 【BZOJ3901】棋盘游戏 局部暴枚取优

~~~貌似是wyfcyx以前出过的题?题解:      ~~~~~~那个首先暴力的话并不是O(217)O(2^{17}),而是O(217∗17)O(2^{17*17})。       ~~~~~~然后我们分析怎么过此题。      ~~~~~~首先我们发现其实搜索的话,有好几部分都是独立的。       ~~~~~~发现所有的方形都经过中间一行,所以我们可以先O(217)O(2

2015-04-01 01:43:28 1425

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除