[51Nod] 1218 最长递增子序列 V2
如何判断一个元素是否一定在LIS中?设f[i]为以ai结尾的LIS长度,g[i]为以ai开头的LIS长度,若f[i]+g[i]-1==总LIS,那么i就一定在LIS中出现
显然只出现一次的元素一定是必选,剩下的就是可选了。
- #include<algorithm>
- #include<iostream>
- #include<cstring>
- #include<cstdio>
- #include<vector>
- using namespace std;
- const int MAXN=;
- vector<int> vec[MAXN],A,B;
- int tmp[MAXN],mx[MAXN];
- int a[MAXN],f[MAXN],g[MAXN],n;
- int b[MAXN];
- int t[MAXN],t2[MAXN];
- inline void upmax(int &x,int y){x=max(x,y);}
- void update(int x,int w){for(int i=x;i<=n;i+=i&-i)upmax(t[i],w);}
- int query(int x){int _=;for(int i=x;i;i-=i&-i)upmax(_,t[i]);return _;}
- void update2(int x,int w){for(int i=n-x+;i<=n;i+=i&-i)upmax(t2[i],w);}
- int query2(int x){int _=;for(int i=n-x+;i;i-=i&-i)upmax(_,t2[i]);return _;}
- int main(){
- n=rd();
- for(int i=;i<=n;i++)tmp[i]=a[i]=rd();
- sort(tmp+,tmp++n);
- int tot=unique(tmp+,tmp++n)--tmp;
- for(int i=;i<=n;i++)a[i]=lower_bound(tmp+,tmp++tot,a[i])-tmp;
- int mxf=;
- for(int i=;i<=n;i++){
- f[i]=query(a[i]-)+;
- update(a[i],f[i]);
- upmax(mxf,f[i]);
- }
- for(int i=n;i>=;i--){
- g[i]=query2(a[i]+)+;
- update2(a[i],g[i]);
- }
- for(int i=;i<=n;i++){
- if(f[i]+g[i]!=mxf+)continue;
- vec[f[i]].push_back(i);
- }
- for(int i=;i<=n;i++){
- int s=vec[i].size();
- if(s==)continue;
- if(s==){A.push_back(vec[i][]);continue;}
- for(int j=;j<s;j++)B.push_back(vec[i][j]);
- }
- sort(A.begin(),A.end());
- sort(B.begin(),B.end());
- vector<int>::iterator it;
- printf("A:");
- for(it=B.begin();it!=B.end();it++)printf("%d ",*it);
- putchar('\n');
- printf("B:");
- for(it=A.begin();it!=A.end();it++)printf("%d ",*it);
- }
[51Nod] 1218 最长递增子序列 V2的更多相关文章
- [51Nod 1218] 最长递增子序列 V2 (LIS)
传送门 Description 数组A包含N个整数.设S为A的子序列且S中的元素是递增的,则S为A的递增子序列.如果S的长度是所有递增子序列中最长的,则称S为A的最长递增子序列(LIS).A的LIS可 ...
- 51nod 1218 最长递增子序列 V2(dp + 思维)
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1218 题解:先要确定这些点是不是属于最长递增序列然后再确定这 ...
- 51nod 1218 最长递增子序列 V2——LIS+思路(套路)
题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1218 自己怎么连这种 喜闻乐见的大水题 都做不出来了…… 好像见过 ...
- 51nod 1218 最长递增子序列 | 思维题
51nod 1218 最长递增子序列 题面 给出一个序列,求哪些元素可能在某条最长上升子序列中,哪些元素一定在所有最长上升子序列中. 题解 YJY大嫂教导我们,如果以一个元素结尾的LIS长度 + 以它 ...
- 51nod 1134 最长递增子序列
题目链接:51nod 1134 最长递增子序列 #include<cstdio> #include<cstring> #include<algorithm> usi ...
- 51nod 1376 最长递增子序列的数量(线段树)
51nod 1376 最长递增子序列的数量 数组A包含N个整数(可能包含相同的值).设S为A的子序列且S中的元素是递增的,则S为A的递增子序列.如果S的长度是所有递增子序列中最长的,则称S为A的最长递 ...
- 51Nod 1376 最长递增子序列的数量 —— LIS、线段树
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1376 1376 最长递增子序列的数量 基准时间限制:1 秒 空 ...
- LCS 51Nod 1134 最长递增子序列
给出长度为N的数组,找出这个数组的最长递增子序列.(递增子序列是指,子序列的元素是递增的) 例如:5 1 6 8 2 4 5 10,最长递增子序列是1 2 4 5 10. Input 第1行:1个 ...
- 51NOD 1376 最长递增子序列的数量 [CDQ分治]
1376 最长递增子序列的数量 首先可以用线段树优化$DP$做,转移时取$0...a[i]$的最大$f$值 但我要练习$CDQ$ $LIS$是二维偏序问题,偏序关系是$i<j,\ a_i< ...
随机推荐
- PJzhang:web漏洞扫描工具sitadel
猫宁!!! 参考链接:https://www.freebuf.com/sectool/194769.html 转变博客的写作思路,力求精简快捷,不浪费自己或者他人的时间. sitadel是一款精简的w ...
- PAT甲级——1102 Invert a Binary Tree (层序遍历+中序遍历)
本文同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/90577042 1102 Invert a Binary Tree ...
- 51nod1244 莫比乌斯函数之和 杜教筛
虽然都写了,过也过了,还是觉得杜教筛的复杂度好玄学 设f*g=h,∑f=S, 则∑h=∑f(i)S(n/i下取整) 把i=1时单独拿出来,得到 S(n)=(∑h-∑2->n f(i)S(n/i下 ...
- PartTime_一些网站
1. http://www.sxsoft.com/ 貌似 搜搜"破解",无符合条件的结果 http://www.taskcity.com/ "智城",貌似 符合 ...
- C# 连接oracle,用32位client和64位Client,可能导致结果不同
在调用过程[pro_regentinitauth]时,有参数3-6为number类型,当我们用这样调用时,在32位client下,能正确得到输出参数3-6的结果为:1023, 但是,当我们把程序部署到 ...
- 牛客网Java刷题知识点之正则表达式(Matcher、Pattern)
不多说,直接上干货! 正则表达式是什么? 正则表达式是一种可以用于模式匹配和替换的规范, 一个正则表达式就是由普通的字符(例如字符a到z) 以及特殊字符(元字符) 组成的文字模式, 它用以描述在查找文 ...
- sql常用操作(二)数据约束
1.1什么是数据约束: 对用户操作表的数据进行约束 1.2 默认值 作用: 当用户对使用默认值的字段不插入值的时候,就使用默认值. 注意: 1)对默认值字段插入null是可以的. 2)对默认值字段可以 ...
- JavaWeb_03_JavaScript学习小结1
1.javascript的简介 是基于对象和事件驱动的语言,应用于客户端. 基于对象: 提供好了很多对象,可以直接拿过来使用 事件驱动: html做网站静态效果,javascript动态效果 客户端: ...
- .Net平台互操作技术:03. 技术验证
上面两篇文章分别介绍了.Net平台互操作技术面临的问题,并重点介绍了通过P/Invoke调用Native C++类库的技术实现.光说不做是假把式,本文笔者将设计实验来证明P/Invoke调用技术的可行 ...
- uvm_reg_backdoor——寄存器模型(十)
寄存器有前门和后门两种访问方式,这儿只看后门访问方式 //----------------------------------------------------------------------- ...