博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu_5773_The All-purpose Zero(LIS)
阅读量:4442 次
发布时间:2019-06-07

本文共 972 字,大约阅读时间需要 3 分钟。

题目链接:

题意:

给你一串数,让你求LIS,不过这里的0可以改变为任意数

题解:

官方题解讲的很清楚

1010 The All-purpose Zero

0可以转化成任意整数,包括负数,显然求LIS时尽量把0都放进去必定是正确的。因此我们可以把0拿出来,对剩下的做O(nlogn)的LIS,统计结果的时候再算上0的数量。为了保证严格递增,我们可以将每个权值S[i]减去i前面0的个数,再做LIS,就能保证结果是严格递增的。

1 #include
2 #define F(i,a,b) for(int i=a;i<=b;++i) 3 using namespace std; 4 5 const int N=1e5+7; 6 int a[N],b[N]; 7 int main(){ 8 int t,n,tp,ic=1; 9 scanf("%d",&t);10 while(t--)11 {12 scanf("%d",&n);13 int cnt=0,ed=0,len;14 F(i,1,n)15 {16 scanf("%d",&tp);17 if(tp)a[++ed]=tp-cnt;else cnt++;18 }19 if(!ed)printf("Case #%d: %d\n",ic++,n);20 else{21 b[len=1]=a[1];22 F(i,2,ed)if(a[i]>b[len])b[++len]=a[i];23 else b[lower_bound(b+1,b+1+len,a[i])-b]=a[i];24 printf("Case #%d: %d\n",ic++,len+cnt);25 }26 }27 return 0;28 }
View Code

 

转载于:https://www.cnblogs.com/bin-gege/p/5718547.html

你可能感兴趣的文章
synchronized同步方法和同步代码块的区别
查看>>
php 语音参考
查看>>
在textarea里实现获取光标位置和选中内容
查看>>
ASP.NET_正则表达式_匹配HTML中的一行或多行
查看>>
实验1-1 Hello World!
查看>>
vbs各种排序,字符串从小到大(升序)排序
查看>>
elk日志平台搭建小记
查看>>
链接 DB App.config 解析
查看>>
标签树的三种遍历
查看>>
网盘搜索引擎
查看>>
身心疲惫
查看>>
PHP判断一个变量是否可以通过foreach进行遍历
查看>>
初探CSS -3 语法
查看>>
数据结构与算法 -- 图(邻接矩阵)原理详解
查看>>
iso镜像文件的挂载和yum库的搭建
查看>>
管理之道(十二) - 让员工随时看到工作成果
查看>>
ZooKeeper注册中心安装详细步骤(单节点)
查看>>
phpstorm MAC快捷键
查看>>
ES6教程-字符串,函数的参数,了解函数的arguments对象,js面向对象,设计模式-单例模式,解构赋值...
查看>>
如何画好架构图?
查看>>