NewCoder 剖分

树上差分

#pragma GCC optimize(2)
#include <bits/stdc++.h>#define endl "\n"
#define x first
#define y second
#define pb(a) push_back(a);
#define mst(a, x) memset(a, x, sizeof a)
#define all(a) a.begin(), a.end()
#define complete_unique(a) a.erase(unique(a.begin(), a.end()), a.end())using namespace std;typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int, int> PII;const int INF = 0x3f3f3f3f, MOD = 1e9 + 7;const int N = 1e7 + 10;int d[N] = {0}, f[N] = {0}, g = 0;  //每个位置的权重, g表示全局操作次数int ds[N] = {0}, fs[N] = {0}, cnt[N] = {0};  // ds:i->root的sum, fs: i子树的sumint n, m, op, x;void dfs(int u, int fa) {if (u > n) return;ds[u] = ds[fa] + d[u];dfs(u << 1, u);dfs(u << 1 | 1, u);fs[u] = fs[u << 1] + fs[u << 1 | 1] + f[u];
}
void solve() {cin >> n >> m;int t = m;while (t--) {cin >> op >> x;if (op == 1) {d[x]++;} else if (op == 2) {  //转化为操作1d[x]--, g++;} else if (op == 3) {f[x]++;} else {  //转化为操作3f[x]--, g++;}}dfs(1, 0);for (int i = 1; i <= n; i++) cnt[g + ds[i] + fs[i]]++;for (int i = 0; i <= m; i++) cout << cnt[i] << " ";cout << endl;
}int main() {ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);int T = 1;// cin >> T;while (T--) solve();return 0;
}

NewCoder 剖分相关推荐

  1. 【ZJOI2008】树的统计(树链剖分)

    传送门 Solution: 就是树链剖分入门题啦~ // luogu-judger-enable-o2 #include<bits/stdc++.h> #define N 30005 #d ...

  2. 树链剖分+线段树 HDOJ 4897 Little Devil I(小恶魔)

    题目链接 题意: 给定一棵树,每条边有黑白两种颜色,初始都是白色,现在有三种操作: 1 u v:u到v路径(最短)上的边都取成相反的颜色 2 u v:u到v路径上相邻的边都取成相反的颜色(相邻即仅有一 ...

  3. P1505 [国家集训队]旅游 树链剖分

    题目链接 题意:树上更新某一点权值,更新两点简单路径权值,查询最大,最小,和 思路:思路应该比较简单,就是树链剖分后用线段树维护区间最大最小以及区间和. 但是本题比较特殊的是给的边权,转化为点权即可. ...

  4. 【模板】树链剖分 P3384

    题目链接 //部分转自:https://www.luogu.org/problemnew/solution/P3384 初学树链剖分,感觉这个模板题还是容易理解的,但是实在是码量很大的. 知识点: 重 ...

  5. 树链剖分——线段树区间合并bzoj染色

    线段树区间合并就挺麻烦了,再套个树链就更加鬼畜,不过除了代码量大就没什么其他的了.. 一些细节:线段树每个结点用结构体保存,pushup等合并函数改成返回一个结构体,这样好写一些 struct Seg ...

  6. bzoj1036: [ZJOI2008]树的统计Count 树链剖分

    一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从 ...

  7. SPOJ375(树链剖分)

    题目:Query on a tree 题意:给定一棵树,告诉了每条边的权值,然后给出两种操作: (1)把第i条边的权值改为val (2)询问a,b路径上权值最大的边 分析:本题与HDU3966差不多, ...

  8. 洛谷3384:【模板】树链剖分——题解

    https://www.luogu.org/problemnew/show/P3384 如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 ...

  9. 树链剖分(轻重链剖分) 讲解 (模板题目 P3384 【模板】轻重链剖分 )

    P3384 [模板]轻重链剖分 首先先说一下基本概念: 1.重儿子:一个结点的所有儿子中,大小最大的那个(最重的,所以说只有一个,如果有多个儿子的大小相等那就随便取一个). 2.轻儿子:一个结点的儿子 ...

最新文章

  1. python多进程_Python多进程实践
  2. 【使用 DOM】为DOM元素设置样式
  3. LCD控制器与帧率、刷新率的关系分析
  4. android之Fragment(官网资料翻译)二
  5. Python中的random模块
  6. 2021-10-20 Speaking Class
  7. 五十八、Java8的新特性Lambda表达式
  8. [LaunchPad] 超声波测试,数码管显示
  9. 威海二职工业机器人专业_现在各大专开设的工业机器人专业前景如何?
  10. 1.5 编程基础之循环控制 29 数字反转
  11. 职工考勤管理信息系统数据库课设_职工考勤管理信息系统数据库课程设计
  12. day6--pandas
  13. ant压缩html,ant+yuicompressor压缩js/css
  14. CH341/CH340Linux驱动使用教程
  15. Java核心基础30天
  16. java栅栏_Java多线程 5.栅栏
  17. 计算机制图孔中心线,机械制图中各种中心线绘制方法.docx
  18. 解决git在push时报错fatal: unable to access ‘https://github.com/sup0C/a.git/‘: errno 10054
  19. 【游戏开发实战】Unity手游第一人称视角,双摇杆控制,FPS射击游戏Demo(教程 | 含Demo工程源码)
  20. SAP中SY-SUBRC 的含义

热门文章

  1. 24-同方鼎欣-info
  2. 服务器 1 500错误信息,什么是500错误
  3. shell进入特权模式_特权模式下的命令
  4. 网站SEO,HTTP请求的关键数字----6
  5. 为什么四十岁了还要学Python?
  6. JSON.prase()使用报错
  7. python找不到对象怎么办_R中找不到对象怎么回事
  8. 清华向勇《操作系统》学习笔记11:死锁和进程通信
  9. Datawhale task3打卡——二手车价格预测
  10. 华为m3 鸿蒙,8.4英寸华为M3平板电脑1888元起售:9月26日线上线下同步开卖