双关键字LIS】的更多相关文章

首先对于双关键字的LIS有一个比较暴力的方法,就是线段树套平衡树,我们把双关键字的LIS抽象成二维坐标系中的点,这样我们对于当前转移的点i(x,y),需要找的就是在(xx,yy)xx<x,yy<y中的决策点的最大值是多少,这样我们用线段树维护第一维坐标,用sbt或者是线段树维护第二维坐标,这样就可以了. 但是树套树的常数非常大,将线段树改为BIT之后虽然对常数有一些优化,但还是较大,所以我们需要考虑另一种方法. 在求单关键字的LIS的时候,有一种nlogn的二分做法,大概意思是维护一个b[i]…
一个萌新的成长之路 Background 在做题过程中,我们常会遇到对双关键字排序的情况,如:当分数相等时,序号小的在前. 这时我们可以通过定义cmp函数作为sort的参数进行排序. Solution 定义一个结构体,包含我们所需的关键字.例如,这是一个包含分数,序号和姓名的结构体. struct node{ int id,score; string name; }; 实现cmp函数,这里使用了两组不同的关键字. bool cmp_score_id(node a,node b) { if(a.s…
#include<bits/stdc++.h> using namespace std; struct node{ int l,r; }num[]; int w_comp(const node &a,const node &b){ if (a.l!=b.l) return a.l>b.l;//先比较第一个关键字,从大到小排序 return a.r<b.r;//比较第二个关键字,从小到大排序 } int main(){ int n; cin>>n; ;i&…
题目大意: 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的. 只需要再更新的时候判断一下就好 void dijstra(int s) { dist[s]=0; for(int i=1;i<=n;i++) { s=findmin(); visit[s]=1; for(int j=1;j<=n;j++) { if(dist[j]>dist[s]+MAP[s][j]) { dist[j]=dis…
#include <vector> #include <iostream> #include <algorithm> using namespace std; bool strict_weak_ordering(const pair<int,string> a, const pair<int,string> b) { return a.first > b.first; } //通过运算符重载,利用sort函数实现降序排列 int main(…
拦截导弹 题意:求最长不上升子序列长度:求一个序列最少分成几个非增子序. 第一问易求,已知序列a,令f[i]为a前i个元素的最长非增子序的长度,则有 f[i]=max{f[i],f[j]+1} (1<=j<=i-1且h[j]>=h[i]). LIS另有nlogn做法,设g[i]为长度为i的最长不上升结尾最小是什么,二分查找更新次数组可得长度.解本题则可以倒序做LIS. 对于第二问,可以维护一个单调序列,为现有导弹拦截系统的最大高度,顺序处理序列,每次贪心的使用大于该导弹高度最小的来拦截这…
*感谢两位浙江大佬带我飞 贴下成绩 div2 div1 *div2不是我打的上个厕所就5/11了 比赛小结 A [题目大意] 有n(n<=500)个机场,两两之间距离是g[i][j],每经停一个机场需要p[i]的时间维修 有m条线路,描述为出发机场,终点机场,出发时间,求航空公司至少需要多少架飞机 每条航线必须直飞 但是转机的时候可以劲停多个机场 [题解] 首先一架飞机能在完成航线A后去飞航线B的条件很显然.就是 表示两点间最短路.那么我们可以用这个不等式把问题转化为最小路径覆盖问题 我想了下这…
t1 Convention 题目大意 每一头牛都有一个来的时间,一共有\(n\)辆车,求出等待时间最长的那头牛等待的最小时间. 解法 第一眼看到这道题还以为是\(2018noip\)普及组的t3魔鬼题,但是不一样. 我们因为要查找最大最小值,很容易就想到用二分查找. 那么直接查找答案,也就是等待的时间,然后用\(O(n)\)的复杂度的贪心验证就可以了,放的下且能放进去,那么就放. 总体复杂度是\(O(nlogn)\) \(ps.\)要注意边界的判断. t2 Convention II 题目大意…
目录 语法 c++ java 动态规划 多重背包 最长不下降子序列 计算几何 向量(结构体) 平面集合基本操作 二维凸包 旋转卡壳 最大空矩形 | 扫描法 平面最近点对 | 分治 最小圆覆盖 | 随机增量法 三维向量(结构体) 三维凸包 几何杂项 数据结构 ST表 单调队列 树状数组 线段树 并查集 左偏树 珂朵莉树,老司机树 莫队 二叉搜索树 一些建议 图论 图论的一些概念 图论基础 最短路径 最小生成树 树论的一些概念 最近公共祖先 联通性相关 图上的NP-hard问题 弦图+区间图 | 最…
A. LCIS 蓝书原题,CF10D 弱化版 首先直接把 LIS 和 LCS 合起来设计一个 DP . 设 \(dp_{i,j}\) 表示 \(A_{1\dots i}\) 和 \(B_{1\dots j}\) 的以 \(B_j\) 结尾的 LCIS,则: \[dp_{i,j}=\begin{cases}\displaystyle \max_{k<j, B_k<B_j}\{dp_{i-1,k}\}&A_i=B_j\\dp_{i-1,j}&A_i\neq B_j\end{case…