求序列的最长子序列中不可分割元素的数目。不可分割元素,肯定属于某一个最长子序列,首先做的就是把属于最长子序列的数提取出来,减小查找范围。怎么提取?可以用LIS(最长递增子序列)和LDS(最长递减子序列)。对序列,从前往后,求以每个数 a[i] 为底最长子序列数组index。从后往前,求以每个数a[i]为底的最长递减子序列数组index2。线扫一遍,如果index[i] + index2[i] == length+1(length表示最长子序列的长度),那么这个数就是属于某一个最长子序列的。

  提取出来以后,对每个数a[i],看它所对应的index1[i] 在整个数组中出现几次,如果只出现一次,那么表示这个数是不可分割元素。最后输出!

#include<stdio.h>

const int MAXN=;

int n,a[MAXN],s[MAXN],index[MAXN];//序列存在s里
int lis()//单调降子序列nlogn算法
{
int l,r,mid,len=;
a[]=s[];
index[]=;
for(int i=;i<=n;i++)
{
l=,r=len;
while(l<=r)
{
mid=(l+r)>>;//除2
if(a[mid]<s[i]) l=mid+;//不降
else r=mid-;//二分查找
} a[l]=s[i];//插入
index[i]=l;
if(l>len) len++;//增加长度 }
return len;
} int s2[MAXN],index2[MAXN];//序列存在s2里
int lis2()//单调不升子序列nlogn算法
{
int l,r,mid,len=;
a[]=s2[];
index2[]=;
for(int i=;i<=n;i++)
{
l=,r=len;
while(l<=r)
{
mid=(l+r)>>;//除2
if(a[mid]>s2[i]) l=mid+;//升
else r=mid-;//二分查找
} a[l]=s2[i];//插入
index2[i]=l;
if(l>len) len++;//增加长度 }
return len;
} int hash[MAXN]; int main(){
int i;
while(scanf("%d",&n)!=EOF){
for(i=;i<=n;i++){
scanf("%d",&s[i]);
s2[n-i+]=s[i];
hash[i]=;
}
int len=lis();
lis2(); int add=;
for(i=;i<=n;i++){
if(index[i]+index2[n-i+]==(len+)){
hash[index[i]]++;
}
} for(i=;i<=n;i++){
if(hash[i]==)add++;
} printf("%d\n",add);
}
}

最新文章

  1. 在Ubuntu|CentOS上安装Shutter截图工具及快捷键设置
  2. goim socket丢包粘包问题解决。
  3. JSP 和 Servlet 有哪些相同点和不同点,他们之间的联系是什么?
  4. 有关使用seajs和template模板的总结
  5. 创建数据库指定路径sql
  6. 让内层Div将外层Div撑开
  7. 移动互联网(APP)产品设计的经验分享【转】
  8. Cloudera Hadoop 4 实战课程(Hadoop 2.0、集群界面化管理、电商在线查询+日志离线分析)
  9. 一个有趣的swap函数
  10. Android高效开发环境(Genymotion,Gradle,Andriod Studio)
  11. AtomicInteger的用法
  12. pdf文件之itextpdf操作实例
  13. [转]ZooKeeper的学习与应用
  14. PAT-013 L1-013. 计算阶乘和
  15. yzh的神仙题
  16. Luogu P2743 [USACO5.1]乐曲主题Musical Themes
  17. Canvas-line.html
  18. Division, UVa 72(暴力求解)
  19. Win10系统Ping端口及利用telnet命令Ping 端口
  20. Java语言的主要特点

热门文章

  1. css实现水平 垂直居中
  2. OLT配置学习
  3. ( 转)Sqlserver中tinyint, smallint, int, bigint的区别 及 10进制转换16进制的方法
  4. 高射炮打蚊子丨在VS 2017里用C语言写经典的冒泡排序
  5. 快速求排列组合 lucas定理
  6. ECMAScript 6.0 学习笔记
  7. vue.js 源代码学习笔记 ----- 工具方法 env
  8. PostgreSQL文档编译
  9. selected多次点击不生效
  10. 日尼玛(。・∀・)ノ゙嗨 关于使用netstat时:::*