hdu 5256 序列变换
2024-08-30 21:02:49
最长上升子序列 nlogn;也是从别人的博客学来的
#include<iostream>
#include<algorithm>
#define maxn 100000+5
using namespace std;
int n;
int a[maxn];
int solve(int b[],int l)
{
int f[maxn];//f[i]表示子序列长度为i+1的序列中,末尾元素最小的元素的值
int k=0;
f[k++]=b[0];
for(int i=1;i<l;i++)
{
if(b[i]>=f[k-1]) f[k++]=b[i];
else
{
int pos=upper_bound(f,f+k,a[i])-f;
f[pos]=a[i];
}
}
return k;
}
int main()
{
cin.sync_with_stdio(false);
int t;
cin>>t;
int flag=1;
while(t--)
{
cin>>n;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
a[i]=x-i;
}
int re=solve(a,n);
cout<<"Case "<<"#"<<flag++<<":"<<endl;
cout<<n-re<<endl;
}
return 0;
}
最新文章
- 用Kotlin开发Android应用(III):扩展函数和默认值
- 微信开发系列----02:实现POST请求响应
- easyui-datagrid自动合并行
- iOS开发-xCode代码格式化xAlign
- C++Builder及VC的库相互调用
- [python]python元类
- 转:C# 使用NLog记录日志
- FXK Javascript
- mysql建库DATETIME、DATE 和 TIMESTAMP区别
- HDU1056 HangOver
- TQ210裸机编程(2)——LED流水灯
- Python中列表的常用操作
- php出现Can&#39;t use function return value in write context
- JVM之Java虚拟机详解
- C#2.0 迭代器
- c++中sizeof的理解
- 6、LwIP协议规范翻译——缓冲及内存管理
- Linux 忘记了mysql 密码
- Fiddler抓取https设置详解
- UVa 11806 拉拉队(容斥原理)