P4093 [HEOI2016/TJOI2016]序列 题目描述 佳媛姐姐过生日的时候,她的小伙伴从某宝上买了一个有趣的玩具送给他.玩具上有一个数列,数列中某些项的值可能会变化,但同一个时刻最多只有一个值发生变化.现在佳媛姐姐已经研究出了所有变化的可能性,她想请教你,能否选出一个子序列,使得在任意一种变化中,这个子序列都是不降的?请你告诉她这个子序列的最长长度即可 . 注意:每种变化最多只有一个值发生变化.在样例输入1中,所有的变化是: 1 2 3 2 2 3 1 3 3 1 1 3 1 2 4…
洛谷 P4093 [HEOI2016/TJOI2016]序列 CDQ分治优化DP 题目描述 佳媛姐姐过生日的时候,她的小伙伴从某宝上买了一个有趣的玩具送给他. 玩具上有一个数列,数列中某些项的值可能会变化,但同一个时刻最多只有一个值发生变化.现在佳媛姐姐已经研究出了所有变化的可能性,她想请教你,能否选出一个子序列,使得在任意一种变化中,这个子序列都是不降的?请你告诉她这个子序列的最长长度即可. 输入格式 输入的第一行有两个正整数 \(n,m\),分别表示序列的长度和变化的个数. 接下来一行有 \…
原文链接http://www.cnblogs.com/zhouzhendong/p/8672434.html 题目传送门 - BZOJ4553 题目传送门 - 洛谷P4093 题解 设$Li$表示第$i$个位置最小值,$Ri$表示最大值$vi$表示原值. 那么如果$i$能到$j$这个位置,则满足: $i<j$ $rj\leq xi$ $xi\leq li$ 于是CDQ分治水过. 代码 #include <bits/stdc++.h> using namespace std; const…
题面 好久没写博客了..最近新学了CDQ...于是就来发一发一道CDQ的练习题 看上去就是可以dp的样子. 设\(dp_{i}\)为以i结尾的最长不下降序列. 易得:\(dp_{i}\)=\(max(dp_{j})+1\)\((j<=i\)&&\(Max_{j}<=a_{i}\)&&\(a_{j}<=Min_{i})\) \(Max_{i}\)和\(Min_{i}\)表示第i个点所有变化中的最大值和最小值. 我们考虑用一个什么东西来维护这个dp. 我的第一…
题面 luogu 题解 \(Cdq分治+dp\) \(mx[i],mn[i]\)分别表示第\(i\)位最大,最小能取到多少 那么有 \(j < i\) \(mx[j] \le a[i]\) \(a[j] \le mn[i]\) 然后就有了50分 \(O(n^2)\)的\(dp\) 上面那个东西是个三维偏序, \(Cdq\)优化一下即可. Code 50pts #include<bits/stdc++.h> #define LL long long #define RG register…
题目描述 佳媛姐姐过生日的时候,她的小伙伴从某宝上买了一个有趣的玩具送给他.玩具上有一个数列,数列中某些项的值可能会变化,但同一个时刻最多只有一个值发生变化.现在佳媛姐姐已经研究出了所有变化的可能性,她想请教你,能否选出一个子序列,使得在任意一种变化中,这个子序列都是不降的?请你告诉她这个子序列的最长长度即可 . 注意:每种变化最多只有一个值发生变化.在样例输入1中,所有的变化是: 1 2 3 2 2 3 1 3 3 1 1 3 1 2 4 选择子序列为原序列,即在任意一种变化中均为不降子序列在…
题目链接 题意分析 我们假设每一个数都有一个变动范围\([L_i,R_i]\) 那么我们令\(dp[i]\)表示以\(i\)结尾的最长不下降子序列的长度 那么就是\(dp[i]=max\{dp[j]+1\}\) 转移的条件是 \(1.j<i\) \(2.r_j≤a_i\) \(3.a_j≤l_i\) 所以这就是一个三位偏序问题了 同时需要注意的是 我们当前对于\([l,r]\)区间 我们由于必须要遵循从左向右更新的性质 所以先处理好\([l,mid]\)有\([l,mid]\)向\((mid,r…
hdu 5618 Jam's problem again #include <bits/stdc++.h> #define MAXN 100010 using namespace std; int n,k,T,xx; int ans[MAXN],c[MAXN],f[MAXN]; struct Node{ int x,y,z,id; }a[100010],b[100010]; inline int read(){ char ch; bool f=false; int res=0; while (…
这道题原来很水的? noteskey 一开始以为是顺序的 m 个修改,然后选出一段最长子序列使得每次修改后都满足不降 这 TM 根本不可做啊! 于是就去看题解了,然后看到转移要满足的条件的我发出了黑人问号... 然后才发现原来是求的子序列是满足任意一次修改后不降... 于是列出两(san)个条件式子,就可以 CDQ 切掉了 QWQ \(j<i\) \(a_j<min_i\) \(max_j<a_i\) 这里的 max 和 min 就是某个位置上出现过的最 大/小 值 watch out…
题目传送门:洛谷P4093. 题意简述: 给定一个长度为 \(n\) 的序列 \(a\). 同时这个序列还可能发生变化,每一种变化 \((x_i,y_i)\) 对应着 \(a_{x_i}\) 可能变成 \(y_i\). 不会同时发生两种变化. 需要找出一个最长的子序列,使得这个子序列在任意一种变化下都是不降的. 只需要求出这个子序列的长度即可. 注意:可以不发生任何变化. 题解: 记 \(f[i]\) 为以第 \(i\) 项结尾的子序列最长长度. 则有转移:\(f[i]=\max_{j<i}(f…