Luogu
ff_666
开心最好。。但现在正是奋起之时!!!
展开
-
LOJ2012(BZOJ4567)(Luogu P3294)
LOJ2012这题目描述的逻辑真是。。优秀 题目意思为(假设当前单词第x个学):如果有/为当前串的后缀/的单词/且没学,代价为N*N如果没有/为当前串的后缀/的单词/,学它的代价为x如果有/为当前串的后缀/的单词/,则代价为x-y(最近学的)把单词倒着存,后缀就变成前缀,可以用Trie维护假如定义“空”为所有单词后缀,则2可以看成是特殊的1 1的代价太恐怖,所以肯定要避...原创 2018-08-23 15:00:48 · 473 阅读 · 0 评论 -
LOJ10068(BZOJ1977)(Luogu4180)
LOJ10068这是严格次小生成树的模板题~~我们首先考虑非严格次小生成树: 可以证明,只要更改原图一条边就是满足条件的最优解: 首先我们假设加入一条边E,则最小生成树上形成了一个环,贪心的想法,我们会选择环中最长的一边替换掉假如再添加一条边E_(显然E_>=E)若E_不在该环中,由于原图已为最小生成树,答案绝不会变小若E_在该环中,由于E_>=E,答案也不会变...原创 2018-08-24 11:16:01 · 266 阅读 · 0 评论 -
LOJ10133
LOJ10133现在才发现写LOJ10068大材小用了。。 不过想法就是那篇。。#include<bits/stdc++.h>#define gt() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1000000,stdin),p1==p2)?EOF:*p1++)#define Up up[x][i-1]#define LL l...原创 2018-08-24 12:31:54 · 254 阅读 · 0 评论 -
LOJ10070(BZOJ1016)(JSOI 2008)
LOJ10070这题,需要知道最小生成树三定理 然后就很简单了。。 对于每种相同边权进行2102102^{10}的枚举,乘法原理统计答案。。#include<bits/stdc++.h>#define gt() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1000000,stdin),p1==p2)?EOF:*p1++)usi...原创 2018-08-24 15:04:08 · 163 阅读 · 0 评论 -
LOJ10059(BZOJ3940)(Luogu3121)【USACO 2015 Feb. Gold】
LOJ10059这题,乍一看,不就是LOJ10048嘛? 然后有N个单词。。多个KMP——AC自动机!!! 然后构造出这样的AC自动机:if(AC.c[x][i]) AC.nxt[que[++tal]=AC.c[x][i]]=AC.c[AC.nxt[x]][i]; else AC.c[x][i]=AC.c[AC.nxt[x]][i];就可以写个栈一路走就好了。。...原创 2018-08-25 09:41:47 · 558 阅读 · 0 评论 -
LOJ10061(BZOJ1195)(Luogu2322)【HNOI 2006】
LOJ10061N这么小,果断状压 那么构造AC自动机,直接暴力枚举添加字符即可。。 并且别忘了将nxt[x]的状态传递过来 ——因为如果当前串已经出现,那么nxt[x]也一定出现 所以就在构造AC自动机时加一句话:void getnxt(){ int hed=0,tal=0,x,i; for(int i=0;i<26;i++) if(AC.c[0][i]...原创 2018-08-25 13:00:51 · 166 阅读 · 0 评论 -
LOJ10062(BZOJ2938)(Luogu2444)【POI 2000】
LOJ10062这题我们反向思考: 假如我们造出了一个无限串,在AC自动机上匹配,会发现什么? 显然,不会到达任意一个“有毒点”,所以会在有毒点之前借助nxt往回跳 然后既然是无限长,那么肯定会卡在某个环里 所以就可以**从根开始**DFS找环就好了。。 PS:不要忘记构造AC自动机时“有毒点”的向下转移! 复杂度:玄学,O(能过)O(能过)O(能过),有了重复标记大概为O(∑|S...原创 2018-08-25 14:10:54 · 160 阅读 · 0 评论 -
LOJ10063(BZOJ1030)(Luogu4052)【JSOI 2007】
LOJ10063这题,不就是给你N个单词,在26N26N26^N个文章里查嘛 然后肯定建好AC自动机后,考虑计数DP 正难则反,我们定义这样的DP: F[k][x]表示走了k步,走到Trie上的第x个节点,且严格组成“火星文”的方案数 ——那么显然,当儿子可走时累计答案:F[k+1][son]+=F[k][x]F[k+1][son]+=F[k][x]F[k+1][son]+=F[k][...原创 2018-08-25 15:15:33 · 171 阅读 · 0 评论 -
Luogu1196【NOI2002】
Luogu1196这种题目,显然用并查集路径迭代(带权并查集) 就有点像给并查集定向,维护连通块大小与到老祖宗的距离 这样类似差分一样就可以解决很多有关距离、个数的问题。。 具体实现只要自己画个图就很容易推了,一般都这样实现: (显然无法按秩合并)int getfa(int x){ if(fa[x]==x) return x; int k=fa[x]; fa...原创 2018-08-25 16:02:22 · 393 阅读 · 0 评论