自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Serene

辣鸡模板库

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

原创 博客已移到http://www.cnblogs.com/Serene-shixinyi/

由于新版的csdn太丑,决定将此博客废除。移至http://www.cnblogs.com/Serene-shixinyi/

2017-09-25 17:04:08 538 1

原创 最基础模板复习(持续更新)

快速排序(不知道有什么用)void qsort(int l,int r) { int i=l,j=r,mid=a[(l+r)>>1]; do { while(a[i]<mid) i++; while(a[j]>mid) j--; if(i<=j) { swap(a[i],a[j]);

2017-08-30 15:49:52 376

原创 数据结构入门9—虚树

原本以为K-D Tree比虚树难,但是后来发现虚树反而难理解一些。主要是关于找LCA的问题。假如我们有一些点是一定要在虚树里的,那么需要保证他们任意两点的LCA也在虚树里,否则树的结构就改变了。那么就需要用到dfs序了。我们求得每个点的dfs序,然后把这些点按dfs序排序,那么他们所有的LCA肯定是排序后某相邻两点的LCA。这个是可以证明的,我就不证了。然后找到LCA之后就是找每个

2017-08-25 21:16:54 1750

原创 数据结构入门8—K-D Tree

k-d树是一种分割k维数据空间的数据结构。主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索)。K-D树是二进制空间分割树的特殊的情况。以上来自百度百科。其实就是一颗二叉树,用于处理多维空间问题,假如有三维,这棵树在第一层以x坐标来分左右子树,第二层以y坐标来分左右子树,第三层z坐标,第四层x坐标,第五层y坐标。。。每次坐标取中位数作为子树的跟是最好的。它可以用于高效查询距离最

2017-08-25 20:53:54 265

原创 数据结构入门7—左偏树

一种可并堆,具有左偏性质。每个点有一个距离。距离则是如下定义的: 节点i称为外节点(externalnode),当且仅当节点i的左子树或右子树为空( left(i) = NULL或right(i) = NULL );节点i的距离(dist(i))是节点i到它的后代中,最近的外节点所经过的边数。特别的,如果节点i本身是外节点,则它的距离为0;而空节点的距离规定为-1 (dist(NULL

2017-08-17 10:52:21 232

原创 初学manacher

求最长回文子串的有力工具。按照一般的暴力判断方法,我们可以枚举每一个中点,然后从这个位置暴力向两边拓展。但是实际上我们可以重复利用已经求得的信息,使期望复杂度接近O(n)。我们设 rad[ i ] 表示以i为中心的回文串的长度的一半(向下取整),那么这个回文串的右端点就是 i+rad[i],左端点就是 i-rad[i]。为了避免分类讨论回文串长度的奇数偶数的情况,我们在每两个点之间

2017-08-12 14:29:50 171

原创 初学后缀数组

后缀数组就是把一个字符串的后缀排序,然后就可以再乱搞一些东东。DC3看着就累,还是倍增好。当初看代码觉得虽然不长但是理解起来并不容易,各种数组有各自的意义很容易搞混。特别是要理解基数排序。每次按第二关键字排序再按第一关键字排序,可以保证在第一关键字相同时第二关键字的大小关系也正确。白书上的数组有s(字符串)、sa、x、y、c,计算height还用到了rank。我的代码是照着白书

2017-08-11 17:00:30 277 1

原创 数据结构入门6—文艺平衡树(Splay)

早就听说 Splay 就是不管干什么都Splay一下就可以了,但是听说傻可开脑洞打代码打了250行,惊恐。于是先学treap结果没想到一调试就搞了三个月。但是其实写过treap再学Splay就相对容易一些了。那就先学只有区间翻转的文艺平衡树。一开始一直弄不懂它的翻转操作,感觉很迷。但是其实和treap很像,只不过是以翻两下为一组,然后每次Splay把节点旋到指定位置。在三点一线的时

2017-08-11 14:19:41 1000

原创 数据结构入门5—分块

发现分块真的是一个好东西,就是优化过后的暴力啊。当修改的时间复杂度为O(n)而查询复杂度为O(1)或修改O(1)查询O(n)时用分块就可以转化为修改查询都是O(sqrt(n))的。虽然比log n要差一些,但是分块真的很好写啊。。比如一道LCT模板题 弹飞绵羊 //Serene#include#include#include#include#include#includ

2017-08-11 10:39:46 390

原创 数据结构入门4—权值线段树

一开始还以为是什么高级东东。就是一个线段树,只不过下标是代表数字的值。来看一个经典问题(来自http://blog.csdn.net/loi__dijiang/article/details/49449375)题目描述 Description 给定一个序列a1,a2,…,an,如果存在i小于j并且ai大于aj,那么我们称之为逆序对,求逆序对的数目数据范围 

2017-08-08 11:57:10 3293

原创 数据结构入门3—莫队算法

分治一类的算法大多只能在离线时使用。莫队算法就是只能在离线下用。先看一道模板题:小Z的袜子Description作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿。终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……具体来说,小Z把这N只袜子从1到N编号,然后从编号L到R(L 尽管小Z并不在意两只袜子是不是完整的一双,甚至不在

2017-08-08 11:44:34 213

原创 数据结构入门2—主席树

听说划分树能解决的问题主席树基本都能解决,感觉主席树好理解又好写(至少比那些乱七八糟的平衡树亲切多了),干脆就不学划分树了qaq%%%lljakfather所有题都是主席树模板题其实就是可持久化线段树啦。假如一个序列有n个数,有m次修改。首先我们想一想最暴力的方法就是建m颗线段树,虽然想想就心累,空间很难开的下。然后发现有些节点其实是可以多次利用的,于是把儿子指针迁过去就行啦(

2017-08-07 22:06:10 296 1

原创 数据结构入门1—Treap

debug3个月把洛谷刷屏,终于过了。。。。(一开始写了两百行,后来看了大孙代码才搞点小技巧改短了些)treap,树堆,是指有一个随机附加域满足堆的性质的二叉搜索树,其结构相当于以随机数据插入的二叉搜索树。其基本操作的期望时间复杂度为O(logn)。相对于其他的平衡二叉搜索树,Treap的特点是实现简单,且能基本实现随机平衡的结构。我们可以看到,如果一个二叉排序树节点插入的顺序是随机的,这样我

2017-08-07 21:51:04 216

原创 斜率优化

几个月前刚开始被拉去和高二一起学这个东西,感觉好高大上啊。。。然后前几天碰到一道,觉得似乎可以理解一些了(其实是因为我的草稿本终于可以派上用场了),于是就下定决心要学了。其实蛮好理解的。假如给你一条直线y=kx+b,告诉你k,还有一些点,让你求过这些点的能得到的最大的b。假如kk>0同理。假如k (于是,当我们在做dp题的时候,遇到各种各样奇葩的转移方程式的时候,就可以把转

2017-07-29 17:02:59 279

原创 BZOJ1260涂色paint

Description假设你有一条长度为5的木版,初始时没有涂过任何颜色。你希望把它的5个单位长度分别涂上红、绿、蓝、绿、红色,用一个长度为5的字符串表示这个目标:RGBGR。 每次你可以把一段连续的木版涂成一个给定的颜色,后涂的颜色覆盖先涂的颜色。例如第一次把木版涂成RRRRR,第二次涂成RGGGR,第三次涂成RGBGR,达到目标。 用尽量少的涂色次数达到目标。Input输入

2017-07-14 21:21:00 168

原创 树状数组

树状数组需要一个一维数组,t[pos]表示以pos为最右端点长度为lowbit(pos)的区间的和如果要改变pos位置的值,与pos位置的值有关的第一个就是t[pos], 第二个是t[pos+lowbit(pos)]:任意pos1(pospos,因为lowbit(pos1)所以t[pos1]所对应区间的左端点一定大于pos。而lowbit(pos+lowbit(pos))>

2017-06-05 14:24:21 203

原创 初学树剖的一些理解

省选前刚学了树剖的模板,感觉刚学时看网上的讲解觉得十分头晕,似乎又有很多的乱七八糟的数组,代码又很长,省选真的考到树剖也没能敢打。现在把对树剖的一些理解写下来,毕竟刚学,理解不一定准确,也可能会有一些错误,欢迎各位大佬评论自己的见解或指出我的错误。 树链剖分,就是把树放进线段树里。既然是放在线段树里了,那么求最大值求和还有修改等等都能实现。字面上来说,树链,是树上的路径;剖分,就是把路

2017-04-26 12:14:27 1260

原创 SCOI2017酱油记

很多大佬进队之后写酱油记,感觉对我来说满满的都是嘲讽。。。作为一个高一水军,感觉主要来成都耍的,毕竟考前也没有停课,而且很久都没有打代码了,到成都后又天天水,所以根本就没有想过要争取进队。但是想到明年这个时候就要认真考省选了,觉得还是记录一下这一次打酱油的过程。。。Part 1 电子科大附中培训: 老张非要让我们坐前排。很尴尬的事情就是每次老师问有这题想法没,我们应该怎么回答? 第一天最短

2017-04-10 13:20:00 811

原创 插头dp-基于连通性,维护轮廓线的状压dp

1*2砖填充矩形,问多少种方案数,一格一格转移而不是一列一列转移http://blog.csdn.net/fp_hzq/article/details/6427072代码很短,但需要认真思考理解

2017-04-05 16:16:41 320

原创 装满水的气球 Dropping water balloons

你有k个一模一样的水球,在一个n层楼的建筑物上进行测试,你想知道水球最低从几层楼往下丢可以让水球破掉。你想丢最少次水球来测出水球刚好破掉的最低楼层。(水球可能在顶楼也不会破)你可以在任意楼层丢下水球来测试,如果水球没破,你可以继续用它。输入的每一行包含多组测试,每组测试为一行。每组测试包含两个整数 k 和 n, 1 对于每次测试,输出在最糟情况下,测出水球破掉楼层的最少次数。如果多于63次

2017-03-28 21:33:02 413

原创 20个问题 Twenty Questions

状压dp 记忆化搜索s表示当前已经询问的特征,x表示目前物品已经询问过的特征中所具备的特征//Serene//紫书p287 20个问题 Twenty Questions #include#include#include#include#include#includeusing namespace std;const int maxm=12,maxn=(1<<7)+10,I

2017-03-28 11:12:08 618

原创 树的最长路

描述上回说到,小Ho得到了一棵二叉树玩具,这个玩具是由小球和木棍连接起来的,而在拆拼它的过程中,小Ho发现他不仅仅可以拼凑成一棵二叉树!还可以拼凑成一棵多叉树——好吧,其实就是更为平常的树而已。但是不管怎么说,小Ho喜爱的玩具又升级换代了,于是他更加爱不释手(其实说起来小球和木棍有什么好玩的是吧= =)。小Ho手中的这棵玩具树现在由N个小球和N-1根木棍拼凑而成,这N个小球都被小Ho标上了

2017-03-27 16:12:33 291

原创 求树的重心

DescriptionConsider a tree T with N (1 <= N <= 20,000) nodes numbered 1...N. Deleting any node from the tree yields a forest: a collection of one or more trees. Define the balance of a node to be

2017-03-27 15:30:05 210

原创 切木棍 Cutting Sticks

简单的dp//Serene//紫书p278 切木棍 Cutting Sticks #include#include#include#include#include#includeusing namespace std;const int maxn=50+10;int l,n,p[maxn],dp[maxn][maxn];int aa;char c;int read()

2017-03-27 14:35:56 464

原创 最优矩阵链乘 Multiplication Puzzle

Multiplication PuzzleTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 9697 Accepted: 6023DescriptionThe multiplication puzzle is played with a row of car

2017-03-27 12:48:49 224

原创 划分成回文串 Partitioning by Palindromes

简单的dp//Serene//紫书p275 划分成回文串 Partitioning by Palindromes#include#include#include#include#include#includeusing namespace std;const int maxlen=1000+10;int n,j,len;bool sf[maxlen][maxlen];int

2017-03-27 11:17:46 481

原创 最长严格上升子序列O(nlogn)算法

相当于二分,len表示当前最长的长度,maxl[i]表示长度为i的严格上升子序列最后一个数的最小值。满足如果i//Serene//最长严格上升子序列O(nlogn)算法#include#include#include#include#include#includeusing namespace std;const int maxn=5000+10,INF=2e9;int n,d

2017-03-26 17:32:21 677

原创 Codevs1013 单词背诵

不知道哪根筋抽了,用map写Hash,long long就可以满足Hash了,开心!!//Codevs3013 单词背诵 //Serene#include#include#include#include#include#include#includeusing namespace std;const int maxn=1000+10,maxm=100000+10,INF=max

2017-03-21 20:39:05 334

原创 生成排列 Generating Permutations

逆向思考。操作1不变,操作2等价于将尾部数字放到头部,这样最后只需要逆序输出操作序列即可。具体做法把序列看作环状的,每次操作2就等价于移动头部的位置,用操作1每次维护头部的最小元素,再执行操作2。这个过程类似于排序,当a[0]==1或n时就不做操作1(a[0]==n时这时的头部进行多次操作2最终会变为尾部)。//紫书P254 生成排列 //Serene#include#include#

2017-03-07 21:59:45 343

原创 奖品的价值 Erasing and Winning

//紫书P253 奖品的价值 //Serene#include#include#include#include#include#include#include#includeusing namespace std;const int maxn=1e5+10;int n,d,r;int a[maxn];deque Q;int aa;char c;int read()

2017-03-07 20:41:13 241

原创 比特变换器 Bits Equalizer

//紫书p253 比特变换器 //Serene#include#include#include#include#include#includeusing namespace std;int Q,s[110],r1,r2,r3,r4,ans;char hh[120];int main() { scanf("%d",&Q); for(int qaq=1;qaq<=Q;++q

2017-03-07 17:38:30 320

原创 聚会游戏 Party Games

这题主要要注意细节问题,特别是排序后a[n/2]的长度>a[n/2+1]的情况和有后面有Z的情况下面给个用来调试的样例:INPUT:2ABCABB2ABCABBA2ABCABBZAB2ABBZZAABC0OUTPUT:ABBABBAABBZBABBZZA//紫书P253聚会游戏//Serene#include#i

2017-03-07 16:30:27 479

原创 装箱Bin Packing

//紫书P253 装箱//Serene#include#include#include#include#include#includeusing namespace std;const int maxn=2e5+10;int Q,n,l,w[maxn];bool vis[maxn];int aa=0;char c;int read() { aa=0;c=getchar(

2017-03-07 13:07:48 426

原创 洞穴 Cave

//紫书P249洞穴Cave//Serene#include#include#include#include#include#includeusing namespace std;const int maxn=1e6+10;int Q,n,fl[maxn],ce[maxn],ans[maxn];int aa=0;char c;int read() { aa=0;c=ge

2017-03-07 10:30:12 389

原创 Shuffle的播放记录Shuffle

//紫书P247//UVA12174Shuffle//Serene#include#include#include#include#include#includeusing namespace std;const int maxn=100000+10;int T,s,n,a[maxn],visnum[maxn],l=0;bool visans[maxn];int

2017-03-06 20:30:53 232

原创 防线Defense Lines

//紫书P242//UVA1471Defense Lines//Serene#include#include#include#include#include#include#includeusing namespace std;const int maxn=2e5+10;int t,n,a[maxn],f[maxn],g[maxn];

2017-02-28 15:38:21 222

空空如也

空空如也

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

TA关注的人

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