#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. maven突然报大量package does not exist(包不存在)问题

    遇到个问题,不知道原因,虽然已解决,但是扔不知道为什么,希望有大神帮忙解答下~~~不胜感激~~~ 国庆假期回来后,小伙伴发布测试服务器版本忽然发现报错,我咨询IT管理组近期并没有对服务器配置和权限做调 ...

  2. 问题TypeError: __init__() takes 1 positional argument but 2 were given解决方案

    在搭建自动化框架时,遇到一个问题,如下图: 根据报错的意思,应该是__init__函数的问题, 位置应该是HomePage文件 立马去查看一下文件,如图: 原来是因为的粗心大意__init__(sel ...

  3. 使用lombok中的log

    idea中安装lombok插件 引入lombok依赖 <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> ...

  4. C++简单程序设计

    计算机的最基本功能是数据处理 l  C++支持的基本数据类型: n  整数.实数.字符.布尔数据 l  C++支持的基本运算 n  算术运算.关系运算.逻辑运算.位运算.逗号运算.条件运算 程序要能够 ...

  5. tf.split

    tf.split(dimension, num_split, input):dimension的意思就是输入张量的哪一个维度,如果是0就表示对第0维度进行切割.num_split就是切割的数量,如果是 ...

  6. Cobalt Strike之信息收集、木马钓鱼

    System Profiler使用 System Profiler 模块,搜集目标的各类机器信息(操作系统版本,浏览器版本等) Attacks->web drive-by->System ...

  7. 一个基于C++11的单例模板类

    #ifndef _SINGLETON_H_#define _SINGLETON_H_ template<typename T>class Singleton : public Uncopy ...

  8. Vue 上传材料并传给后端接口(使用input)

    最近工作中接到一个需求,需要上传一个文件材料,提交时传给后端.使用的框架是Vue,废话不说直接上代码 <template> <div> <input type=" ...

  9. Spring Boot2 系列教程(十六)定时任务的两种实现方式

    在 Spring + SpringMVC 环境中,一般来说,要实现定时任务,我们有两中方案,一种是使用 Spring 自带的定时任务处理器 @Scheduled 注解,另一种就是使用第三方框架 Qua ...

  10. Linux下yum与apt-get

    linux系统基本上分两大类: 1.RedHat系列:Redhat.Centos.Fedora等 2.Debian系列:Debian.Ubuntu等 RedHat 系列 1 常见的安装包格式 rpm包 ...