技巧与思想---前缀和/差分
小松萘
厉害的人可真多啊
展开
-
AcWing 352. 闇の連鎖 (树上差分---维护边权,LCA)
???? ???? ???? (1)假设边权为删除该边之后还需要删除的边数,那么每在(x,y)上添加一条边,相当于将x到y 的路径上的边权全都加一。 (2)树上差分:以点值代表该点上面那条边的权值,那么要修改x,y路径上的所有边的权值,cha[x]+=w,cha[y]+=w,cha[ lca(x,y) ] -=w*2,之后dfs一遍求子树和即可 // lca int dep[MX],dis[MX],f[MX][2...原创 2020-03-28 19:22:13 · 188 阅读 · 0 评论 -
CodeForces - 1110E Magic Stones (差分)
数组一个考点(?),差分 int c[MAXN],t[MAXN]; int solve() { int n;cin>>n; rpp(i,n) cin>>c[i]; rpp(i,n) cin>>t[i]; vector<int>a,b; if((c[1]!=t[1])||(c[n]!=t[n])) return...原创 2020-03-10 19:03:42 · 119 阅读 · 0 评论 -
2020牛客寒假算法基础集训营3 G - 牛牛的Link Power II(前缀和)
???? ???? ???? 就把计算公式一顿化简,,代码混合了无修的F题的代码,所以看起来比较长QWQ #define int ll const int mod = 1e9 + 7; int n, m; char s[MAXN]; vector<int> v; int c[2][MAXN];//一维为位置和,二维为个数和 void update(int x, int v,int k){ while ...原创 2020-02-09 17:35:42 · 236 阅读 · 0 评论 -
Codeforces Round #558 (Div. 2) B2 - Cat Party (Hard Edition) (前缀和,STL)
???? ???? ???? 因为不会用multset的erase函数调了好久。。。 int v[MAXN]; int sum[MAXN];//前缀和 signed main() { int n;cin>>n; map<int,int>mp; int tag = 0;//出现的数字样数 int ans = 1; multiset<int>m...原创 2020-01-30 22:25:41 · 121 阅读 · 0 评论 -
Educational Codeforces Round 65 (Rated for Div. 2) D - Bicolored RBS (前缀和,括号序列)
???? ???? ???? 套路题,转换成1,-1序列,最大前缀和就是最大深度,然后对半分即可,只要前缀和大于二分之一前缀和+1,就输出0,其他都是1 int sum[MAXN]; signed main() { int n;cin>>n; string s;cin>>s; int mx=0; rep(i,n) { if(i==0) ...原创 2020-01-29 17:55:35 · 181 阅读 · 0 评论