算法_动态规划_最长单调递增子序列问题(O(nlogn)的时间复杂度)
2016-04-07 23:23
543 查看
import java.util.Scanner; public class Main { static int n; static int[] arr; static int[] dp; /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); n=sc.nextInt(); arr=new int ; dp=new int[n+1]; for(int i=0;i<n;i++){ arr[i]=sc.nextInt(); } int flag=1; dp[1]=arr[0]; for(int i=1;i<n;i++){ if(arr[i]>dp[flag]){ dp[++flag]=arr[i]; }else{ int index=binarySearch(i,flag); dp[index]=arr[i]; } } System.out.println(flag); } static int binarySearch(int i,int flag){ int high=flag; int low=1; while(true){ if(high<low){ return low; } if(high==low){ return high; } int mid=(high+low)/2; if(arr[i]==dp[mid]){ return mid; }else if(arr[i]<dp[mid]){ high=mid-1; }else{ low=mid+1; } } } }
相关文章推荐
- anacron实现异步定时任务调度
- 了解常见的浏览器内核 Trident,Geckos,Presto,Webkit
- Linux大神们 你们任重而道远
- Android自定义控件系列九:从源码看Android触摸事件分发机制
- linux命令记录
- BZOJ 3626 LNOI 2014 LCA 树链剖分
- DOCTYPE声明的几种类型
- Android权限扫描工具
- 【bzoj4455】[Zjoi2016]小星星
- zcmu1138
- Java中的Runnable、Callable、Future、FutureTask的区别与示例
- 153 mysql索引优化入门
- django 1.8 日志配置
- C# 使用正则表达式去掉字符串中的数字,或者去掉字符串中的非数字
- Spring Aop
- 将电脑变成外网可访问的服务器
- 黎活明给程序员的忠告
- Spring Boot Web应用的异常处理
- Mycat 数据库分库分表中间件
- 对WinForm的App.config文件进行加密