随笔分类 - 数据结构--前缀和/差分
摘要:题目 CF1483C Skyline Photo 分析 首先看到这个题很明显可以序列上dp,设置状态很常规,就是前i个位置可以得到的最大收益。 关键是转移,考虑朴素的转移:\(dp[i]=\max\limits_{j=1}^{i}\{dp[j-1]+b[minpos]\}\) 然后考虑优化,这类需要
阅读全文
摘要:题目 给出很多个形如:\((l,r,a,b)\) 的操作,表示让区间 \([l,r]\) 当中的数变成 \(x\to (ax+b)\mod p\) (其中 \(p\) 是初始给定的。) 然后多次询问 \((l,r,pos)\) 表示询问:如果执行区间 \([l,r]\) 当中的操作,那么第 \(po
阅读全文
摘要:题目 CF292D Connected Components 给出一个图,每次删除其中一个区间内的边,询问剩下的边构成的图当中的连通块个数。 \(N\le 500,1\le M,K\le 10000\) 分析 维护一个前缀的并查集和后缀的并查集,然后可以考虑每次拿出两段来合并,于是就很容易了。 具体
阅读全文
摘要:题目 分析 线性基有一个奇妙的性质: 于是我们可以把区间修改变成单点修改,然后就是直接线段树维护了。 时间复杂度 \(O(n\log{n}\log^2{V})\) 代码 #include<bits/stdc++.h> using namespace std; template <typename T
阅读全文
摘要:P1972 [SDOI2009]HH的项链 经典区间数颜色问题。 离线做法有树状数组和莫队,在线做法有主席树。 莫队做法十分暴力,直接维护每个数当前的 cnt 再在单点更新的时候更新答案即可。 树状数组做法: 对于每一个位置维护一个前缀位置 \(pre\),那么询问就相当于是询问区间多少个位置的 \
阅读全文
摘要:P5268 [SNOI2017]一个简单的询问 莫队+差分。 首先这里是两个区间,显然不好直接做,于是可以考虑差分,我们维护前缀区间,把柿子改写成四个答案组合起来。 这样改写出来的四个小答案都可以使用莫队来求,然后拼起来就行了。 代码: #include <bits/stdc++.h> using
阅读全文
摘要:P3648 [APIO2014]序列分割 首先,我们发现这个数据范围明显就是 \(O(nk)\) 的。 那么我们可以考虑直接 dp 了,设 \(dp[i][j]\) 为前 \(i\) 个数划分完毕,划分了 \(j\) 次,最后一次划分在 \(i\) 位置的最大贡献。 那么我们的柿子很明显就是 \(d
阅读全文

浙公网安备 33010602011771号