P3976 [TJOI2015]旅游(未完成)
#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]旅游(未完成)的更多相关文章
- 【BZOJ3999】[TJOI2015]旅游(Link-Cut Tree)
[BZOJ3999][TJOI2015]旅游(Link-Cut Tree) 题面 BZOJ 洛谷 题解 一道不难的\(LCT\)题(用树链剖分不是为难自己吗,这种有方向的东西用\(LCT\)不是方便那 ...
- bzoj 3999: [TJOI2015]旅游
Description 为了提高智商,ZJY准备去往一个新世界去旅游.这个世界的城市布局像一棵树.每两座城市之间只有一条路径可 以互达.每座城市都有一种宝石,有一定的价格.ZJY为了赚取最高利益,她会 ...
- BZOJ3999:[TJOI2015]旅游(树链剖分)
Description 为了提高智商,ZJY准备去往一个新世界去旅游.这个世界的城市布局像一棵树.每两座城市之间只有一条路径可 以互达.每座城市都有一种宝石,有一定的价格.ZJY为了赚取最高利益,她会 ...
- BZOJ3999 [TJOI2015]旅游 【树剖 + 线段树】
题目 为了提高智商,ZJY准备去往一个新世界去旅游.这个世界的城市布局像一棵树.每两座城市之间只有一条路径可 以互达.每座城市都有一种宝石,有一定的价格.ZJY为了赚取最高利益,她会选择从A城市买入再 ...
- BZOJ3999 [TJOI2015]旅游
题面:给定一个有$n$个节点的树,每个点又点权$v_i$,每次选取一条树链$[a, b]$,求出$max(v_i - v_j)$,其中$i, j \in [a, b]$且$i$出现在$j$前面,最后树 ...
- [TJOI2015]旅游
树链剖分+线段树 线段树维护max,min,左往右的最大差,右往左的最大差 求LCA时一定要注意方向 # include <bits/stdc++.h> # define RG regis ...
- 2019.01.20 bzoj3999: [TJOI2015]旅游(树链剖分)
传送门 树链剖分菜题. 题意不清差评. 题意简述(保证清晰):给一棵带权的树,每次从aaa走到bbb,在走过的路径上任意找两个点,求后访问的点与先访问的点点权差的最大值. 思路: 考虑暴力:维护路径的 ...
- bzoj 3999: [TJOI2015]旅游 LCT
没啥难的,inf 的值设小了调了半天~ code: #include <bits/stdc++.h> #define N 50003 #define lson t[x].ch[0] #de ...
- TJOI2015 day2解题报告
TJOI2015终于写完啦~~~ T1:[TJOI2015]旅游 描述:(BZ没题面只能口述了..)一个人在一棵树上走,每次从a->b会进行一次贸易(也就是在这条路径上买入物品然后在后面卖出)然 ...
随机推荐
- maven突然报大量package does not exist(包不存在)问题
遇到个问题,不知道原因,虽然已解决,但是扔不知道为什么,希望有大神帮忙解答下~~~不胜感激~~~ 国庆假期回来后,小伙伴发布测试服务器版本忽然发现报错,我咨询IT管理组近期并没有对服务器配置和权限做调 ...
- 问题TypeError: __init__() takes 1 positional argument but 2 were given解决方案
在搭建自动化框架时,遇到一个问题,如下图: 根据报错的意思,应该是__init__函数的问题, 位置应该是HomePage文件 立马去查看一下文件,如图: 原来是因为的粗心大意__init__(sel ...
- 使用lombok中的log
idea中安装lombok插件 引入lombok依赖 <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> ...
- C++简单程序设计
计算机的最基本功能是数据处理 l C++支持的基本数据类型: n 整数.实数.字符.布尔数据 l C++支持的基本运算 n 算术运算.关系运算.逻辑运算.位运算.逗号运算.条件运算 程序要能够 ...
- tf.split
tf.split(dimension, num_split, input):dimension的意思就是输入张量的哪一个维度,如果是0就表示对第0维度进行切割.num_split就是切割的数量,如果是 ...
- Cobalt Strike之信息收集、木马钓鱼
System Profiler使用 System Profiler 模块,搜集目标的各类机器信息(操作系统版本,浏览器版本等) Attacks->web drive-by->System ...
- 一个基于C++11的单例模板类
#ifndef _SINGLETON_H_#define _SINGLETON_H_ template<typename T>class Singleton : public Uncopy ...
- Vue 上传材料并传给后端接口(使用input)
最近工作中接到一个需求,需要上传一个文件材料,提交时传给后端.使用的框架是Vue,废话不说直接上代码 <template> <div> <input type=" ...
- Spring Boot2 系列教程(十六)定时任务的两种实现方式
在 Spring + SpringMVC 环境中,一般来说,要实现定时任务,我们有两中方案,一种是使用 Spring 自带的定时任务处理器 @Scheduled 注解,另一种就是使用第三方框架 Qua ...
- Linux下yum与apt-get
linux系统基本上分两大类: 1.RedHat系列:Redhat.Centos.Fedora等 2.Debian系列:Debian.Ubuntu等 RedHat 系列 1 常见的安装包格式 rpm包 ...