随笔分类 - 数据结构——树状数组
摘要:考虑数字x的贡献 设S[i]表示x在前i个位置的出现次数 那么如果存在区间[l+1,r]满足要求,则S[r]-S[l]>(r-l)/2,即2S[r]-r>2S[l]-l 令T[i]=2S[i]-i 那可以得到一个n^2 * logn的做法: 枚举数字x,枚举位置,用一个数据结构统计一段区间内<某个数
阅读全文
摘要:http://www.51nod.com/Challenge/Problem.html#problemId=1213 原理: 每个点在以它为顶点的45°角范围内,只可能连向距离(曼哈顿距离)它最近的点。 证明: 以点A为原点,y轴正半轴向x轴正半轴方向偏45°角为例: 如图所示,设|AB|<=|AC
阅读全文
摘要:https://ac.nowcoder.com/acm/contest/5671/J 题意: 初始有一个1-n的排列,对这个排列进行m次操作,每次操作对排列进行x次k-约瑟夫置换,问m次操作后的序列是什么。 k-约瑟夫置换:n个数围成一个圈,从第1个开始,数到第k个,将这个数字去掉,操作n次直至圈为
阅读全文
摘要:https://ac.nowcoder.com/acm/contest/3005/H 当我们要计算的车厢从第i个移到第i+1个的时候 只会影响第i个车厢对应颜色的数量 和 第i+1个车厢对应颜色的数量 用树状数组维护当前车厢左右所有颜色相同的车厢对数的前缀和 假设已经计算完了前i个车厢的答案,现在要
阅读全文
摘要:https://ac.nowcoder.com/acm/problem/201639 求一遍异或前缀和,问题转化成有多少对异或前缀和相等 我用的离散化之后树状数组查询 题解大佬直接map。。。。 #include<cstdio> #include<algorithm> using namespace
阅读全文
摘要:http://codeforces.com/contest/1288/problem/E 题意: 有一个长度为n的循环队列,初始第i个位置的数字为i 有m次操作,每次操作把数字x放到队首,原队首与数字x原位置之间的数字在队列中后移一位 输出m次操作过程中,数字i在队列中最靠前和最靠后的位置 若数字i
阅读全文
摘要:https://www.lydsy.com/JudgeOnline/problem.php?id=3173 插入的数是以递增的顺序插入的 这说明如果倒过来考虑,那么从最后一个插入的开始删除,不会对以某个数结尾的最长上升子序列产生影响 所以 先原序列求出来,输出即可 还原原序列的方法: 可以用平衡树,
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=2244 每枚导弹成功拦截的概率 = 包含它的最长上升子序列个数/最长上升子序列总个数 pre_len [i] 表示以i结尾的最长不下降子序列的长度 pre_sum[i] 表示对应长度下的方案数 suf_
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=4516 考虑在后面新加一个字母产生的影响 假设是第i个 如果不考虑重复,那么会增加i个不同的字符串 考虑重复的话,就是找到 最小的j,满足s[j……i] 在之前出现过,那么i的贡献就是j-1 即查找与某
阅读全文
摘要:https://www.luogu.org/problemnew/show/P3960 p<=500 50分 模拟 每个人的出队只会影响当前行和最后一列 p<=500,有用的行只有500行 所以只维护这p行和最后一列的信息 然后模拟 时间复杂度:O(p*(n+m)) 空间复杂度:O(p*m+n) #
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=3529 有一张n*m的数表,其第i行第j列(1 < =i < =n,1 < =j < =m)的数值为能同时整除i和j的所有自然数之和。给定a,计算数表中不大于a的数之和。 20000 组询问 n<=1e
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=1878 之前用莫队做的,现在用树状数组 把每种数的第一个出现位置在树状数组中+1 nxt[i] 记录i后面第一个数字和i相同的位置 对于每一个询问[l,r],输出[1,r]内数的种类-只在[1,l-1]
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=4411 用树状数组维护扫描线 一个树状数组维护扫描线之上的y<=i点,另一个维护扫描线之下y<=i的点 将点按x排好序,开始全部插入扫描线之下的树状数组 枚举x这一条线,线上的在第一个树状数组里加上,第
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=2738 整体二分 二维树状数组累积 #include<cstdio> #include<iostream> #include<algorithm> using namespace std; #defin
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=2527 整体二分 区间加,单点查,树状数组维护差分序列 注意 累积可能会爆long long,所以一满足要求就break #include<cstdio> #include<iostream> #inc
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=1537 朴素的转移:dp[i][j]=max(dp[i][j-1],dp[i-1][j])+p[i][j] 树状数组优化 按x排序,离散化y 枚举,排序保证x,树状数组查询y #include<cstd
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=3295 正着删除看做倒着添加 对答案有贡献的数对满足以下3个条件: 出现时间:i<=j 权值大小关系:x[i]>x[j] 位置关系:pos[i]<pos[j] 或者是 出现时间:i<=j 权值大小关系:
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=3262 三维偏序 第一维排序,第二维CDQ分治,第三维树状数组 #include<cstdio> #include<iostream> #include<algorithm> #define lowbi
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=1935 二维偏序问题 排序x,离散化树状数组维护y 1935: [Shoi2007]Tree 园丁的烦恼 Description 很久很久以前,在遥远的大陆上有一个美丽的国家。统治着这个美丽国家的国王是
阅读全文
摘要:期望得分:100+40+100=240 实际得分:50+40+20=110 T1 start取了min没有用,w(゚Д゚)w O(≧口≦)O T3 代码3个bug :数组开小了,一个细节没注意,手抖打错变量。。。 细节处理很重要啊!!!! 贪心,按结束时间排序 #include<cstdio> #i
阅读全文