Codeforces 960F Pathwalks ( LIS && 树状数组 )
题意 : 给出若干个边,每条边按照给出的顺序编号,问你找到一条最长的边权以及边的编号同时严格升序的一条路径,要使得这条路径包含的边尽可能多,最后输出边的条数
分析 :
这题和 LIS 很相似,不同的是加多了一个需要边和边相连这一条件
考虑使用树状数组求 LIS 的方法来考虑这题
如果你还不知道 LIS 还能用树状数组做 ==> Click here
由于有了只有能够构成路径的边才能搭配成子序列这一限制
我们将原本一维的树状数组开成二维
增加的维度表示以某个图中顶点为结尾这一状态
定义二维树状数组 c[Node][Weight]
表示以顶点(图中的顶点) Node 为结尾、边权为 Weight 时候的 LIS 长度
然后对于边 (a、b、w) 用 c[a][w] + 1 去更新 c[b][w] 即可
更新过程类似树状数组求解 LIS 问题一样
最后就是这题貌似还能用主席树等可持久化数据结构做
待我研究后补上.......
#include<bits/stdc++.h>
#define lowbit(i) (i & (-i))
using namespace std;
;
const int INF = 0x3f3f3f3f;
map<int, int> c[maxn];///1e5的二维数组开不下、采用map来代替开
int N, M;
int query(int i, int w)
{
;
){
ret = max(ret, c[i][w]);
w -= lowbit(w);
}
return ret;
}
void update(int i, int w, int val)///update的时候注意w不能为 0
{
while(w < maxn){
c[i][w] = max(c[i][w], val);
w += lowbit(w);
}
}
int main(void)
{
scanf("%d %d", &N, &M);
int a, b, w, MX = -INF;
; i<=M; i++){
scanf("%d %d %d", &a, &b, &w);
MX = max(MX, ++w);
update(b, w, query(a, w-)+);
}
;
; i<=N; i++)
ans = max(ans, query(i, MX));
printf("%d\n", ans);
;
}
Codeforces 960F Pathwalks ( LIS && 树状数组 )的更多相关文章
- [Codeforces 1208D]Restore Permutation (树状数组)
[Codeforces 1208D]Restore Permutation (树状数组) 题面 有一个长度为n的排列a.对于每个元素i,\(s_i\)表示\(\sum_{j=1,a_j<a_i} ...
- 【Codeforces】Gym 101156E Longest Increasing Subsequences LIS+树状数组
题意 给定$n$个数,求最长上升子序列的方案数 根据数据范围要求是$O(n\log n)$ 朴素的dp方程式$f_i=max(f_j+1),a_i>a_j$,所以记方案数为$v_i$,则$v_i ...
- Codeforces 650D - Zip-line(树状数组)
Codeforces 题目传送门 & 洛谷题目传送门 我怕不是个 nt--一开始忽略了"询问独立"这个条件--然后就一直在想有什么办法维护全局 LIS--心态爆炸 首先离散 ...
- Codeforces 1139F Dish Shopping 树状数组套平衡树 || 平衡树
Dish Shopping 将每个物品拆成p 和 s 再加上人排序. 然后问题就变成了, 对于一个线段(L - R), 问有多少个(li, ri)满足 L >= li && R ...
- Codeforces 830B - Cards Sorting 树状数组
B. Cards Sorting time limit per test 1 second memory limit per test 256 megabytes input standard inp ...
- CodeForces 522D Closest Equals 树状数组
题意: 给出一个序列\(A\),有若干询问. 每次询问某个区间中值相等且距离最短的两个数,输出该距离,没有则输出-1. 分析: 令\(pre_i = max\{j| A_j = A_i, j < ...
- codeforces 589G G. Hiring(树状数组+二分)
题目链接: G. Hiring time limit per test 4 seconds memory limit per test 512 megabytes input standard inp ...
- HDU - 5542 The Battle of Chibi(LIS+树状数组优化)
The Battle of Chibi Cao Cao made up a big army and was going to invade the whole South China. Yu Zho ...
- CodeForces–830B--模拟,树状数组||线段树
B. Cards Sorting time limit per test 1 second memory limit per test 256 megabytes input standard inp ...
随机推荐
- 【miscellaneous】网络摄像机
自20世纪90年代初期网络摄像机开始诞生,产业已历经20余年的演变. "IP大时代"的口号在安防领域已响彻已久,但也是自2015年至今才开使有了真正的底气.当全面超越模拟已尘埃落定 ...
- windows qt 使用openssl API
1.下载安装openssl http://dl.pconline.com.cn/download/355862-1.html 版本: OpenSSL(Win32) 1.0.1g 2.配置QT项目文件, ...
- vue.js之过渡动画
vue提供了一个封装动画的组件 <transition name="tr"></transition>,将需要执行动画的元素包裹在该组件中,在通过css修改 ...
- HTTP请求报文(请求行、请求头、请求体)
HTTP协议 1.简介 HTTP协议(Hyper Text Transfer Protocol,超文本传输协议),是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的 ...
- Largest Beautiful Number CodeForces - 946E (贪心)
大意: 定义一个好数为位数为偶数, 且各位数字重排后可以为回文, 对于每个询问, 求小于$x$的最大好数. 假设$x$有$n$位, 若$n$为奇数, 答案显然为$n-1$个9. 若为偶数, 我们想让答 ...
- element-ui select 下拉框位置错乱--解决
element-ui select 下拉框位置错乱 由于使用 element-ui 的 select 组件时,下拉框的位置错乱了. 开始查找问题 通过各种问题查找,发现是 css 问题 css bod ...
- Mac下的常用快捷键总结
由于在公司的时候是使用的Windows下进行开发工作,但是回家之后,有时候要使用自己的Mac进行开发等工作,那么流利的使用快捷键就变得尤其的重要. 1. 退出软件 cmd + q 2.将最前面的窗口最 ...
- PDF转图片,在线PDF转JPG/PNG
[在线DEMO](https://oktools.net/pdf2img) 原理 使用pdf.js预览图片,pdf.js将pdf通过canvas将每一页渲染出来,然后我们通过canvas的toData ...
- 从POST与GET、REQUEST响应的php和asp写法对比谈数据过滤
<!DOCTYPE html><!--To change this license header, choose License Headers in Project Propert ...
- laravel 添加筛选方式
protected function grid() { return Admin::grid(Client::class, function (Grid $grid) { $grid->id(' ...