CF960F Pathwalks_权值线段树_LIS
很不错的一道思维题。
Code:
#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
const int maxn = 1000000 + 4;
const int inf = 100000 + 4;
int n, m;
int root[maxn], maxv[maxn << 2],ch[maxn << 2][2], cnt;
inline void get_max(int &a,int b)
{
if(b > a) a = b;
}
struct Segment_Tree
{
#define lson ch[o][0]
#define rson ch[o][1]
inline void update(int l,int r,int delta,int val,int &o)
{
if(!o) o = ++cnt;
if(l == r)
{
get_max(maxv[o], delta);
return;
}
int mid = (l + r) >> 1;
if(val <= mid)
update(l, mid, delta, val, ch[o][0]);
else
update(mid + 1, r, delta, val, ch[o][1]);
get_max(maxv[o], max(maxv[lson], maxv[rson]));
}
inline int query(int l,int r,int L,int R,int o)
{
if(!o) return 0;
if(l > r || r < L || l > R || L > R) return 0;
if(l >= L && r <= R)
return maxv[o];
int mid = (l + r) >> 1;
return max(query(l, mid, L, R, lson), query(mid + 1, r, L, R, rson));
}
}T;
int main()
{
//freopen("input.in","r",stdin);
scanf("%d%d",&n,&m);
int ans = 0;
for(int i = 1;i <= m; ++i)
{
int from, to, val;
scanf("%d%d%d",&from, &to,&val);
++ val;
int tmp = T.query(1, inf , 1, val - 1, root[from]);
T.update(1, inf, tmp + 1, val, root[to]);
get_max(ans, tmp + 1);
}
printf("%d",ans);
return 0;
}
CF960F Pathwalks_权值线段树_LIS的更多相关文章
- 【树状数组套权值线段树】bzoj1901 Zju2112 Dynamic Rankings
谁再管这玩意叫树状数组套主席树我跟谁急 明明就是树状数组的每个结点维护一棵动态开结点的权值线段树而已 好吧,其实只有一个指针,指向该结点的权值线段树的当前结点 每次查询之前,要让指针指向根结点 不同结 ...
- 【BZOJ-2892&1171】强袭作战&大sz的游戏 权值线段树+单调队列+标记永久化+DP
2892: 强袭作战 Time Limit: 50 Sec Memory Limit: 512 MBSubmit: 45 Solved: 30[Submit][Status][Discuss] D ...
- BZOJ 3110 ZJOI 2013 K大数查询 树套树(权值线段树套区间线段树)
题目大意:有一些位置.这些位置上能够放若干个数字. 如今有两种操作. 1.在区间l到r上加入一个数字x 2.求出l到r上的第k大的数字是什么 思路:这样的题一看就是树套树,关键是怎么套,怎么写.(话说 ...
- 动态求区间K大值(权值线段树)
我们知道我们可以通过主席树来维护静态区间第K大值.我们又知道主席树满足可加性,所以我们可以用树状数组来维护主席树,树状数组的每一个节点都可以开一颗主席树,然后一起做. 我们注意到树状数组的每一棵树都和 ...
- 线段树(单标记+离散化+扫描线+双标记)+zkw线段树+权值线段树+主席树及一些例题
“队列进出图上的方向 线段树区间修改求出总量 可持久留下的迹象 我们 俯身欣赏” ----<膜你抄> 线段树很早就会写了,但一直没有总结,所以偶尔重写又会懵逼,所以还是要总结一下. ...
- 【BZOJ3685】【zkw权值线段树】普通van Emde Boas树
原题传送门 因为马上要开始搞树套树了,所以学了一波权值线段树...毕竟是会点zkw线段树的,所以zkw线段树大法好! 解题思路: 介绍一下权值线段树吧,其实感觉就是线段树的本义,就是你用线段树维护了数 ...
- BZOJ_2161_布娃娃_权值线段树
BZOJ_2161_布娃娃_权值线段树 Description 小时候的雨荨非常听话,是父母眼中的好孩子.在学校是老师的左右手,同学的好榜样.后来她成为艾利斯顿第二 代考神,这和小时候培养的良好素质是 ...
- BZOJ_3685_普通van Emde Boas树_权值线段树
BZOJ_3685_普通van Emde Boas树_权值线段树 Description 设计数据结构支持: 1 x 若x不存在,插入x 2 x 若x存在,删除x 3 输出当前最小值,若不存 ...
- B20J_2733_[HNOI2012]永无乡_权值线段树合并
B20J_2733_[HNOI2012]永无乡_权值线段树合并 Description:n座岛,编号从1到n,每座岛都有自己的独一无二的重要度,按照重要度可以将这n座岛排名,名次用1到 n来表示.某些 ...
随机推荐
- python与php生成二维码对比
php生成二维码 include 引入的库单独下载 <?php header("Content-type:text/html;charset=utf-8"); error_r ...
- nyoj56-阶乘因式分解(一)
56-阶乘因式分解(一) 内存限制:64MB时间限制:3000msSpecial Judge: No accepted:6submit:7 题目描述: 给定两个数m,n,其中m是一个素数. 将n(0& ...
- 训练1-S
给出N个正整数,检测每个数是否为质数.如果是,输出"Yes",否则输出"No". Input 第1行:一个数N,表示正整数的数量.(1 <= N < ...
- spring data JPA使用quartz定时器的具体实现
第一步.在pom.xml中的配置 <!--quartz--> <dependency> <groupId>org.quartz-scheduler</grou ...
- JSON 基础学习1
http://www.360doc.com/content/10/0809/22/2633_44873063.shtml JSON转字符串: json.stringify(jsonobj); 字符串转 ...
- <constant name="struts.devMode" value="true" />
<constant name="struts.devMode" value="true" /> 当vlaue为true,表示struts处于开发模式 ...
- 统制Highcharts中x轴和y轴坐标值的密度
统制Highcharts中x轴和y轴坐标值的密度 www.MyException.Cn 发布于:2012-06-26 10:04:13 浏览:688次 1 控制Highcharts中x轴和y轴坐标值的 ...
- hdu 1166 敌兵布阵——(区间和)树状数组/线段树
pid=1166">here:http://acm.hdu.edu.cn/showproblem.php?pid=1166 Input 第一行一个整数T.表示有T组数据. 每组数据第一 ...
- Agile实践日志一 -- Grooming Session
Agile实践日志一 -- Grooming Session GroomingSession 这个Session主要Go through我们下一个Sprint须要做的Story,大家都清楚之后,在每 ...
- BroadcastReceiver类
java.lang.Object ↳ android.content.BroadcastReceiver 已知直接子类 AppWidgetProvider DeviceAdminReceiver ...