![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
『ACM 数据结构』
文章平均质量分 82
cnwsycf
No friends , no ACM
展开
-
HDU 4686 Arc of Dream
http://acm.hdu.edu.cn/showproblem.php?pid=4686多校的第9场比赛,这题是这场比赛中的第一题,似乎是一道签到题,不过,我第一眼看到,深深地表示不会,唯一想到的就是想去寻找它的循环,然后就YY去做它了。好在lele犀利的发现了它是一道矩阵题(表示矩阵做得很少,线代接近白学,orz),然后lele果断敲掉了它。好吧,赛后在acmoo原创 2013-08-21 09:01:00 · 664 阅读 · 0 评论 -
【树链剖分学习小记】
//废话 : 在几个月前学习学习线段树的时候碰到了LightOJ 1348, 各种蛋疼, 后来学长和我说了这题是用树链剖分做的, 简单了解了之后就放弃了 - - 。寒假在家无聊翻出来学学, 略有所得。资料 : http://wenku.baidu.com/view/a088de01eff9aef8941e06c3.html http://blog.sina.com.cn/s/b原创 2014-01-30 21:41:39 · 1236 阅读 · 7 评论 -
BZOJ 2243 染色(树链剖分+线段树区间合并)
链接 : http://www.lydsy.com/JudgeOnline/problem.php?id=2243中文题。思路 : 很裸的树链剖分, 而查询颜色段数量可以用线段树来维护, 唯一麻烦的是在查询的时候要注意每一段的有向性, 即 a----b + c----d 的时候要注意不能更新成a----b + d----c这里写的时候需要斟酌下(其实考虑到top[u]在线段原创 2014-01-29 21:51:04 · 1052 阅读 · 0 评论 -
LightOJ 1085 - All Possible Increasing Subsequences(DP + 线段树 + 离散)
题意 : 求一个数列的所有严格递增子序列的数量。思路 : 定义一个状态:dp[i]表示第i个位置的数a[i]为这个序列的结尾的所有递增子序列数量,dp[i] = ∑dp[k] (a[i] > a[k] && i > k),这样可以用一个线段树来维护寻找[min, a[i] - 1]所有的dp[k]的总和,而因为输入的|a[]| #include #include #incl原创 2013-11-03 12:03:16 · 1305 阅读 · 0 评论 -
POJ 2777 Count Color (线段树区间更新)
题意 : 给你一L个点,一开始都涂成颜色1,然后有O次操作,C a b c 的话就是讲[a,b]涂成颜色c,若P a b,询问[a,b]区间不同颜色的数量。思路 : 线段树,区间更新。(一开始没学过区间更新的,只会单点更新,结果更新复杂度为O(n),默默的TLE了几把)开一个lazy数组,对应节点进行lazy操作,使得每次更新的时候不许要继续小区间更新下去了,而颜色覆盖的话使用位运算(因为颜色原创 2013-10-18 23:32:59 · 739 阅读 · 0 评论 -
HDOJ 3308 LCIS (线段树区间合并)
题目链接题意 : 求最长连续递增序列,10^5次操作。思路 : 线段树区间合并实现。因为只是求连续的,所以只要记录每个区间左边起和右边结束还有最大的3个LCIS值,然后合并相应区间就行。#include #include #include using namespace std;const int maxn = 100005;int max(int a,int原创 2013-10-27 22:13:15 · 906 阅读 · 0 评论 -
POJ 2886 Who Gets the Most Candies?(线段树 + 约瑟夫环 + 反素数)
线段树 + 约瑟夫环 + 反素数题目连接题意 : N个人顺时针围成一圈,每个人有一张卡片,轮到某个人的时候进行以下操作 :1 , 这个人退出这个圈。2,如果这个人的卡片上的数字是正数X则向右数X个位置,otherwise向左数(-X)个位置。3被数到的那个人执行相同操作,直至没有人为止。4,如果原来的那个人是第K个,那么他将会获得P(K)颗糖。 注 : P(k)表示k的不同约数数量(可原创 2013-10-26 20:45:08 · 713 阅读 · 0 评论 -
UVa Ray, Pass me the dishes! (线段树)
白书上的线段树例题。题意 : 给你一个数组,然后有m次询问,每次询问一个区间,返回在这个区间里面最大的连续和的起始和结束位置、思路 :每个节点记录前缀max_pre和和后缀和max_suf来维护它的最大连续和max_sub。(其实思路白书上讲了,就是代码实现而已)需要注意的是这道题目的max_pre,max_suf,max_sub都是需要用long long 来保存的。#i原创 2013-10-18 23:41:49 · 887 阅读 · 0 评论 -
UVA 11992 Fast Matrix Operations (线段树区间更新)
刘汝佳白书上的题目。题意 : 给你一个矩阵(m * n,最多20行,总元素不超过10^6个),然后Q次操作。有3种操作 :1,在(x1,y1)~(x2,y2)这个子矩阵上每一个元素都加上 v。2,在(x1,y1)~(x2,y2)把这个子矩阵上的每一个元素都变为v。3,询问(x1,y1)~(x2,y2)这个子矩阵的总和,最小值,最大值。思路 : 因为最多20行,所以开20个线段树原创 2013-10-27 22:05:07 · 947 阅读 · 4 评论 -
单调栈【小记】
第一次接触单调栈是暑假的时候,那时做到了了 HDU上的一题 : Largest Rectangle in a Histogram后来在范总的帮助下敲掉了。今天决定重新坐下这类题,目的是完善下代码风格和熟悉下。题目都是蛮简单的,核心算法就是用单调栈处理出第i个点左右最长可以延伸到的位置(记做 : L[i] 和 R[i])。挂了三道POJ题目 : 1 Terr原创 2013-09-18 23:15:20 · 816 阅读 · 0 评论 -
ZOJ 3772 Calculate the Function
题目链接的原创 2014-04-08 16:28:06 · 1199 阅读 · 7 评论