左偏树打个标记,没了。

  1. #include <cstdio>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. typedef long long ll;
  6. const int N = ;
  7. int n,m,e,x,tt,c[N],d[N],a[N],hd[N],nxt[N],to[N],rt[N],f[N],g[N];
  8. ll h[N],v[N],s[N];
  9. vector<int> vc[N];
  10. struct nd {int l,r,d,id; ll w,ad,mu;}t[N];
  11. void add(int x, int y) {to[++e] = y, nxt[e] = hd[x], hd[x] = e;}
  12.  
  13. void pd(int x) {
  14. t[t[x].l].mu *= t[x].mu, t[t[x].l].ad *= t[x].mu, t[t[x].l].w *= t[x].mu;
  15. t[t[x].r].mu *= t[x].mu, t[t[x].r].ad *= t[x].mu, t[t[x].r].w *= t[x].mu;
  16. t[t[x].l].ad += t[x].ad, t[t[x].r].ad += t[x].ad, t[t[x].l].w += t[x].ad, t[t[x].r].w += t[x].ad;
  17. t[x].mu = , t[x].ad = ;
  18. }
  19. int mrg(int x, int y) {
  20. if(!x || !y) return x+y;
  21. if(t[x].w > t[y].w) swap(x, y);
  22. pd(x);
  23. t[x].r = mrg(t[x].r, y);
  24. if(t[t[x].l].d < t[t[x].r].d) swap(t[x].l, t[x].r);
  25. t[x].d = t[t[x].r].d+;
  26. return x;
  27. }
  28.  
  29. void dfs(int x) {
  30. for(int i = ; i < vc[x].size(); i++)
  31. t[++tt].id = vc[x][i], t[tt].w = s[vc[x][i]], t[tt].mu = , rt[x] = mrg(rt[x], tt);
  32. for(int i = hd[x]; i; i = nxt[i]) d[to[i]] = d[x]+, dfs(to[i]), rt[x] = mrg(rt[x], rt[to[i]]);
  33. while(rt[x] && t[rt[x]].w < h[x])
  34. f[x]++, g[t[rt[x]].id] = x, pd(rt[x]), rt[x] = mrg(t[rt[x]].l, t[rt[x]].r);
  35. if(a[x]) t[rt[x]].mu *= v[x], t[rt[x]].ad *= v[x], t[rt[x]].w *= v[x];
  36. else t[rt[x]].ad += v[x], t[rt[x]].w += v[x];
  37. }
  38.  
  39. int main() {
  40. scanf("%d%d", &n, &m);
  41. for(int i = ; i <= n; i++) scanf("%lld", &h[i]);
  42. for(int i = ; i <= n; i++) scanf("%d%d%lld", &x, &a[i], &v[i]), add(x, i);
  43. for(int i = ; i <= m; i++) scanf("%lld%d", &s[i], &c[i]), vc[c[i]].push_back(i);
  44. d[] = , dfs();
  45. for(int i = ; i <= n; i++) printf("%d\n", f[i]);
  46. for(int i = ; i <= m; i++) printf("%d\n", d[c[i]]-d[g[i]]);
  47. return ;
  48. }

左偏树(BZOJ4003)的更多相关文章

  1. 左偏树初步 bzoj2809 & bzoj4003

    看着百度文库学习了一个. 总的来说,左偏树这个可并堆满足 堆的性质 和 左偏 性质. bzoj2809: [Apio2012]dispatching 把每个忍者先放到节点上,然后从下往上合并,假设到了 ...

  2. 【BZOJ4003】【JLOI2015】城池攻占(左偏树)

    题面 题目描述 小铭铭最近获得了一副新的桌游,游戏中需要用 m 个骑士攻占 n 个城池.这 n 个城池用 1 到 n 的整数表示.除 1 号城池外,城池 i 会受到另一座城池 fi 的管辖,其中 fi ...

  3. BZOJ 1455 罗马游戏 ——左偏树

    [题目分析] 左偏树的模板题目,大概就是尽量维护树的深度保持平衡,以及尽可能的快速合并的一种堆. 感觉和启发式合并基本相同. 其实并没有快很多. 本人的左偏树代码自带大常数,借鉴请慎重 [代码] #i ...

  4. 【BZOJ-1455】罗马游戏 可并堆 (左偏树)

    1455: 罗马游戏 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1355  Solved: 561[Submit][Status][Discuss] ...

  5. 【bzoj2809】[Apio2012]dispatching 左偏树

    2016-05-31  15:56:57 题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2809 直观的思想是当领导力确定时,尽量选择薪水少的- ...

  6. zoj 2334 Monkey King/左偏树+并查集

    原题链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1389 大致题意:N只相互不认识的猴子(每只猴子有一个战斗力值) 两只 ...

  7. POJ3016-K-Monotonic(左偏树+DP)

    我觉得我要改一下签名了……怎么会有窝这么啰嗦的人呢? 做这题需要先学习左偏树<左偏树的特点及其应用> 然后做一下POJ3666,这题的简单版. 思路: 考虑一下维护中位数的过程原数组为A, ...

  8. POJ3666-Making the Grade(左偏树 or DP)

    左偏树 炒鸡棒的论文<左偏树的特点及其应用> 虽然题目要求比论文多了一个条件,但是……只需要求非递减就可以AC……数据好弱…… 虽然还没想明白为什么,但是应该觉得应该是这样——求非递减用大 ...

  9. bzoj 1455: 罗马游戏 左偏树+并查集

    1455: 罗马游戏 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 668  Solved: 247[Submit][Status] Descriptio ...

随机推荐

  1. 第二篇:利用shell脚本执行webservice请求——基于soap

    1. 项目背景 以往我们在开发基于webservice的项目中,我们总习惯于直接使用webservice的一些框架,如Axis,axis2和Xfire等.框架的好处是将webservice所涉及到的s ...

  2. EasyUI中, datagrid用loadData方法绑定数据。

    $("#dg").datagrid("loadData", { , " }, { "ck": "1", &qu ...

  3. JAVA_SE基础——23.类的定义

    黑马程序员入学blog ... java 面向对象的语言 对象:真实存在的唯一的实物. 比如:我家的狗, 类: 实际就是对某种类型事物的共性属性与行为的抽取.  抽象的概念...   比如说:车   ...

  4. php代码开启缓冲的使用方法

    php可以开启缓冲区,就是将内容放到缓冲区,再决定什么时候发送给浏览器. 感谢:http://www.jb51.net/article/38964.htm 解析PHP中ob_start()函数的用法 ...

  5. C#之Socket通信

    0.虽然之前在项目中也有用过Socket,但始终不是自己搭建的,所以对Server,Clinet端以及心跳,断线重连总没有很深入的理解,现在自己搭建了一遍加深一下理解. 服务端使用WPF界面,客户端使 ...

  6. 关于 Form 表单的 enctype 属性

    enctype 属性一共有3个值 application/x-www-form-urlencoded 在发送前编码所有字符(默认) multipart/form-data 上传二进制数据, 所以在使用 ...

  7. WPF 自定义ComboBox样式

    一.ComboBox基本样式 ComboBox有两种状态,可编辑和不可编辑状态.通过设置IsEditable属性可以切换控件状态. 先看基本样式效果: 基本样式代码如下: <!--ComboBo ...

  8. SpringCloud的服务注册中心(二)注册中心服务端和两个微服务应用客户端

    一.构建EurekaServer工程 1.pom.xml 2.application.yml 3. EurekaServerApp.java 4.启动EurekaServer 二.构建部署 Eurek ...

  9. PHP7链接MySQL

    1 <?php $mysqli = new mysqli("localhost", "root", "123"); if($mysql ...

  10. Extensions in UWP Community Toolkit - SurfaceDialTextbox

    概述 UWP Community Toolkit Extensions 中有一个为TextBox 提供的 SurfaceDial 扩展 - SurfaceDialTextbox,本篇我们结合代码详细讲 ...