随笔分类 - ACM-线段树
摘要:题意:维护一个有序数列{An},有三种操作:1、添加一个元素。2、删除一个元素。3、求数列中下标%5 = 3的值的和。解题思路:看的各种题解,今天终于弄懂了。由于线段树中不支持添加、删除操作,所以题解写的是用离线做法。我们来看它是如何解决添加、删除的问题的。首先将所有出现过的数记录下来,然后排序去重...
阅读全文
摘要:卡n^2,用线段树降到nlogn记录每个点上所覆盖线段的次小值,保证能有两条路径能走 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std;...
阅读全文
摘要:还带这么做的,卧槽,15分钟就被A了的题,居然没搞出来若某位是1,则前两个为wb,这位就是w 1 #include 2 #include 3 #define lson l,m,rt>1; 22 build(lson); 23 build(rson); 24 pushup...
阅读全文
摘要:就是不知道时间该怎么处理,想了好久,看了别人的题解发现原来是暴力,暴力也很巧妙啊,想不出来的那种 -_-! 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using nam...
阅读全文
摘要:不能直接使用成段增减的那种,因为一段和的平方根不等于平方根的和,直接记录是否为1,是1就不需要更新了 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std;...
阅读全文
摘要:尼玛,INF不能定义太大,找标程对拍了好久 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 #define MOD 100000000710 c...
阅读全文
摘要:线段树搞了不少题了,这次专题一口气弄完hdu 1542 敌兵布阵单点更新,有两种写法,各有千秋hdu 2795 Billboard同样的单点更新,把黑板竖起来看就是一个线段树了hdu 1754 I Hate It简单的单点更新poj 3468 A Simple Problem with Intege...
阅读全文
摘要:题意求区间内比h小的数的个数将所有的询问离线读入之后,按H从小到大排序。然后对于所有的结点也按从小到大排序,然后根据查询的H,将比H小的点加入到线段树,然后就是一个区间和.2015-07-27:专题训练到此 1 #include 2 #include 3 #include 4 #includ...
阅读全文
摘要:题意:点我我就想问,现在换代码风格还来得及吗?2015-05-19:线段树进一步加强,看来不用换风格了维护左右节点左右端颜色和长度即可 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #define lson l...
阅读全文
摘要:题目意思:给定Q(1 2 #include 3 #include 4 #include 5 #include 6 #include 7 #define lson l,mid,rt>1)11 #define ll long long12 #define cl(a) memset(a,0,sizeof(...
阅读全文
摘要:题意:求三个矩形体积的并链接:点我枚举z 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #pragma comment(linker, "/STAC...
阅读全文
摘要:题意: Change operations:0 a b change all characters into '0's in [a , b]1 a b change all characters into '1's in [a , b]2 a b change all '0's into '1's ...
阅读全文
摘要:题意:1 a:询问是不是有连续长度为a的空房间,有的话住进最左边2 a b:将[a,a+b-1]的房间清空思路:记录区间中最长的空房间线段树操作:update:区间替换 query:询问满足条件的最左断点Sample Input10 6 10个房间 6次询问1 3 找3个房间1 31 31 32 5...
阅读全文
摘要:题目大意:给n个数,两种操作1:U a b 更新第a个为b (从0开始)2: Q a ,b 查询 a,b之间LCIS(最长连续递增子序列)的长度。Sample Input110 107 7 3 3 5 9 9 8 1 8Q 6 6U 3 4Q 0 1Q 0 5Q 4 7Q 3 5Q 0 2Q 4 6...
阅读全文
摘要:题意:给你N条线段(垂直于x轴)的两个y坐标还有x坐标,问相互看到的三元组有多少个。有点纠结就是,如果两个连线之间正好有一条线段的某个端点,这个也是不能计算的,所以这个端点就有意义了,所以就用上面那个题的做法,全部扩大二倍再用线段树。Sample Input1 //测试次数5 //线段数目0 4 4...
阅读全文
摘要:题意:一段钩子,每个钩子的值为1,有若干更新,每次跟新某段的值,若干查询某段的和基础题了 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 #de...
阅读全文
摘要:题意:有一个长板子,分成多段,有两种操作,第一种是C给从a到b那段染一种颜色c,另一种是P询问a到b有多少种不同的颜色。Sample Input2 2 4 板长 颜色数目 询问数目C 1 1 2P 1 2C 2 2 2P 1 2Sample Output21sum用二进制记录区间内颜色状态,col记...
阅读全文
摘要:线段树还是比较薄弱,搞了好长时间,还可以用优先队列做O((n+m)logn 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define for0n...
阅读全文
摘要:题意:很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。这让很多学生很反感。不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。5 61 2 3 4 5Q 1 5U 3 6Q 3 4Q 4 5U 2...
阅读全文
摘要:略复杂的一道题,首先要处理开闭区间问题,扩大两倍即可,注意输入最后要\n,初始化不能随便memset采用线段树,对线段区间进行0,1标记表示该区间是否包含在s内U T S ← S ∪ T 即将[l,r]标记为1I T S ← S ∩ T 即将-oo~l和r~+oo标记为0,因为是并集,所以并集后的集...
阅读全文