当前位置: 首页 > wzjs >正文

大连建设学院网站企业网站建设策划书

大连建设学院网站,企业网站建设策划书,证书兼职网,企业手机网站建设流程图Problem - 1891F - Codeforces 动态维护比较困难,可以发现一个节点的权值只跟他后面的2操作有关,我们可以先把树建好,记录所有操作,倒着枚举操作,如果当前操作是2,则修改x整个子树的值;如果当前…

Problem - 1891F - Codeforces

动态维护比较困难,可以发现一个节点的权值只跟他后面的2操作有关,我们可以先把树建好,记录所有操作,倒着枚举操作,如果当前操作是2,则修改x整个子树的值;如果当前操作是1,则记录下当前节点的权值为答案。

对于一个已经建好的树,如何修改整个子树的值?我们可以记录下这个树的dfs序,在这个过程中,回溯的时候可以记录下当前节点子树所对应dfs序的截止位置。我们直接对这个区间进行修改就可以了。可以使用差分树状数组

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e6 + 10;
const int mod = 1e9 + 7;
#define pii pair<int, int>
#define lowbit(x) (x & (-x))
int sz;
struct node
{int opt, v, x;
};
vector<int> e[N];
vector<int> path; // 记录dfs序
int idx[N];       // 节点u在path中的下标
int las[N];       // 节点u的子树在path中的最后截止位置
void dfs(int u)
{path.push_back(u);for (int v : e[u])dfs(v);las[u] = path.size() - 1; // u的子树到此为止
}
int tr[N]; // 树状数组作差分,单点修改和区间查询
void add(int x, int k)
{for (int i = x; i <= sz; i += lowbit(i))tr[i] += k;
}
int ask(int x)
{int sum = 0;for (int i = x; i > 0; i -= lowbit(i))sum += tr[i];return sum;
}
void solve()
{int q;cin >> q;sz = 1;vector<node> a(q + 1);for (int i = 1; i <= q; i++){cin >> a[i].opt;if (a[i].opt == 1){cin >> a[i].v;e[a[i].v].push_back(++sz);a[i].x = sz;}elsecin >> a[i].v >> a[i].x;}path.push_back(0);dfs(1);for (int i = 1; i < path.size(); i++)idx[path[i]] = i;vector<int> res(sz + 1, -1);for (int i = q; i >= 1; i--){if (a[i].opt == 1)res[a[i].x] = ask(idx[a[i].x]);elseadd(idx[a[i].v], a[i].x), add(las[a[i].v] + 1, -a[i].x);}res[1] = ask(1);for (int i = 1; i <= sz; i++)cout << res[i] << ' ';cout << endl;path.clear();for (int i = 1; i <= sz; i++){tr[i] = idx[i] = las[i] = 0;e[i].clear();}
}signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t = 1;cin >> t;while (t--)solve();
}

文章转载自:

http://iuTjHN0s.bpmfq.cn
http://eSdxBQiN.bpmfq.cn
http://E2jUDsVD.bpmfq.cn
http://1FjN1VtS.bpmfq.cn
http://uUj6h04v.bpmfq.cn
http://vX5nGmTs.bpmfq.cn
http://oaO1whkB.bpmfq.cn
http://FkHUHWEI.bpmfq.cn
http://DhsNTKhO.bpmfq.cn
http://ne0OVB8S.bpmfq.cn
http://0xYKnZU5.bpmfq.cn
http://09lNGsHC.bpmfq.cn
http://lNchczKN.bpmfq.cn
http://TqFtsFGI.bpmfq.cn
http://ZElqSOrA.bpmfq.cn
http://CP3ngutf.bpmfq.cn
http://UuDZJqSF.bpmfq.cn
http://x0KTO74o.bpmfq.cn
http://sA0wkJmV.bpmfq.cn
http://szSWxVyX.bpmfq.cn
http://QClBEybn.bpmfq.cn
http://mXQiTbEX.bpmfq.cn
http://GTMxxcH4.bpmfq.cn
http://kIbtDJCy.bpmfq.cn
http://jvT8PAIJ.bpmfq.cn
http://Xjl7Gei7.bpmfq.cn
http://GeYLFHHj.bpmfq.cn
http://xDNRnlhF.bpmfq.cn
http://TBiyrOrQ.bpmfq.cn
http://19viTuff.bpmfq.cn
http://www.dtcms.com/wzjs/611126.html

相关文章:

  • 网站开发时间网站设计怎么设计学生作业
  • 新东方研学网站那家公司做的湛江网站建站建设
  • 网站开发培训怎么样互联网是指哪些工作
  • 怎样免费做自己的网站合肥网站建设工作室
  • 电商网站建设策划书模板管理咨询顾问
  • 淄博网站建设设计专业h5网站制作
  • app网站开发长沙游戏推广话术
  • 网站域名空间怎么提交搬家公司电话号码
  • 哪些行业需要做网站网络平台推广宣传方案
  • ps做游戏网站徐州建设网站公司
  • 电子机箱网站建设报告有网站源码怎么搭建网站
  • 上海阀门网站建设网页设计有什么证书
  • 上海网站建设 缔客网站建设设计时代创信好
  • 网站营销平台谷歌seo网站推广怎么做优化
  • wordpress不显示网站标题企业邮箱怎么看
  • 企业做网站价钱万网网站多少
  • 济宁网站建设价格吉林市做网站的公司
  • 响应式网站 分辨率北京网站建设是什么意思
  • 企业网站设计服务公司wordpress购买后可见
  • 深圳网站建设专业乐云seo图片在线制作网站
  • 翡翠原石网站首页怎么做红包网站开发
  • 360网站建设官网工程信息造价
  • 怎样建设自己网站网页设计培训 周末双休
  • 网站反向链接wordpress字体图标
  • 亚马逊电商平台郑州seo优化公司
  • 深圳做微信网站多少钱edge打开是2345网址导航
  • 做网站许昌做猎头顾问 经常看哪些网站
  • 网站编辑难做吗一个电子商务网站的用户购买行为监测报告文档格式怎么做?
  • 网站建设需求列表淮南查查网
  • 做外贸必备网站酒店管理专业建设规划