博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2018年浙江理工大学程序设计竞赛校赛 Problem I: 沙僧
阅读量:7099 次
发布时间:2019-06-28

本文共 1836 字,大约阅读时间需要 6 分钟。

思路:

dfs序+差分数组

分层考虑,通过dfs序来查找修改的区间段,然后用差分数组修改

代码:

#include
using namespace std;#define fi first#define se second#define pi acos(-1.0)#define LL long long#define mp make_pair#define pb push_back#define ls rt<<1, l, m#define rs rt<<1|1, m+1, r#define ULL unsigned LL#define pll pair
#define pii pair
#define piii pair
#define mem(a, b) memset(a, b, sizeof(a))#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);#define fopen freopen("in.txt", "r", stdin);freopen("out.txt", "w", stout);//headconst int N = 1e5 + 5;int deep[N], l[N], r[N];LL ans[N];vector
g[N];vector
d[N];vector
v[N];vector
t[N];int x = 0;void dfs(int o, int u, int dd) { deep[u] = dd; d[dd].pb(x); t[dd].pb(u); v[dd].pb(0); l[u] = x; for (int i = 0; i < g[u].size(); i++) { if(g[u][i] != o) { ++x; dfs(u, g[u][i], dd+1); } } r[u] = x;}int main() { int n, m, a, b, c; scanf("%d %d", &n, &m); for (int i = 1; i < n; i++) { scanf("%d %d", &a, &b); g[a].pb(b); g[b].pb(a); } ++x; dfs(1, 1, 0); while(m --) { scanf("%d %d %d", &a, &b, &c); int pos = deep[a] + b; if(pos >= N || d[pos].size() == 0) continue; int st = lower_bound(d[pos].begin(), d[pos].end(), l[a]) - d[pos].begin(); int ed = upper_bound(d[pos].begin(), d[pos].end(), r[a]) - d[pos].begin(); v[pos][st] += c; if(ed < v[pos].size()) v[pos][ed] -= c; } for (int i = 0; i <= n; i++) { if(v[i].size() == 0) break; ans[t[i][0]] = v[i][0]; for (int j = 1; j < v[i].size(); j++) { v[i][j] += v[i][j-1]; ans[t[i][j]] = v[i][j]; } } for (int i = 1; i <= n; i++) printf("%lld%c", ans[i], " \n"[i==n]); return 0;}/*7 21 21 32 42 53 63 72 1 23 1 2*/

 

转载于:https://www.cnblogs.com/widsom/p/9279251.html

你可能感兴趣的文章
严谨的程序案例Api
查看>>
Flex(flash)检测摄像头的3种状态(是否被占用,没安装摄像头,正常)
查看>>
Servlet和JSP比较
查看>>
A.3.2-创建简单的类(人类),包含的概念(字段,构造,封装字段,创建方法,创建对象,赋值,调用方法)...
查看>>
WP7 应用数据存储IsolatedStorage 篇
查看>>
解决 ASP.NET Core MySql varchar 字符串截取(长度 255)
查看>>
Design Pattern: Abstract Factory 模式
查看>>
Android的动画效果浅解析
查看>>
PHP中的use、命名空间的理解
查看>>
内核驱动调试方法
查看>>
对struts一点理解总结
查看>>
主机宝IIS版ISAPIRewrite伪静态软件操作演示
查看>>
如何停止CSS3的动画?
查看>>
SetWindowLong
查看>>
获得项目的绝对地址 getRequestURI,getRequestURL的区别
查看>>
PowerShell实现基于SharePoint的网站HomePage Auto-Upgrade Solution
查看>>
[LintCode] Delete Node in the Middle of Singly Linked List 在单链表的中间删除节点
查看>>
WPF界面设计技巧(5)—自定义列表项呈现内容
查看>>
Troubleshooting RDS Performance (MySQL, SQL SERVER and MongoDB)
查看>>
Ksoap 使用简介
查看>>