HDU 5748 Bellovin(LIS nlogn)
来源:互联网 发布:女王升级数据2017 编辑:程序博客网 时间:2024/05/21 09:15
坑点:
注意在二分的时候不要减一,比如:
if(key < mid){ r = mid - 1;}
这样的话可能把我们需要改的数据跳过去。。。。
坑死我了。
#include <iostream>#include <cstdio>#include <string.h>#include <queue>#include <cmath>#include <algorithm>#include <map>typedef long long int lli;using namespace std;int dp[100100];int cnt;int a[100100];int ans[100100];int bs(int key){ int l = 1,r = cnt; int mid = (l+r) >> 1; while(l < r && r-l > 3){ mid = (l+r) >> 1; if(dp[mid] == key){ return mid; } if(dp[mid] > key) r = mid; else l = mid; } for(int i = l;i <= r;i++){ if(dp[i] >= key){ dp[i] = key; return i; } } return 233333333333;}int main(){ int t; cin>>t; int n; while(t--){ cnt = 1; scanf("%d",&n); for(int i = 1;i <= n;i++){ scanf("%d",a+i); } dp[1] = a[1]; ans[1] = 1; for(int i = 2;i <= n;i++){ if(a[i] > dp[cnt]){ dp[++cnt] = a[i]; ans[i] = cnt; } else{ ans[i] = bs(a[i]); } } for(int i = 1;i <= n;i++){ if(i != 1) printf(" "); printf("%d",ans[i]); } puts(""); }}
0 0
- HDU 5748 Bellovin(LIS nlogn)
- hdu 5748 Bellovin(LIS)
- HDU 5748 (Bellovin LIS)
- HDU 5748 Bellovin(LIS)
- 【HDU】5748 - Bellovin(LIS)
- HDU 5748 Bellovin(LIS)
- HDU 5748 Bellovin (LIS)
- LIS hdu 5748 (Bellovin)
- HDU-5748-Bellovin【LIS】
- 【HDU】-5748-Bellovin(LIS,变化)
- HDU-5748 Bellovin 【LIS(STL应用)】
- HDU:5748 Bellovin(LIS+打表)
- HDU Problem 5748 Bellovin 【LIS】
- Bellovin【hdu 5748 dp lis】
- hdu 5748 Bellovin【nlogn最长递增子序列】
- HDU 5748 Bellovin(最长上升子序列[nlogn])
- HDOJ 5748 Bellovin(LIS)
- HDOJ-----5748Bellovin(LIS)
- Windows版本搭建安装React Native环境配置 count not find tools.jar问题
- 《构建之法》 第八章需求分析
- 利用OpenCV和C++实现由RGB图像转化为灰度图,再将灰度图转化为二值图的程序
- Hibernate 实体类 映射文件使用注解方式 经典报错以及解决方法
- Android Studio目录结构
- HDU 5748 Bellovin(LIS nlogn)
- 1183
- Bootstrap 字体图标(Glyphicons)
- 配置openvswitch kvm虚拟机环境
- node学习-1
- android NTP鉴权
- Hibernate -- 映射实体关联关系(多对多关联关系)
- 123
- View的事件传递