自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (1)
  • 收藏
  • 关注

原创 【BZOJ 4518】[Sdoi2016]征途 斜率优化dp

化简以后就是裸的斜率优化dp了,如果不清楚斜率优化的话推荐去写玩具装箱,倒不是简单一些,只是题目老一点,有很多关于斜率优化的介绍#include#include#include#define LL long longusing namespace std;LL f[3020][3020], sum[3020];int q[6020],n,m;double Q(int a,in

2016-12-29 17:26:23 218

原创 【BZOJ 1585】 [Usaco2009 Mar]Earthquake Damage 2 地震伤害 最小割

然后由于是求最少破坏数,还是比较好想得最小割模型,首先1号节点最为汇点,然后确定源点,因为题目是要求我们将给出的节点和1号节点分开,也就是要求出一条最小割将给出的点和1号节点隔开就好了,所以建立一个源点和所有给出的点连边容量为INF保证它不会被割掉就好了,然后拆点,给出的点一定是可行的所以边权为INF其他的为1,特别注意1号节点边权也是INF或者直接令1的入点为汇点,没了。#include#

2016-12-28 19:14:10 371

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

注意题目描述:叶子节点至于广义后缀自动机的话,额,在脑海里YY一下,其实我们的后缀自动机最终构造出来是一条链,然后旁边多了一些奇奇怪怪虚拟节点的对吧,那么我们每一条链其实可以代表不同的串,然后再把这些不同的串之间能够公用的部分合理公用(丧心病狂),得到一个类似于树形结构的东东,这个就是广义后缀自动机啦,唯一的区别就在于p和np的关系上,自己慢慢看吧。#include#include

2016-12-28 16:04:51 246

原创 【BZOJ 4199】[Noi2015]品酒大会 后缀自动机构造后缀树+dp

题面:http://uoj.ac/problem/131(BZOJ肿么了qaq)如果连后缀自动机为什么可以转成后缀树都不知道的,先去切3238差异:http://blog.csdn.net/pbihao/article/details/53905995我们先构造出后缀自动机,然后转成后缀树,在后缀树上跑dp,只用维护一个最大最小,和size就好了#include#include#inc

2016-12-28 14:41:17 605

原创 【BZOJ 3238】[Ahoi2013]差异 后缀自动机构造后缀树

关于后缀自动机的学习网上有很多,所以我就只说说为什么后缀自动机可以转成后缀树。个人觉得比较好的后缀自动机的博客:http://blog.sina.com.cn/s/blog_70811e1a01014dkz.htmlhttps://blog.csdn.net/litble/article/details/78997914图片来源:http://blog.sina.com.cn/s/bl...

2016-12-28 10:19:32 838

原创 【BZOJ 4516】 [Sdoi2016]生成魔咒 后缀自动机

可以拿来练一下版#include#include#include#include#define maxn 250020*2#define LL long longusing namespace std;int n,fail[maxn],len[maxn],tot,last,rt;LL ans;mapson[maxn]; void insert(int x){

2016-12-27 19:38:45 317

原创 【BZOJ 2152】聪聪可可 点分治

直接分治,然后dis对3取模,有且只有取模后为(1,2)或者(0,0)对答案有贡献加起来就好了#include#include#include#define maxn 20020using namespace std;int s[maxn],rt,size,f[maxn],n,m,dis[maxn],head[maxn],tot=1,vis[maxn],ans;int t[3];

2016-12-27 15:43:37 222

原创 【BZOJ 2599】 [IOI2011]Race 树的点分治

还是比较简单的树分治了吧(居然是ioi的题目,好开森qwq)。众所周知,在树分治的过程中是会有重复计算的,因此我们每一次处理当前子树的时候都会减去子树的影响,所以定义ans[i]数组表示经过i条边,距离长度为k的点对数,这样就可以++或者--来维护这个ans数组了,然后就没什么了吐槽:难道同一个点到一个点再走回来是合法吗?为毛要while(l#include#include#inc

2016-12-27 11:52:47 210

原创 【BZOJ 2653】middle 主席树好题推荐

谈谈这一道题的最强烈的感受在于,我的主席树入门是经典题目区间第k大树查询(当然,因为poj上不会强制在线,还用树套树和整体二分写过那道题),因此,对于主席树的理解仅仅是一个区间历史版本维护的理解,即类似于树套树的外层区间树内层全值树。但是忽略了主席树的真正伟大之处在于可持久化,而可持久化的也能是权值。对于这一道题,由于我们不知道中位数是多少,因此考虑二分,而关键之处在于如何二分cheak,可以

2016-12-25 21:36:18 506

原创 【BZOJ 2733】[HNOI2012]永无乡 启发式合并treap

大白上在介绍treap的时候有一道相似的例题,不过难一点的是他是拆桥,所以类似于银河星球大战里面的离线处理,倒着来,先拆开再合并。思路嘛,很简单,启发式合并treap。#include#include#include#includeusing namespace std;int n,m,fa[200020];int find(int x){return fa[x]==x?x:f

2016-12-20 17:13:31 255

原创 【BZOJ 2434】[Noi2011]阿狸的打字机 Ac自动机+树状数组+dfs序

很简单的想法是,建造Ac自动机以后,如果一个单词节点的fail指针指向另外一个字符串的路径上,那么它对两者之间会造成贡献,基于这样的想法,我们需要做的就是如何快速的求这个贡献。考虑反向链接fail指针每个节点只有一个出边所以将会是一个树,根据刚才的性质,根节点会对他的所有子树中的节点造成答案的贡献,然后维护dfs序,就能快速知道他的子树区间。最后统计答案的时候离线处理。对于一个串,将Trie数上的

2016-12-20 16:06:12 295

原创 【BZOJ 1014】[JSOI2008]火星人prefix hash+splay+二分

一开始以为会是后缀数组之类的什么鬼东西,结果最后想了半天没想出来,结果想到hash秒出答案,所以有的时候应该考虑换一下思维方式。因为题目要求查询和修改操作,维护一个splay,每个节点对应这个位置的字符和这棵子树的hash值,就能完成插入修改操作了,每一个询问的时候再二分最长前缀hash cheak就好了然后。。。有一个函数忘了写return值结果BZOJ一直说我T,我改了很多常数还是T,

2016-12-20 10:29:57 179

原创 【BZOJ 2337】[HNOI2011]XOR和路径 高斯消元+按位异或

Description看到是异或考虑按位来做,枚举二进制每一位,设f[i]表示从i到n的这一位为1的概率(虽然我也不知道为什么那么多博客说是期望)。然后显然f[n]=0(没有边可以走),f[i]=∑f[j]*1/d[i](边权这一位为0)+(1-f[j])*1/d[i](边权这一位为1)最后累计加上第一个点对答案的贡献即期望ans+=f[i]*(1#in

2016-12-19 19:01:51 243

原创 【BZOJ 1923】 [Sdoi2010]外星千足虫 高斯消元

1923: [Sdoi2010]外星千足虫Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 907  Solved: 582[Submit][Status][Discuss]Description Input第一行是两个正整数 N, M。 接下来 M行,按顺序给出 Charles 这M次使用“点足机”的统计结果。每行包含一

2016-12-19 17:01:33 182

原创 【BZOJ 2115】[Wc2011] Xor 线性基

环^链=链,所以找到一条从1到n的路径和很多很多环,这时候就可以任意异或了,异或和最大,然后用到线性基。#include#include#include#define cmax(a,b) ((b)>(a)?a=(b):1)#define LL long long#define maxn 200020using namespace std;int n,m,head[maxn],to

2016-12-19 15:37:30 203

原创 【BZOJ 2060】[BeiJing2011]元素 线性基

根据线性基的性质保证我们的任意序列构造的之间相互异或都不为0,所以贪心的来建,按照magic从大到小排序,然后从大到小构造线性基,对于每个加入线性基的元素对答案造成贡献#include#include#include#include#define LL long longusing namespace std;int n,ins[65];LL ans;struct node{

2016-12-19 12:09:23 285

原创 【BZOJ 1013】 [JSOI2008]球形空间产生器sphere 高斯消元

列方程后高斯消元即可#include#include#include#include#define eps 1e-6using namespace std;int n;double a[15][15],b[15][15];void solve(){ for(int k,i=1;i<=n;i++){ for(k=i;keps)break; if(k>n)continu

2016-12-19 11:53:56 144

原创 【BZOJ 1054】 [HAOI2008]移动玩具 bfs

水一下#include#include#include#includeusing namespace std;int vis[1000020],t,a[5][5];queue >q;const int dx[]={0,0,1,-1};const int dy[]={1,-1,0,0};const int e[5][5]={{0,0,0,0,0},{0,1,2,4,8},{0,

2016-12-18 17:19:23 298

原创 【BZOJ 1070】[SCOI2007]修车 费用流

先挖一个坑在这里,等什么时候心情好了再去填,zkw网络流:http://www.artofproblemsolving.com/community/c1368h1020435首先源点和每一个车建边,然后拆人的点,每个人拆成他本身倒数第i个修车的点,将车和人建边的时候费用就是k*a[i][j]也就是当前修车时间加上对后面修车的状态已影响就好了。最后向汇点建边,还用的是最简单的费用流,

2016-12-18 16:13:58 208

原创 【BZOJ 4245】[ONTAK2015]OR-XOR 二进制贪心

首先明确最后的结果运算下来只有一个数字,把他想象成二进制数的话,要使答案最小,就应该满足高位1竟可能的少用0来代替。维护一个异或前缀和,从高位开始枚举,当枚举的这一位为0的前缀和个数大于等于m且第n位也是0的时候当前位可以为0.然后标记所有的当前位为1的异或前缀在之后都不能划分#include#include#includeusing namespace std;#define L

2016-12-16 20:51:53 322

原创 【BZOJ 1861】[Zjoi2006]Book 书架 splay

建立一个splay维护书架的信息,开一个数组标记每一个编号对应的节点的指针就好了,没什么好说的#include#include#includeusing namespace std;int n,m;struct Tree{ int x,size; Tree* ch[2],*f; Tree(int a=0,Tree* e=NULL){ x=a,size=1,ch[0]=NUL

2016-12-15 22:05:41 179

原创 【BZOJ 2946】[Poi2000]公共串 后缀数组

Description        给出几个由小写字母构成的单词,求它们最长的公共子串的长度。任务:l       读入单词l       计算最长公共子串的长度l       输出结果 Input 文件的第一行是整数 n,1,表示单词的数量。接下来n行每行一个单词,只由小写字母组成,单词的长度至少为1,最大为2000。 

2016-12-13 16:13:42 265

原创 【BZOJ 2251】[2010Beijing Wc]外星联络 后缀数组

我的模板是用的大白上面的,但是比较坑的是,我发现例如aaaa求出来的sa数组并不正确,而这一道题中用哪个版也是过不了,找了很久发现在重新更新x数组的时候是需要判断是否越界的,改过来就对了,有点。。。。思路很简单,够着sa数组和h数组然后暴力统计#include#include#include#define maxn 3010using namespace std;int n,t1

2016-12-12 20:49:33 213

原创 【BZOJ 1691】[Usaco2007 Dec]挑剔的美食家 treap+贪心

首先对于所有的奶牛和草堆按照鲜嫩度排序,这样倒着枚举奶牛,动态插入所有大于等于当前美味度的草堆,这样在treap中维护的所有的节点都是合法的,然后就可以贪心的去找后继了。贪心的证明比较简单就不说了BZOJ上不能使用ctime函数库,但是不初始化种子的话特别容易挂,所以随便相乘取一下质数的mod就好了#include#include#include#include#define LL

2016-12-12 18:07:17 274

原创 【BZOJ 1492】[NOI2007]货币兑换Cash cdq分治+斜率dp

每一天的-a[i]/b[i]作为绿色的斜率k值,等价于求最右上的那条绿线与红线交点。维护一个凸包,将绿线一开始以k大小排序,这样一来就都具有单调性了,就可以使用斜率优化dp了#include#include#include#include#define maxn 100020#define eps 1e-9#define LL long long #includeusing n

2016-12-12 16:24:20 286

原创 【BZOJ 1176】 [Balkan2007]Mokia cdq分治

Description维护一个W*W的矩阵,初始值均为S.每次操作可以增加某格子的权值,或询问某子矩阵的总权值.修改操作数MInput第一行两个整数,S,W;其中S为矩阵初始值;W为矩阵大小接下来每行为一下三种输入之一(不包含引号):"1 x y a""2 x1 y1 x2 y2""3"输入1:你需要把(x,y)(第x行第y列)的格子

2016-12-12 16:14:55 206

原创 【BZOJ 3932】[CQOI2015]任务查询系统 主席树

好像真的没什么好说的,主席树维护一个差分就好了。#include#include#include#include#define maxn 100020#define LL long long#define find(a) (lower_bound(cur+1,cur+1+cnt,(a))-cur)using namespace std;LL n,m,rt[maxn*10],cu

2016-12-09 22:02:04 273

原创 【BZOJ 1031】 [JSOI2007]字符加密Cipher 后缀数组sa数组

第一道后缀数组的题目,思想很简单,首先断环为链,然后利用sa数组的排序功能排序这2*n个后缀最后直接输出就好了。我的版是刘汝佳先生大白上面的,并且附上自己的理解#include#include#include#define maxn 200010 using namespace std;char s[maxn];int t1[maxn],t2[maxn],c[maxn],sa[ma

2016-12-08 20:27:31 252

原创 【BZOJ 1503】[NOI2004]郁闷的出纳员 treap

做完这一道题以后我基本就郁闷了,BZOJ上不能用ctime一直re,删了就好了,没什么好说的裸的treap拿来练版#include#include#include#includeusing namespace std;int n,Min; struct Tree{ int r,size,x,times; Tree* ch[2]; Tree(int a=0,int b=0,Tr

2016-12-07 20:57:49 233

原创 【BZOJ 3110】 [Zjoi2013]K大数查询 整体二分+树状数组区间修改

额,只能说整体二分是一个很神奇的东西,首先既然是二分虽然加了一个整体听起来变得立马高大上起来,但是还是需要从最基本的二分思路出发才能理解。首先如果对于只有一次地查询操作的话我们很容易就可以想到二分的写法,二分权值然后加上cheak操作判断比当前大的值有多少个,然后不断缩小二分的区间直到最后l==r。类似的,在整体二分我们同样用到类似的思想,这里简单模拟一下操作过程,希望能帮组大家理解;首先用一

2016-12-07 19:52:17 1251 1

原创 【洛谷】线段树 树状数组区间修改区间查询

在做一道整体二分的题目的时候遇到了这种区间修改区间查询的树状数组,感觉用起来手感不错就拿来了。证明的话,那其实不重要,会用就好了#include#include#include#define maxn 500000#define LL unsigned long longusing namespace std;int n,m;LL a[maxn],sum[maxn],c1[max

2016-12-06 22:10:45 797

原创 【BZOJ 1030】[JSOI2007]文本生成器 Ac自动机+fail树上dp

这道题要简单一些,其实我想提的是大白在介绍Ac自动机的时候引入的例题,刚刚看了一下,在P217 字串那道题,有相似之处,都是构造出fail树然后树上跑dp,唯一区别在于那道题是概率dp,很好的题目。思想:首先,我们明确如果直接求有多上符合条件是非常麻烦的,所以我们采用逆向思维,求出所有不合法的方案然后用总的方案减去不合法的方案。至于怎么求不合法的方案,首先构造出fail树,然后当我们每随机生成

2016-12-06 09:36:09 357

原创 【BZOJ 3172】[Tjoi2013]单词 Ac自动机

回顾了一下Ac自动机,额,顺便重新背个版,原来那个这道题要被卡这道题题意有点模糊,意思就是要你找到每一个单词出现的次数,其中他可以作为其他单词的连续字串出现例如样例中a自己本身出现了一次在aa中出现2次aaa中出现3次一共6次,同理aa本身出现一次在aaa中出现2次一共3次。解法比较裸,根据刚才的题意,所以每一个单词只要他能作为另外一个单词的一段就能对答案贡献为一而在Ac自动机中的fail

2016-12-04 17:02:24 216

原创 【BZOJ 1014】 [ZJOI2008]骑士 树形dp

n个点n条边,虽然不是一个树但还是很接近了,想象一下如果只有n-1条边的情况那么就可以直接套最大独立子集了,so easy。但是这一道题居然环,先别怕,因为只是多了一条边所以即使构成环那么最多只有一个环,只需要找出来,断掉一条边就是一个树了,然后以这条边两边的节点为根做最大独立子集,规定两个节点均不可选情况下的最大值,最后,注意题目中的可能是一个森林#include#include#inclu

2016-12-04 15:01:43 249

opencv3.4.1

虽然opencv可以直接在官网上下载,但是很坑的是opencv3居然不能直接用surf特征检测,之前需要一系列的准本工作,所以分享了这个压缩包可以直接使用

2018-09-28

空空如也

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

TA关注的人

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