POJ
Roll_Keyboard
这个作者很懒,什么都没留下…
展开
-
POJ 1743 Musical Theme(二分+后缀数组)
题意:求不重叠的最长相同变化的子串的最长长度,比如1 2 3 4 5 6 7 8 9 10,最长长度为5,因为子串1 2 3 4 5 和 6 7 8 9 10变化都一样的思路:男人八题之一,然而poj上a了都一万多了。。。。 思路在论文里面讲的很清楚了(其实应该是一个区间最大sa减去最小sa大于k,而不是大于等于,dicuss有人说了这个问题,我也是这么认为的,不过因为poj数据太水导致都能过)。原创 2017-11-08 17:03:32 · 259 阅读 · 0 评论 -
POJ 1741 Tree (树分治)
题意:一颗有边权的树,问有多少对点距离和小于k思路:树分治 我们取一颗树的重心,算出所有点到这个点的距离,然后我们就能通过排序去o(n)地找出有多少对是满足的,但是这样很明显有的对是不正确的,就是这两个点的lca并不是当前重心的时候 我们可以想到,当且仅当两点在同一以重心儿子为根的子树中,才能发生错误,我们就可以单独求一次某个子树的不符合数量即可 然后我们删去当前重心,继续去看拆掉重心后的子树原创 2018-04-12 21:21:30 · 158 阅读 · 0 评论 -
HDU 3397 Sequence operation(线段树区间更行)
题意:给你一个01的串,有五种操作,第一种,将某个区间覆盖成0,第二种,将某个区间覆盖成1,第三种,将某个区间取反(即0变1,1变0),第四种,问某个区间1的个数,第五种,问某个区间最长连续的1的长度思路:超级超级超级麻烦的区间更新 首先,对于1,2,4操作,都是基础线段树的操作,5是基础区间更新的操作,但是此时多了一个3操作,导致写起来直接麻烦了很多 首先因为有异或和区间覆盖,我原创 2018-02-06 08:38:22 · 335 阅读 · 0 评论 -
POJ 3667 Hotel (线段树区间合并)
题意:一个旅店,有n个房间,接下来会住进一些人,每个人要一段连续的房间,如果有多个,要编号最小的,同时也可能会出去一些人,每次都是出去一个区间的人思路:区间合并的模板题 区间合并其实很简单,以前我们对于父亲更新儿子,会用lazy来减少操作。用儿子更新父亲,也只是一些很简单的相加什么的,区间合并,是因为儿子对父亲产生的影响变得更加复杂,比如这个题目,左右儿子都需要维护的是区间,而在合并的时候,左右儿原创 2018-02-05 23:31:56 · 184 阅读 · 0 评论 -
POJ 2991 Crane (线段树+数学)
题意:给你一个机械臂,每次操作某个节点,改变它的度数,问机械臂每次操作完后末端的坐标思路:首先,要求最后一个点的坐标,我们可以把机械臂每段都看作一个向量,如果所有向量都首尾相连且都指向末端,那么我们最后横坐标的和,纵坐标的和就分别是机械臂的x坐标和y坐标了而我们每调整某个角度,我们能发现,对于后面每个点都能够产生一定的影响,每个角度的变化是一样的,但是因为长度不同,所以对坐标的影响不同,那么我们只要原创 2018-02-05 23:21:06 · 281 阅读 · 0 评论 -
POJ 1436 Horizontally Visible Segments(线段树)
题意:给你一堆平行于y轴的线,如果两条线之间能够有一条平行于x轴的线直接相连,就说这两条线是可见的,现在给你n条线,问有多少组线,每组要求三条且两两可见思路:首先离散所有y轴的点,然后按照x轴排序,这样我们不断地更新线段树,每次先看看能看到那些线段,再把当前这条线更新进去,就能知道某条线与哪些其他线两两可见,最后暴力地看有多少组即可(虽然最差的时候我们我们每次查询都要查到最下面,但是因为时间限制比较原创 2018-02-05 23:13:30 · 191 阅读 · 0 评论 -
POJ 2528 Mayor's posters (线段树+离散)
题意:往高度为1的广告牌上贴广告,广告之间能覆盖,问最后能看见几个思路:复习线段树就又写一遍,发现用STL离散和补点非常方便,就是跑得满了很多错误及反思:代码:#include<cstdio>#include<algorithm>#include<cstring>#include<vector>using namespace std;#define lson l,m,rt<<1#defi原创 2018-01-29 10:02:44 · 203 阅读 · 0 评论 -
POJ 3237 Tree(树链剖分)
题意:一棵树,每个边都有一个权,现在进行一些操作,将某个边变成x,将某段边取反(就是都变成自己的相反数),查询某个区间的最大值思路:比较有意思的一个题,主要是维护线段树的时候比较有意思,我们要建立两颗线段树,一个维护最大值,一个维护最小值,在取反的时候,用lazy维护的同时,两个线段树的节点都取反然后交换,这样我们就能通过一颗维护最小值的线段树实现了维护最大值的线段树了错误及反思:看到dicuss一原创 2018-01-28 20:44:07 · 240 阅读 · 0 评论 -
POJ 2763 Housewife Wind (树链剖分)
题意:给你n个点的树,每个边有个权值,开始处于点m,现在有q次操作,每次单点修改或者将点移动到u,对于每次移动输出经过路程的权值思路:树链剖分的基础题,不同点在于每次记得更新点时候把点的更新即可错误及反思:C++跑了1700,G++跑了2200,hdu上faq说过G++处理大量输入的时候会代码:#include<cstdio>#include<algorithm>#include<cstring原创 2018-01-28 18:47:11 · 205 阅读 · 0 评论 -
POJ 3225 Help with Intervals(线段树)
题意:官方有中文思路:首先要处理括号的问题,那么我们就可以离散下坐标,让每个坐标扩大两倍来表示,这样就能解决括号的问题了。 U:把区间[l,r]覆盖成1 I:把[-∞,l)(r,∞]覆盖成0 D:把区间[l,r]覆盖成0 C:把[-∞,l)(r,∞]覆盖成0 , 且[l,r]区间0/1互换 S:[l,r]区间0/1互换 线段树的值1,0表示这一段全为0或者1,-1表示无法确定,只要加一个原创 2018-01-31 16:21:48 · 182 阅读 · 0 评论 -
POJ 2406 Power Strings(后缀数组或KMP或扩展KMP)
题意:给你一个字符串求最多循环了多少次(这个题保证了最后一个循环节是完整的)思路:就是求最小循环节,这个问题可以用后缀数组,KMP,扩展KMP都能做出来,不过我个人觉得求最小循环节还是扩展KMP最好写了,KMP其次,后缀数组搞这个反而有点多余。。。不过既然论文提到了后缀数组的写法,那就写写好了 首先是扩展KMP,在求出扩展KMP的next数组后,找到第一个next[i]+i==lennext[i]原创 2017-11-13 21:02:18 · 310 阅读 · 0 评论 -
POJ 3261 Milk Patterns(二分+后缀数组)
题意:找出出现k次的可重叠的最长子串的长度思路:论文的一道题,就跟论文思路一样,二分长度,根据height将后缀分成很多组,如果有一组出现了k次以上,就存在这个长度的符合题意的字串。错误及反思:代码:#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int N = 20100;int原创 2017-11-08 21:11:52 · 204 阅读 · 0 评论 -
POJ 3740 Easy Finding (DLX)
题意:精确覆盖,DLX模板题思路:这个博客写的不错 刚刚开学DLX,感觉是个很简单的东西,只能算是十字链表优化了DFS,所以理论上有些DLX题目的有些题目应该DFS也能水过去 去看板子,发现所有人的板子都几乎一模一样。。。错误及反思:代码:#include <iostream>#include <stdio.h>#include <string.h>const int MN = 1005;/原创 2018-05-01 14:23:02 · 176 阅读 · 0 评论