进击的OIer
文章平均质量分 72
包括知识点讲解,相关题目。
Cynthia_wjyi
There is a hero if you look inside your heart.
展开
-
小Z的袜子【莫队算法】
莫队算法最经典的题目吧。 其实莫队算法比较像暴力。(你不写曼哈顿最小生成树还说人家暴力(逃 好吧,其实我用的不是标准的莫队算法,而是类似一种分块的思想 将块的大小保持在sqrt(n),可以证明时间复杂度为O(n^1.5) 貌似可以根据已知[l,r]的信息是否可以O(1)的推出[l+1,r]和[l-1,r]的信息来判断是否试用莫队算法。 对于小Z的袜子这道题,我们先离线的排序询问,左端点第一原创 2016-02-03 23:25:17 · 1861 阅读 · 1 评论 -
HNOI2012永无乡
[HNOI2012]永无乡 Description 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示。某些岛之间由巨大的桥连接,通过桥可以从一个岛 到达另一个岛。如果从岛 a 出发经过若干座(含 0 座)桥可以到达岛 b,则称岛 a 和岛 b 是连 通的。现在有两种操作:B x y 表示在岛 x 与原创 2016-01-30 21:09:46 · 2136 阅读 · 1 评论 -
KMP算法
KMP算法:指一种字符串匹配的算法。引子:其实就是根据字符串本身的性质判断若当前位置不匹配,则最少右移几位可以开始匹配。 比如字符串为babba,若最后一位不匹配则显然右移一位,两位均不可,但右移三位可以。因为前两个字符,和后两个字符相等。这样就大大减少了移动速度,匹配次数。算法具体实现过程:实现其实是一种图论的方法实现。之前的例子最后一位不成功,就要再从第三位开始比较,我们将这样的一种关系,叫做原创 2015-12-26 14:20:00 · 1477 阅读 · 1 评论 -
BZOJ1509: [NOI2003]逃学的小孩
1509: [NOI2003]逃学的小孩 Input 第一行是两个整数N(3 N 200000)和M,分别表示居住点总数和街道总数。以下M行,每行给出一条街道的信息。第i+1行包含整数Ui、Vi、Ti(1Ui, Vi N,1 Ti 1000000000),表示街道i连接居住点Ui和Vi,并且经过街道i需花费Ti分钟。街道信息不会重复给出。原创 2015-12-22 17:48:39 · 2011 阅读 · 0 评论 -
BZOJ 3174[Tjoi 2013]拯救小矮人
3174:[Tjoi2013]拯救小矮人 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯。即:一个小矮人站在另一小矮人的 肩膀上,知道最顶端的小矮人伸直胳膊可以碰到陷阱口。对于每一个小矮人,我们知道他从脚到肩膀的高度Ai,并且他的胳膊长度为Bi。陷阱深度为H。如果我 们利用矮人1,矮人2,矮人3,。。。矮人k搭一个梯子,满足A1+A2+A3+….+A原创 2015-12-22 17:24:03 · 1573 阅读 · 0 评论 -
#置换#Burnside引理Polya定理
置换可以看作是元素的全排列。 对于一种数列的置换,我们常常用循环节来表示。 如(1 3 4)(2 5)表示1->3,3->4,4->1 2->5,5->2. 上述置换中循环节的个数为2Burnside引理对于一个置换f,若一个着色方案s经过置换后不变,称s为f的不动点。将f的不动点数目记为C(f),可证明等价类数目为所有C(f)的平均值。经典问题向2*2的方格中涂色黑或白,问共有几种不同的原创 2015-12-18 18:55:18 · 1239 阅读 · 0 评论 -
NOI2005 BZOJ1500维修序列 Splay
1500: [NOI2005]维修数列 Input 输入文件的第1行包含两个数N和M,N表示初始时数列中数的个数,M表示要进行的操作数目。第2行包含N个数字,描述初始时的数列。以下M行,每行一条命令,格式参见问题描述中的表格。 Output 对于输入数据中的GET-SUM和MAX-SUM操作,向输出文件依次打印结果,每个答案(数字)占一行。 Sa原创 2015-12-16 15:35:30 · 978 阅读 · 0 评论 -
#三分法判断单峰函数最值#附加例题LA 5009
在白书上学到的有趣的知识。单峰函数即 先严格递增再严格递减 或 先递减再递增的函数三分法:取区间[L,R]两个三分点m1,m2. 比较两处的函数值,缩小范围,继续三分直到找出优解。 如下图所示: 这是一个下凸的函数,我们要找最小值 很明显m1的函数值要比m2小 这时我们就可以保证最小值在[L,m2]处取到。 继续递归下去,就可找到满意的解。 同理,上凸也如此。让我们看一道例题:白书原创 2015-12-14 20:53:26 · 3714 阅读 · 0 评论 -
BZOJ 1208: [HNOI2004]宠物收养所
1208: [HNOI2004]宠物收养所Description 最近,阿Q开了一间宠物收养所。收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物。每个领养者都希望领养到自己满意的宠物,阿Q根据领养者的要求通过他自己发明的一个特殊的公式,得出该领养者希望领养的宠物的特点值a(a是一个正整数,a<2^31),而他也给每个处在收养所的宠物一个特点值。这样他就能够很方便的处理整个领养宠物的原创 2015-12-07 21:28:42 · 954 阅读 · 0 评论 -
Treap学习基本入门
Treap标准学习模板1.treap的基本了解(1)splay与treap的区别Splay的旋转操作是将普通节点转到根 而treap是将根转为普通节点(2)treap的时空复杂度treap的各项操作时间复杂度均摊为O(logn)。 由于treap的指针写法容易出错,所以通常用数组代替。 通常要有以下几种: v[]——存放键值 rnd[]——存放随机出的优先级 l[],r[]——左右子树的原创 2015-12-04 17:17:03 · 2047 阅读 · 0 评论 -
国庆上课记录
Day1数据结构(上)一.堆例1:找N个数的中位数利用一个大根堆和一个小根堆。例2:合并果子反过来哈夫曼二叉树:将值最小的放在离跟最远的地方。例3:NOIDAY2t1 BZOJ4198k叉哈夫曼树,每次取k个最小的合并 如果N-1不能整除(k-1),就补重量为0的串二.单调栈每次压入一个数时将比它大的数弹出来。例1:BZOJ 1606从左往右看每个牛能看到的牛是一段连续的区间,第p头牛,从p+1,原创 2015-10-01 10:27:58 · 856 阅读 · 0 评论 -
关于字符串读入的总结
字符串读入1.cin>>str; //str可为字符类型和字符串 遇见空格或换行就停止。2.scanf("%s",str); //str为字符类型 遇见空格或换行停止。3.gets(str); //str为字符类型 gets()函数将接收输入的整个字符串直到换行为止或文件结束。4.getline(cin,str); //str必须是 str原创 2015-05-30 09:54:21 · 1224 阅读 · 0 评论 -
RMQ学习总结(附带简单例题)
RMQ (Range Minimum/Maximum Query)问题含义:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j,返回数列A中下标在i,j里的最小(大)值,也就是说,RMQ问题是指求区间最值的问题。时间复杂度:预处理时间复杂度O(n*log(n)),查询O(1)基础:dpF[i][j]表示从第i位起,2^j个数中的最值。那么dp的初值是什么? 显然原创 2015-08-07 18:11:48 · 3299 阅读 · 1 评论 -
LCA 三种 解决方法讲解 (附加例题)
LCA(Least Common Ancestors) 即最近公共祖先,是指这样一个问题:在有根树中,找出某两个结点u和v最近的公共祖先(另一种说法,离树根最远的公共祖先)。一、在线算法ST算法 所谓在线即输入一个询问,要立即返回答案,才可进行下一次询问。 基础:dp(即rmq) 时间复杂度O(nlogn+m+n) 步骤:1.将树看作一个无向图,原创 2015-08-14 16:40:57 · 4619 阅读 · 0 评论 -
有关lower_bound的比较函数
如果自己实现lower_bound的功能无疑是用二分实现。所以,lower_bound可以通过自定义比较函数来实现多种算法。比如,在一串数中找出比x大的数比较函数cmp1是这样定义的bool cmp1(int a,int b){return aint k=lower_bound(a+1,a+1+n,x,cmp1}-a;通过以上例子,可以明白比较函数中所要确定的范围的补集为t原创 2015-10-28 23:59:01 · 4171 阅读 · 0 评论