Processing math: 100%

随笔分类 -  树状数组

摘要:传送门 首先考虑怎么算 f(n) (就是题目里面那个 f(n)) 发现可以构造一组序列大概长这样: ${1,3,2,6,5,4,10,9,8,7,15,14,13,12,11,...,n(n+1)/2,n(n+1)/2-1,n(n+1)/2-2...n(n+1)/2-(n-1),(n+1)( 阅读全文
posted @ 2019-10-24 11:32 LLTYYC 阅读(190) 评论(0) 推荐(0) 编辑
摘要:传送门 注意到矩形往上是无限的,考虑把点按 y 从大到小考虑 对于枚举到高度为 h 的点,设当前高度大于等于 h 的点的所有点的不同的 x 坐标数量为 cnt 那么对于这一层高度 h 我们就有 cnt(cnt+1)/2 种不同的 lr ,使得矩形内点集不同 发现 阅读全文
posted @ 2019-09-29 11:40 LLTYYC 阅读(230) 评论(0) 推荐(0) 编辑
摘要:传送门 看到 n<=5000,直接暴力枚举左右两条竖线 然后考虑怎么计算高度在某个范围内,左端点小于等于某个值,右端点大于等于某个值的横线数量 直接用权值树状数组维护当前高度在某个区间内的横线数量 考虑先固定左边的竖线,然后枚举从左到右枚举右边的竖线,那么随着右边竖线的右移,合法的横线(右端点大 阅读全文
posted @ 2019-09-27 14:49 LLTYYC 阅读(276) 评论(0) 推荐(0) 编辑
摘要:传送门 挺显然的一题?单点修改,前缀和数组前缀查询 树状数组就可以维护了 考虑每个位置对应询问的贡献,设询问的位置为 x,对于原数组 a[i] 的某个位置 i,它会贡献 (xi+1)a[i]xa[i](i1)a[i],直接对两个部分搞两个树状数组分别维护即可 具 阅读全文
posted @ 2019-09-11 13:43 LLTYYC 阅读(160) 评论(0) 推荐(0) 编辑
摘要:传送门 看到题目一眼 cdq 分治,然后发现 n,m 很小,感到一丝不对劲 然后去看看题解发现正解是二维树状数组 二维树状数组和一维的好像也差不多? struct BIT { int t[N][N]; inline void add(int x,int y,int v) { for(;x<= 阅读全文
posted @ 2019-09-11 13:21 LLTYYC 阅读(194) 评论(0) 推荐(0) 编辑
摘要:传送门 注意题目要求的字典序最小是指下标最小 容易想到 dp,但是发现正着做不好搞,考虑反过来搞 原本正着做是求最长上升子序列,反过来就变成求最长下降子序列 然后我们就可以求出以每个位置为起点的上升子序列的最大长度 然后直接贪心从前往后枚举即可,复杂度 O(nm) 维护最长下降子序列我是用树 阅读全文
posted @ 2019-08-31 13:41 LLTYYC 阅读(154) 评论(0) 推荐(0) 编辑
摘要:传送门 A. XORinacci 手玩三四项发现序列就是 a,b,a xor b,a,b,...,直接输出即可 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> 阅读全文
posted @ 2019-08-26 09:47 LLTYYC 阅读(204) 评论(0) 推荐(0) 编辑
摘要:传送门 考虑 dp ,发现之前的 1 可能会产生贡献不好处理 贪心一下发现每个位置填的数必须单调不减,所以就不用考虑之前填的数 设 f[i][j] 表示当前考虑到第 i 个位置,填的数为 j 时的最小代价 那么有 $f[i][j]=f[pre][k]+val[i][j],k<= 阅读全文
posted @ 2019-08-24 16:11 LLTYYC 阅读(188) 评论(0) 推荐(0) 编辑
摘要:A. There Are Two Types Of Burgers 题意: 给一些面包,鸡肉,牛肉,你可以做成鸡肉汉堡或者牛肉汉堡并卖掉 一个鸡肉汉堡需要两个面包和一个鸡肉,牛肉汉堡需要两个面包和一个牛肉 求能得到的最多的钱 直接贪心,哪个比较贵就选哪个做,剩下的材料再做另一个 #include<i 阅读全文
posted @ 2019-08-23 07:47 LLTYYC 阅读(297) 评论(0) 推荐(0) 编辑
摘要:传送门· 对于询问 (a,b) ,感觉一维很不好维护,考虑把询问看成平面上的一个点,坐标为 (a,b) 每个坐标 (x,y) 的值表示到当前 xy 联通的时间和 考虑一个修改的贡献,它其实就是把左边一段区间 [l,x] 和右边一段区间 [x+1,r] 联通或断开 放 阅读全文
posted @ 2019-08-18 08:16 LLTYYC 阅读(263) 评论(0) 推荐(0) 编辑
摘要:传送门 考虑如果能确定每个鞋子最终交换到的位置,那么答案容易算出 具体地,如果原位置为 i 的鞋子要交换到 pos[i] 那么最终答案就是 pos 的逆序对数量 如果不懂可以先去写 NOIP2013火柴排队 我的题解也有关于这个的证明 考虑怎么确定最优的方案,容易想到每个鞋子都找离它最近 阅读全文
posted @ 2019-08-17 11:53 LLTYYC 阅读(494) 评论(0) 推荐(0) 编辑
摘要:传送门 显然有一个想法,把 A,B 从小到大一一对应,这样距离最小,证明的话好像挺显然的 设 Ai<Ai+1Bi<Bi+1,那么如果 Ai 对应 BiAi+1 对应 Bi+1 距离为 $(A_i-B_i)^2+(A_{i+1}-B 阅读全文
posted @ 2019-08-17 10:45 LLTYYC 阅读(175) 评论(0) 推荐(0) 编辑
摘要:传送门 暴力怎么搞,维护前缀和 s[i] ,对于每一个 s[i],枚举所有 j[0,i1],看看 s[i]s[j] 是否属于 [L,R] 如果属于就加入答案 s[i]s[j][L,R] 等价于 $s[i]-s[j] \geqslant L , s[i]-s[ 阅读全文
posted @ 2019-07-12 12:16 LLTYYC 阅读(212) 评论(0) 推荐(0) 编辑
摘要:传送门 矩阵内点数显然可以预处理前缀和然后简单容斥一下 具体就是设 sum[i][j] 表示以 (i,j) 为右上角,以 (0,0) 为左下角的矩阵的点数 那么对于询问以 (xa,ya) 为左下角,以 (xb,yb) 为右上角的矩形点数 注意到询问区间是闭的,显然答案就是 $su 阅读全文
posted @ 2019-07-11 14:22 LLTYYC 阅读(208) 评论(0) 推荐(0) 编辑
摘要:传送门 区间第 K 小,直接树套树 外层树状数组维护区间,内层权值线段树维护排名 和正常的权值线段树类似,查询第 K 小时也是在线段树上二分,但是此时不是两颗线段树作差,而是树状数组上的 2logn 个线段树作差 跳的话就 2logn 个节点一起跳就好了 要记得离散化 阅读全文
posted @ 2019-04-07 12:47 LLTYYC 阅读(159) 评论(0) 推荐(0) 编辑
摘要:传送门 设 val[i] 为位置 i 的值 维护 ansL[i] 表示位置 i 的数左边所有大于 val[i] 的数的数量 维护 ansR[i] 表示位置 i 的数右边所有小于 val[i] 的数的数量 考虑先求出一开始总的逆序对数 ans 每次删除一个数 (位置 阅读全文
posted @ 2019-03-25 19:53 LLTYYC 阅读(223) 评论(0) 推荐(0) 编辑
摘要:传送门 显然的 dpf[i] 表示点击第 i 个音符时的最大价值,t[i] 表示音符 i 的准备时间 那么可以枚举 1it[i] 的所有音符,如果 j ,如果 j+t[j] 小于等于 i ,那么 $f[i]=max(f[i],f[j]+t[i]* 阅读全文
posted @ 2019-03-07 16:24 LLTYYC 阅读(256) 评论(0) 推荐(0) 编辑
摘要:传送门 感觉题意有坑 害我看了半天 题目原文: 一块墓地的虔诚度是指以这块墓地为中心的十字架的数目。一个十字架可以看成中间是墓地,墓地的正上、正下、正左、正右都有恰好k棵常青树。 本来以为要刚好 k 颗,不能多了 结果看着样例一脸懵逼 才发现多的可以不管 比如有一行有 a 颗树,那么从这 a 颗中随 阅读全文
posted @ 2018-09-28 22:35 LLTYYC 阅读(172) 评论(1) 推荐(1) 编辑
摘要:传送门 DP 十分显然的DP,但是不好写 设 f[ i ] 表示以第 i 个数作结尾时的方案数,原序列为 a 如果不考虑相同的序列: 那么转移就是 Σ f[ j ] (0< j < i && a [ j ] < a [ i ]) 复杂度为 O(n^2) 考虑优化: 先去重 ,得到数组 b 每次把f 阅读全文
posted @ 2018-09-15 17:29 LLTYYC 阅读(225) 评论(0) 推荐(0) 编辑

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