首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
P3506 [POI2010]MOT-Monotonicity 2
】的更多相关文章
P3506 [POI2010]MOT-Monotonicity 2
题目 P3506 [POI2010]MOT-Monotonicity 2 第一次切掉没题解的题\(qwq\) 做法 首先确定\(a_i\)的位置后显然就能确定\(a_{i+1}\)的位置,建一棵权值线段树,维护\(<,=,>\)三种情况 考虑确定\(a_{i}\)的位置 在\([min,a_{i}-1]\)中找\(<\)的最大值 在\([a_{i}+1,max]\)中找\(>\)的最大值 找\([a_{i},a_{i}]\)的\(=\)的值(其实不用线段树,开个数组就能维护) 比较…
[补档][Poi2010]Monotonicity 2
[Poi2010]Monotonicity 2 题目 给出N个正整数a[1..N],再给出K个关系符号(>.<或=)s[1..k]. 选出一个长度为L的子序列(不要求连续),要求这个子序列的第i项和第i+1项的的大小关系为s[(i-1)mod K+1]. 求出L的最大值. INPUT 第一行两个正整数,分别表示N和K (N, K <= 500,000). 第二行给出N个正整数,第i个正整数表示a[i] (a[i] <= 10^6). 第三行给出K个空格隔开关系符号(>.<…
BZOJ2090: [Poi2010]Monotonicity 2【线段树优化DP】
BZOJ2090: [Poi2010]Monotonicity 2[线段树优化DP] Description 给出N个正整数a[1..N],再给出K个关系符号(>.<或=)s[1..k]. 选出一个长度为L的子序列(不要求连续),要求这个子序列的第i项和第i+1项的的大小关系为s[(i-1)mod K+1]. 求出L的最大值. Input 第一行两个正整数,分别表示N和K (N, K <= 500,000). 第二行给出N个正整数,第i个正整数表示a[i] (a[i] <= 10^…
【BZOJ2090/2089】[Poi2010]Monotonicity 2 动态规划+线段树
[BZOJ2090/2089][Poi2010]Monotonicity Description 给出N个正整数a[1..N],再给出K个关系符号(>.<或=)s[1..k].选出一个长度为L的子序列(不要求连续),要求这个子序列的第i项和第i+1项的的大小关系为s[(i-1)mod K+1].求出L的最大值. Input 第一行两个正整数,分别表示N和K (N, K <= 500,000).第二行给出N个正整数,第i个正整数表示a[i] (a[i] <= 10^6).第三行给出K…
[Poi2010]Monotonicity 2 线段树
这道题考试的时候先打了个dfs暴力.又打了个O(n²)的动规.然后竟然心血来潮拍了一下..明明知道过不去的...然后水了50分(20个测试点这么多啊啊啊啊). 因为它已经提前给你如果长度为i时下一位的符号,显然O(n²)的打法大家都会打. for(i..1..n) for(j..1..i-1) if(符合条件) f[i]=max(f[i],f[j]+1); 然后我们就考虑如何降低复杂度. 因为我们要求的是符合条件的前缀最大值,可以使用线段树来维护. 线段树的下标是权值,内容是最长长度. 一共三种…
Poi2010 Monotonicity 2
树状数组优化dp 可以证明最优解一定是通过之前的最优转移过来的,所以每一个点只需要保存以该节点为结尾的最长长度即可 对于不同符号,等于号维护数组,大于小于维护树状数组 #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<cmath> #define N 500005 using namespace std; int n,m,a[N],…
Monotonicity 2[POI2010]
题目描述 给出N个正整数a[1..N],再给出K个关系符号(>.<或=)s[1..k].选出一个长度为L的子序列(不要求连续),要求这个子序列的第i项和第i+1项的的大小关系为s[(i-1)mod K+1].求出L的最大值. 输入 第一行两个正整数,分别表示N和K (N, K <= 500,000).第二行给出N个正整数,第i个正整数表示a[i] (a[i] <= 10^6).第三行给出K个空格隔开关系符号(>.<或=),第i个表示s[i]. 输出 一个正整数,表示L的…
#14 [BZOJ2090/2089] [Poi2010]Monotonicity 2/Monotonicity
题解: 首先想到了标算..然后证明了一发是错的(事实证明很智障) 先说正确性比较显然的O(n^2)算法 令f[i][j]表示前i个物品,匹配到第j个括号,最大值是多少 g[i][j]表示前i个物品,匹配到第j个括号,最小值是多少 然后这个转移是O(1)的 状态是n^2的 被状态局限了就没法优化了 标算: 令f[i]表示取第i个的情况下最大到达的位置,f[i+1]由f[ 1-----i ]转移 我们来证明一下这个的正确性 原命题:每个f[i]一定是由前面某个f[j]转移过来 逆命题:其中有一个f[…
BZOJ2090 : [Poi2010]Monotonicity 2
设f[i]表示以i为结尾的最长的合法序列的长度,=号直接维护,<号和>号用两棵树状数组维护即可,时间复杂度$O(n\log n)$. #include<cstdio> #define N 1000000 int n,k,i,j,a[N],e[N+1],bl[N+1],bg[N+1],f[N],ans;char s[N]; inline void read(int&a){char c;while(!(((c=getchar())>='0')&&(c<…
bzoj2089&2090: [Poi2010]Monotonicity
双倍经验一眼题... f[i][1/2]表示以i结尾,当前符号应该是</>的最长上升子序列, 用BIT优化转移就好 =的话就不用说了吧= = #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<algorithm> using namespace std; , inf=1e9+; int n, m, N, ans, ans1,…