动态规划:LIS优化

对于1D/1D动态规划来说,理论时间复杂度都是O(n^2)的,这种动态规划一般都可以进行优化,贴一篇文章

https://wenku.baidu.com/view/e317b1020740be1e650e9a12.html

这里介绍最简单的一种,LIS的求法

其实就是二分,找单调性来二分

HDU1950是一道裸题

 1 #include <iostream>
 2 #include<cstring>
 3 #include <algorithm>
 4 #define INF 0x3f3f3f3f
 5 using namespace std;
 6 const int N = 1e5 + 5;
 7 int s[N];
 8 int n,p,a[N];
 9 int len;
10 int main()
11 {
12     cin>>n;
13     while(n--){
14         cin>>p;
15         memset(s,0,sizeof(s));
16         for(int i = 0;i<p;i++)cin>>a[i];
17         s[1] = a[0];len = 1;//长度从1开始
18         for(int i = 1;i<p;i++){
19  
20             int t = a[i];
21             if(t>s[len])s[++len] = a[i];
22             else{
23         /*************/int l = 1,r = len,mid;//这里的二分法采用了左闭右闭的思路
24                <span style="white-space:pre">            </span>int ans = 0;
25                 while(l<=r)
26                 {
27                     mid = (l+r)/2;
28                     if(s[mid]<t)
29                         {l = mid +1;ans = max(ans,mid);}//ans即为思路中的j,j必然为s数组中小于t的最大的数
30                     else r = mid-1;
31                 }
32                 s[ans+1] = t;/******************/
33             }
34         }
35         //for(int i = 1;i<p;i++){cout<<s[i];}//有必要可以打开看看s中存的是什么值
36         cout<<len<<endl;
37     }
38     return 0;
39 }

然后

1 int p = lower_bound(s+1,s+len+1,t)-s;
2 s[p] = t;

如果觉得不对可以找到合唱队形那个题的程序对拍一下子

转载于:https://www.cnblogs.com/aininot260/p/9627043.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/352837.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

maven 版本号插件_Maven内部版本号插件–用法示例

maven 版本号插件假设我们需要向一些工件&#xff08;jar&#xff0c;war等&#xff09;添加内部版本号。 在这里&#xff0c;我想演示buildnumber-maven-plugin的用法。 这篇文章基于&#xff1a; http://mojo.codehaus.org/buildnumber-maven-plugin/usage.html http://www…

c语言程序设计课件第二章,c语言程序设计课件张元国 ISBN9787566300386 PPT第二章数据类型 运算符与表达式...

1、第2章 数据类型、运算符与表达式,语言的数据类型 常量与变量 运算符与表达式 不同类型数据间的转换,2.1语言的数据类型,数据是计算机程序处理的所有信息的总称&#xff0c;数值、字符、文本等都是数据&#xff0c;在各种程序设计中几乎都要使用和处理数据&#xff0c;程序设…

nowcoder172C 保护 (倍增lca+dfs序+主席树)

https://www.nowcoder.com/acm/contest/172/C &#xff08;sbw大佬太强啦 orz&#xff09; 先把每一个路径(x,y)分成(x,lca),(y,lca)两个路径&#xff0c;然后就能发现&#xff0c;对于某两个&#xff08;直上直下的&#xff09;路径a,b&#xff0c;b的下端点在a的下端点子树中…

添用户报错:useradd:警告:此主目录已经存在

转载自&#xff1a;http://blog.csdn.net/lele892207980/article/details/17239347 建立mysql用户、组 groupadd mysql useradd -g mysql mysql 然后删除 userdel mysql 再添用户和组加时&#xff0c;提示&#xff1a; useradd&#xff1a;警告&#xff1a;此主目录已经存在。…

专业本的C语言,以解决本专业问题为导向的C语言程序设计课程教学探索

以解决本专业问题为导向的C语言程序设计课程教学探索发布时间:2019-08-07 来源: 摘 要 针对C语言程序设计课程在计算机及其相关专业中存在的“狭义工具论”的教学现状&#xff0c;本着“以应用能力培养为目标、以计算思维为手段”的原则进行知识选取和教学内容、教学案例、教学…

HotSpot增量Java垃圾收集器

在我最近的博客文章“ 确定活动的HotSpot垃圾收集器”中 &#xff0c;我描述了可用于确定HotSpot JVM &#xff08;Java进程&#xff09;正在使用的垃圾收集器&#xff08;当从命令行参数&#xff08;标志&#xff09; 中看不出来&#xff09;时可以使用的不同方法。传递给Java…

修改已存在用户的所属组(usermod用法)

转载自&#xff1a;http://blog.163.com/zhzh_lin/blog/static/40538715200771503221224/ 修改使用者帐号 名称 usermod - 修 改 使 用 者 帐 号 语法 usermod [-c comment] [-d home_dir [ -m]] [-e expire_date] [-f inactive_time] [-g initial_group] [-G group[,.…

c语言如何查找空指针,c语言中的空指针

#include#include#define SAFE_MALLOC(n) safe_malloc(n)#define SAFE_FREE(p)safe_free((int**)(&(p)))//将变量指针赋值为空指针//若变量本身为空&#xff0c;则提示出现野指针void safe_free(int **p){if(*p){free(*p);*p NULL;printf("这不是野指针!!!,好开心. _…

eclipse pmd使用_使用您自己的规则在Eclipse中自定义PMD

eclipse pmd使用PMD是非常好的Java代码扫描程序&#xff0c;可帮助您避免潜在的编程问题。 它可以轻松扩展以满足您的需求&#xff0c;并且本文将为您带来与JPA的Enumerated注释用法相关的自定义PMD规则的简单示例。 在继续阅读之前&#xff0c;您应该检查我以前的文章之一-JPA…

linux bash source 0,linux中BASH_SOURCE[0](转)

在C/C中&#xff0c;__FUNCTION__常量记录当前函数的名称。有时候&#xff0c;在日志输出的时候包含这些信息是非常有用的。而在Bash中&#xff0c;同样有这样一个常量FUNCNAME&#xff0c;但是有一点区别是&#xff0c;它是一个数组而非字符串&#xff0c;其中数组的第一个元素…

如何将自定义数据源集成到Apache Spark中

如今&#xff0c;流数据是一个热门话题&#xff0c;而Apache Spark是出色的流框架。 在此博客文章中&#xff0c;我将向您展示如何将自定义数据源集成到Spark中。 Spark Streaming使我们能够从各种来源进行流传输&#xff0c;同时使用相同的简洁API访问数据流&#xff0c;执行…

linux用户管理练习题

转载自&#xff1a;http://blog.sina.com.cn/s/blog_6a8d2f120100qiyj.html 1)新建一个组group1,新建一个系统组group2 参考答案: groupadd group1 groupadd -r group2 cat /etc/group /etc/gshadow|grep group[1-2] 2)更改组group2的GID为103,更改组名为grouptest 参考答案:…

闪念-许久未来一切没变

好久好久没来逛社区了&#xff0c;前几天有空登录进来看看&#xff0c;好多以前的老朋友都还在&#xff0c;甚是欣慰。有种亲切的感觉&#xff0c;时间真的很快&#xff0c;差不多有3-4年没来玩社区了。经历了两家互联网行业级Top3的公司一度没有时间逛社区&#xff0c;玩社区交…

C语言麻将递归,C++数据结构与算法——麻将胡牌算法(二:完全胡牌算法)

虽然单花色胡牌算法面试时写出来了&#xff0c;但是完整的胡牌算法却没有写&#xff0c;既然遇到了&#xff0c;秉着不抛弃不放弃的精神&#xff0c;当然不能原谅懒惰的自己了。下面这篇为一个完整的胡牌算法。胡牌规则除了以下几点&#xff0c;其余与单花色胡牌规则一致&#…

第一行代码-第一章

模拟器和真机切换 点击app选择Configuration&#xff0c;Target选择USB设备或模拟器 真机不能获取debug日志 以360手机为例 1.拨号界面输入“*20121220#”&#xff0c;进入工程模式&#xff0c;点击日志输出等级。 2.修改以下选项 Log print enable 选 enable Java log level 选…

啊哈c语言推箱子小游戏,啊哈C入门版学完了,现发推箱子源代码~

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼该推箱子拥有对成绩的记录功能&#xff0c;因此,请挑战自己的最少步数吧&#xff01;源代码如下&#xff1a;#include #include int main(){system("color 0a");char a[9][11]{" ###### "," # ###",…

AIDA64制作机箱副屏/性能监控屏, 刷新慢问题

AIDA64制作机箱副屏/性能监控屏, 刷新慢问题 手上有闲置的手机/平板, 非闲置也行, 毕竟也没人边刷手机边打游戏吧AIDA64可以监控大多数参数, 放到一些酷炫的LCD模板上, 通过手机/平板等的浏览器就可访问这个页面, 实现无线监控 在网上找一个AIDA64, 安装文件-设置-LCD找到Rem…

javaone_JavaOne 2012:Java策略主题演讲和IBM主题演讲

javaone与 JavaOne 2010 相似&#xff0c;我对JavaOne 2012有了一个粗略的起点。由于“计算机和打印机技术上的困难”&#xff0c;办理登机手续的人花了70分钟为我提供JavaOne徽章。 尽管我不是世界上最有耐心的人&#xff0c;但比等待更令人失望的是&#xff0c;我错过了参加“…

常用正则表达式(?i)忽略字母的大小写!

转载自&#xff1a;http://blog.csdn.net/iwanttoknow7/article/details/5773285 1。^/d$  //匹配非负整数&#xff08;正整数 0&#xff09; 2 。 ^ [ 0 - 9 ] * [ 1 - 9 ][ 0 - 9 ] * $   // 匹配正整数 3 。 ^ (( - /d) | ( 0))$   // 匹配非正整数&#xff08;负…

内存刷新机制

red log buffer、data buffer、binlog cache。在O和M中&#xff0c;讲究日志先行策略&#xff0c;就是一条DML语句进入数据库之后&#xff0c;都会先写日志&#xff0c;再写数据文件。 1.red log&#xff0c; 重做日志文件&#xff0c;用于记录事务操作的变化&#xff0c;记录的…