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 ...
随机推荐
- 常用邮件SMTP POP3服务器地址大全
#阿里云邮箱(mail.aliyun.com): POP3服务器地址:pop3.aliyun.com(SSL加密端口:995:非加密端口:110) SMTP服务器地址:smtp.aliyun.com( ...
- PERCONA-TOOLKIT 安装 使用
1.基于MySQL主从环境 可以参考https://www.cnblogs.com/xianglei_/p/12068241.html 上传rpm包 并安装 1 2 cd /usr/local/src ...
- 【转】mysql卸载(windows)
作者:cxy_Summer 来源:CSDN 原文:https://blog.csdn.net/cxy_Summer/article/details/70142322 版权声明:本文为博主原创文章,转载 ...
- [转帖][Linux]systemd和sysV
[Linux]systemd和sysV 转自:https://www.cnblogs.com/EasonJim/p/7168216.html 在Debian8中systemd和sysVinit同时 ...
- Java 读取application.properties配置文件中配置
实际开发中若需要读取配置文件application.properties中的配置,代码如下.例:读取配置文件中name属性配置值: 代码如下: import org.springframework.c ...
- Being a Good Boy in Spring Festival
Being a Good Boy in Spring Festival Problem Description 一年在外 父母时刻牵挂春节回家 你能做几天好孩子吗寒假里尝试做做下面的事情吧 陪妈妈逛一 ...
- transform(转https://blog.csdn.net/qq_24189933/article/details/79293870)
transform 前面我们一起学习了CSS3中的渐变.圆角.阴影等几个属性的使用,今天开始我们一起来学习有关于CSS3制作动画的几个属性:变形(transform).转换(transition)和动 ...
- javaweb:关于HttpServletResponse介绍 (转)
出处: https://www.cnblogs.com/xdp-gacl/p/3789624.html Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request ...
- Codeforces 1209E2. Rotate Columns (hard version)
传送门 发现 $n$ 很小,考虑状压 $dp$,但是如果强行枚举列并枚举置换再转移复杂度太高了 考虑推推结论,发现我们只要保留列最大值最大的 $n$ 列即可,证明好像挺显然: 假设我们让列最大值比较小 ...
- CSS hack(过滤器)
CSS hack概念: 是针对不同浏览器对同一段代码解析不同的处理方案:<解决兼容性问题> 属性设置在不同版本的IE里会出现不兼容问题,css hack解决兼容主流浏览器和IE 常见的过滤 ...