随笔分类 -  ACM_线段树/树状数组

摘要:题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1085 题意: 问你有多少个上升子序列。 思路: dp[i]表示以第i个数结尾的上升序列数量。 阅读全文
posted @ 2016-10-09 17:18 Recoder 阅读(251) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://acm.fzu.edu.cn/problem.php?pid=2224 同hdu5869 阅读全文
posted @ 2016-10-08 20:10 Recoder 阅读(212) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://codeforces.com/contest/558/problem/E 题意:有一串字符串,有两个操作:1操作是将l到r的字符串升序排序,0操作是降序排序。 题解:建立26棵线段树,类似计数排序思想。 阅读全文
posted @ 2016-10-04 20:47 Recoder 阅读(366) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3333 题意就是询问区间不同数字的和。 比较经典的树状数组应用。 阅读全文
posted @ 2016-09-26 20:39 Recoder 阅读(137) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://codeforces.com/contest/444/problem/C 给定一个长度为n的序列,初始时ai=i,vali=0(1≤i≤n).有两种操作: n≤10^5,1≤x≤10^6. 感觉这是一个比较好的考察线段树区间更新的性质。 当区间的a[i]一样时,区间更新即可, 阅读全文
posted @ 2016-09-25 19:43 Recoder 阅读(434) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://codeforces.com/contest/719/problem/E 题意:操作1将[l, r] + x; 操作2求f[l] + ... + f[r]; 题解:注意矩阵可以是a*(b + c) = a*b + a*c ,还有update的时候传入矩阵 阅读全文
posted @ 2016-09-24 23:06 Recoder 阅读(639) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5869 问你l~r之间的连续序列的gcd种类。 首先固定右端点,预处理gcd不同尽量靠右的位置(此时gcd种类不超过loga[i]种)。 预处理gcd如下代码,感觉真的有点巧妙... 然后用树状数组维护右 阅读全文
posted @ 2016-09-12 23:28 Recoder 阅读(338) 评论(0) 推荐(1) 编辑
摘要:题目链接:http://codeforces.com/problemset/problem/707/E 给你nxm的网格,有k条链,每条链上有len个节点,每个节点有一个值。 有q个操作,操作ask问你一个子矩阵的和是多少,操作switch将第i条链上的值0变原来的数or原来的数变0。 比较明显的二 阅读全文
posted @ 2016-09-06 14:44 Recoder 阅读(286) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5828 给你n个数,三种操作。操作1是将l到r之间的数都加上x;操作2是将l到r之间的数都开方;操作3是求出l到r之间的和。 操作1和3就不说了,关键是开方操作。 一个一个开方,复杂度太高,无疑会T。所以 阅读全文
posted @ 2016-08-11 19:28 Recoder 阅读(547) 评论(2) 推荐(0) 编辑
摘要:题目链接:http://codeforces.com/contest/597/problem/C 给你n和数(1~n各不同),问你长为k+1的上升自序列有多少。 dp[i][j] 表示末尾数字为i 长度为j的上升子序列个数,但是dp数组是在树状数组的update函数中进行更新。 update(i, 阅读全文
posted @ 2016-08-06 22:50 Recoder 阅读(209) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://codeforces.com/contest/703/problem/D 给你n个数,m次查询,每次查询问你l到r之间出现偶数次的数字xor和是多少。 我们可以先预处理前缀和Xor[i],表示1~i的xor和。因为num^num=0,所以Xor[r] ^ Xor[l - 1] 阅读全文
posted @ 2016-08-05 15:00 Recoder 阅读(318) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://codeforces.com/contest/474/problem/F 题意简而言之就是问你区间l到r之间有多少个数能整除区间内除了这个数的其他的数,然后区间长度减去数的个数就是答案。 要是符合条件的话,那这个数的大小一定是等于gcd(a[l]...a[r])。 我们求区间 阅读全文
posted @ 2016-07-27 17:35 Recoder 阅读(129) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://codeforces.com/contest/675/problem/E 你可以从第 i 个车站到 [i + 1, a[i]] 之间的车站花一张票。 p[i][j]表示从 i 到 j 最少花费多少张票,问你 ∑p[i][j] (1<=i<j<=n) 是多少。 设dp[i]表示 阅读全文
posted @ 2016-06-21 22:24 Recoder 阅读(165) 评论(0) 推荐(1) 编辑
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3308 题目很好懂,就是单点更新,然后求区间的最长上升子序列。 线段树区间合并问题,注意合并的条件是a[mid + 1] > a[mid],写的细心点就好了。 阅读全文
posted @ 2016-05-28 22:28 Recoder 阅读(159) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3911 给你n个数0和1,m个操作: 0操作 输出l到r之间最长的连续1的个数 1操作 将l到r之间的0变1,1变0 区间合并的模版题,结构体中的lsum1表示从此区间最左端开始连续1的个数,rsum1表 阅读全文
posted @ 2016-05-27 14:02 Recoder 阅读(297) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://poj.org/problem?id=3667 最初给你n间空房,m个操作: 操作1 a 表示检查是否有连续的a间空房,输出最左边的空房编号,并入住a间房间。 操作2 a b 表示将编号为a之后的b间房间清空。 典型的区间合并问题,这位大牛讲的更清楚:http://www.c 阅读全文
posted @ 2016-05-26 22:31 Recoder 阅读(139) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4052 初始给你w*h的矩阵,给你n个矩形(互不相交),按这些矩形尺寸把初始的矩形扣掉,形成一个新的'矩形'。然后给你1*m大小的矩形,问这个矩形在新'矩形'中有多少种放法。 一开始没想法==,然后看了看 阅读全文
posted @ 2016-05-03 16:14 Recoder 阅读(348) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3265 给你n个中间被挖空了一个矩形的中空矩形,让你求他们的面积并。 其实一个中空矩形可以分成4个小的矩形,然后就是面积并,特别注意的是x1 == x3 || x2 == x4的时候,要特判一下,否则会R 阅读全文
posted @ 2016-04-28 22:57 Recoder 阅读(227) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1828 给你n个矩形,让你求出总的周长。 类似面积并,面积并是扫描一次,周长并是扫描了两次,x轴一次,y轴一次。每次加起来的无非都是新加的边(flag为1)或者是新减的边(flag为-1),即加起来的是此 阅读全文
posted @ 2016-04-28 22:04 Recoder 阅读(198) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1255 题意很清楚,就是让你求矩阵之间叠加层数大于1的矩形块的面积和。 因为n只有1000,所以我离散化一下,数据大小就缩小了,那么之后只需要线段树单点更新就好了。 阅读全文
posted @ 2016-04-28 19:06 Recoder 阅读(196) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示