#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
const int maxn=1e6+;
const int inf=<<;
int size[maxn];
int top[maxn];
int dfsx[maxn];
int son[maxn];
int father[maxn];
struct node
{
int to;
int next;
}way[maxn<<];
struct node1
{
int max;
int min;
int ans,ans1;
node1()
{
ans=ans1=max=;
min=inf;
}
}
struct node2
{
int l,r,ls,rs;
int min,max;
int ans,ans1;
int lazy;
}tree[maxn<<];
int add(int x,int y)
{
way[++tot].next=head[x];
way[tot].to=y;
head[x]=tot;
} int dfs1(int x)
{
size[x]=;
for(int i=head[x];i;i=way[i].next)
{
int to=way[i].to;
if(father[x]==to)
{
continue;
}
deep[to]=deep[x]+;
father[to]=x;
dfs1(to);
size[x]+=size[to];
if(size[to]>size[son[x]])
{
son[x]=to;
}
}
}
int dfs2(int x,int tp)
{
id[x]=++cnt;
top[x]=tp;
value[cnt]=a[x];
if(son[x])
{
dfs2(son[x],tp);
}
for(int i=head[x];i;i=way[i].next)
{
int to=way[i].to;
if(to==fa||to==son[x])
{
continue;
}
dfs2(to,to);
}
} inline int pushup(int x)
{
tree[x].ans=max(tree[tree[x].rs].max-tree[tree[x].ls].min,max(tree[tree[x].ls].ans,tree[tree[x].rs].ans));
tree[x].ans1=max(tree[tree[x].ls].max-tree[tree[x].rs].min,max(tree[tree[x].ls].ans1,tree[tree[x].rs].ans1);
tree[x].max=max(tree[tree[x].ls].max,tree[tree[x].rs].max);
tree[x].min=min(tree[tree[x].ls].min,tree[tree[x].rs].min);
} int build(int x,int l,int r)
{
x=++cnt;
tree[x].l=l;
tree[x].r=r;
if(l==r)
{
tree[x].min=tree[x].max=value[l];
tree[x].ans=tree[x].ans1=;
return ;
}
int mid=(l+r)>>;
build(tree[x].ls,l,mid);
build(tree[x].rs,mid+,r);
pushup(x);
} inline pushdown(int x)
{
if(!tree[x].lazy)
{
return ;
}
tree[tree[x].ls].lazy+=tree[x].lazy;
tree[tree[x].rs].lazy+=tree[x].lazy;
tree[tree[x].ls].max+=tree[x].lazy;
tree[tree[x].rs].max+=tree[x].lazy;
tree[tree[x].ls].min+=tree[x].lazy;
tree[tree[x].rs].min+=tree[x].lazy;
tree[x].lazy=;
} node1 pushup1(node1 tmp1,node1 tmp2)
{
node1 ans1;
ans1.ans=max(tmp2.max-tmp1.min,max(tmp1.ans,tmp2.ans));
ans1.ans1=max(tmp1.max-tmp2.min,max(tmp1.ans1,tmp2.ans1));
ans1.min=min(tmp1.min,tmp2.min);
ans1.max=max(tmp1.max,tmp2.max);
return ans1;
} }
node1 update(int x,int l,int r,int val)
{
if(l<=tree[x].l&&r>=tree[x].r)
{
tree[x].lazy+=val;
tree[x].max+=val;
tree[x].min+=val;
node1 ttt;
ttt.max=tree[x].max;
ttt.min=tree[x].min;
ttt.ans=tree[x].ans;
ttt.ans1=tree[x].ans1;
return ttt;
}
int mid=(tree[x].l+tree[x].r)>>;
node1 ttt1;
node1 ttt2;
pushdown(x);
if(l<=mid)
{
ttt1=update(tree[x].ls,l,r,val);
}
if(r>mid)
{
ttt2=update(tree[x].rs,l,r,val);
}
pushup(x);
return pushup1(ttt1,ttt2);
} int main()
{ return ;
}

P3976 [TJOI2015]旅游(未完成)的更多相关文章

  1. 【BZOJ3999】[TJOI2015]旅游(Link-Cut Tree)

    [BZOJ3999][TJOI2015]旅游(Link-Cut Tree) 题面 BZOJ 洛谷 题解 一道不难的\(LCT\)题(用树链剖分不是为难自己吗,这种有方向的东西用\(LCT\)不是方便那 ...

  2. bzoj 3999: [TJOI2015]旅游

    Description 为了提高智商,ZJY准备去往一个新世界去旅游.这个世界的城市布局像一棵树.每两座城市之间只有一条路径可 以互达.每座城市都有一种宝石,有一定的价格.ZJY为了赚取最高利益,她会 ...

  3. BZOJ3999:[TJOI2015]旅游(树链剖分)

    Description 为了提高智商,ZJY准备去往一个新世界去旅游.这个世界的城市布局像一棵树.每两座城市之间只有一条路径可 以互达.每座城市都有一种宝石,有一定的价格.ZJY为了赚取最高利益,她会 ...

  4. BZOJ3999 [TJOI2015]旅游 【树剖 + 线段树】

    题目 为了提高智商,ZJY准备去往一个新世界去旅游.这个世界的城市布局像一棵树.每两座城市之间只有一条路径可 以互达.每座城市都有一种宝石,有一定的价格.ZJY为了赚取最高利益,她会选择从A城市买入再 ...

  5. BZOJ3999 [TJOI2015]旅游

    题面:给定一个有$n$个节点的树,每个点又点权$v_i$,每次选取一条树链$[a, b]$,求出$max(v_i - v_j)$,其中$i, j \in [a, b]$且$i$出现在$j$前面,最后树 ...

  6. [TJOI2015]旅游

    树链剖分+线段树 线段树维护max,min,左往右的最大差,右往左的最大差 求LCA时一定要注意方向 # include <bits/stdc++.h> # define RG regis ...

  7. 2019.01.20 bzoj3999: [TJOI2015]旅游(树链剖分)

    传送门 树链剖分菜题. 题意不清差评. 题意简述(保证清晰):给一棵带权的树,每次从aaa走到bbb,在走过的路径上任意找两个点,求后访问的点与先访问的点点权差的最大值. 思路: 考虑暴力:维护路径的 ...

  8. bzoj 3999: [TJOI2015]旅游 LCT

    没啥难的,inf 的值设小了调了半天~ code: #include <bits/stdc++.h> #define N 50003 #define lson t[x].ch[0] #de ...

  9. TJOI2015 day2解题报告

    TJOI2015终于写完啦~~~ T1:[TJOI2015]旅游 描述:(BZ没题面只能口述了..)一个人在一棵树上走,每次从a->b会进行一次贸易(也就是在这条路径上买入物品然后在后面卖出)然 ...

随机推荐

  1. java工具类之Arrays、Collections以及比较器

    一.Comparable和Comparator的详解 Comparable & Comparator 都是用来实现集合中元素的比较.排序的,只是 Comparable 是在集合内部定义的方法实 ...

  2. Cocos2d-x入门之旅[2]精灵

    精灵就是cocos是屏幕上移动的对象,能被我们控制,比如我们HelloWorld场景的这个图片就是精灵(Sprite) 怎么才算精灵?你能控制它的,就是一个精灵,否则就只是一个节点(Node) 准确的 ...

  3. 从零基础到拿到网易Java实习offer,我做对了哪些事

    作为一个非科班小白,我在读研期间基本是自学Java,从一开始几乎零基础,只有一点点数据结构和Java方面的基础,到最终获得网易游戏的Java实习offer,我大概用了半年左右的时间.本文将会讲到我在这 ...

  4. django搭建BBS-表单创建&注册

    django搭建BBS-表单创建&注册 0824自我总结 文件结构 app 接口 migrations __inint__.py admin.py 管理员页面注册表单用 apps.py bbs ...

  5. 【RT-Thread】线程的基本知识

    什么是线程? 人们在生活中处理复杂问题时,惯用的方法就是分而治之,即把一个大问题分解成多个相对简单.比较容易解决的小问题,小问题逐个被解决了,大问题也就随之解决了.同样,在设计一个较为复杂的应用程序时 ...

  6. CVE-2016-7124漏洞复现

    CVE-2016-7124漏洞复现 __wakeup()魔术方法绕过 实验环境 操作机:Windows 10 服务器:apache 2.4 数据库:mysql 5.0 PHP版本:5.5 漏洞影响版本 ...

  7. redis应用场景总结redis平时我们用到的地方蛮多的,下面就了解的应用场景做个总结:

    redis常见应用场景 1.热点数据的缓存 由于redis访问速度块.支持的数据类型比较丰富,所以redis很适合用来存储热点数据,另外结合expire,我们可以设置过期时间然后再进行缓存更新操作,这 ...

  8. The All-in-One Note

    基础 操作系统 I/O 模型 阻塞式 I/O 模型(blocking I/O) 描述:在阻塞式 I/O 模型中,应用程序在从调用 recvfrom 开始到它返回有数据报准备好这段时间是阻塞的,recv ...

  9. 16.Linux yum扩展

    1.列出yum源可用的软件仓库 [root@yinwucheng ~]# yum repolist [root@yinwucheng ~]# yum repolist all 查看所有的仓库  ``` ...

  10. Java类型信息(RTTI和反射)

    要想在IT领域站得住脚,必须得不断地学习来强化自己,但是学过的技术不实践很容易便被遗忘,所以一直都打算开个博客,来记录自己学的知识,另外也可以分享给有需要的人! 最近在学习反射,为了更好地理解反射,就 ...