hdu1257 dp(最长上升子序列)
题意:有一种拦截系统,可以打击导弹,但是打击的高度会逐渐下降,因此为了防御导弹攻击,就必须用多个系统,现给出一列导弹依次的高度,求最少需要的系统数。
这道题是最长上升子序列问题,但是我一开始其实并没有想到,最开始我的思路是依次剔除最长下降子序列,每剔除一轮就是需要一个拦截系统,然后直到全部数都剔除了就可以知道要几个拦截系统了。而且这样做就是最长下降子序列符合 dp 的思路也可以自圆其说,所以说为什么我成长得这么慢,其实就是我刷 dp 专题就使劲往怎么用 dp 上想而不是怎么做出来上想,很多时候这样其实我的进步还是太小。
恩,这样做 WA 了,我也不是很清楚为什么 WA ,但是我在这么敲的时候就觉得这种思路其实很乱,就这么 A 了其实对我也不太好吧。
WA 了就知道要找新办法了,于是我想到了另一种做法,边遍历数字边建系统,对于一个数字,如果之前建立过的系统中有最小值大于这个数字的,那么就说明那个系统可以拦截这枚导弹,那么就把该拦截系统的最小值改为这个数字,而如果这个数字大于所有之前拦截系统的最小值的话,那就说明没有系统可以拦截这枚导弹了,我就重新建立一个系统,其最小值就是当前数字。其实我并不知道到底是不是对的,因为有一点需要考虑,当有很多系统都能拦截它时,我该优化哪一个呢,我选择了最小的,显然我也不知道这样对不对。然后我 A 了```不甘心地 A 了```
问过学长之后,学长告诉我,其实就只是一个最长上升子序列。细想一下,对于这个最长上升子序列而言,每一个数代表一个拦截系统的最小值,并且由于序列是上升的,每一个数都不能再拦截序列中的下一个数,因为下一个数更大,因此这个子序列的长度就是拦截系统数。我觉得这个说法我更能接受,或许之前那个做法只是因为数据弱所以就这么过了吧```
就这样,我感觉我和数据一样弱```
蠢,就是蠢!
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int dp[],a[];
int main(){
int n;
while(scanf("%d",&n)!=EOF){
int i,j,c=;
memset(dp,,sizeof(dp));
for(i=;i<=n;i++){
scanf("%d",&a[i]);
int f=;
for(j=;j<=c;j++){
if(a[i]<dp[j]){
f=;
dp[j]=a[i];
break;
}
}
if(!f)dp[++c]=a[i];
sort(dp+,dp+c+);
}
printf("%d\n",c);
}
return ;
}
hdu1257 dp(最长上升子序列)的更多相关文章
- 最少拦截系统-----hdu1257(dp+最长上升子序列)
Problem Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高 ...
- hdu 1025 dp 最长上升子序列
//Accepted 4372 KB 140 ms //dp 最长上升子序列 nlogn #include <cstdio> #include <cstring> #inclu ...
- DP——最长上升子序列(LIS)
DP——最长上升子序列(LIS) 基本定义: 一个序列中最长的单调递增的子序列,字符子序列指的是字符串中不一定连续但先后顺序一致的n个字符,即可以去掉字符串中的部分字符,但不可改变其前后顺序. LIS ...
- HDU-1257 最少拦截系统 贪心/DP 最长上升子序列的长度==最长不上升子序列的个数?
题目链接:https://cn.vjudge.net/problem/HDU-1257 题意 中文题咯中文题咯 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然 ...
- [ An Ac a Day ^_^ ] HDU 1257 基础dp 最长上升子序列
最近两天在迎新 看来只能接着水题了…… 新生培训的任务分配 作为一个有担当的学长 自觉去选了动态规划…… 然后我觉得我可以开始水动态规划了…… 今天水一发最长上升子序列…… kuangbin有nlog ...
- 洛谷 P1020 导弹拦截(dp+最长上升子序列变形)
传送门:Problem 1020 https://www.cnblogs.com/violet-acmer/p/9852294.html 讲解此题前,先谈谈何为最长上升子序列,以及求法: 一.相关概念 ...
- hdu1159 dp(最长公共子序列)
题意:给两个字符串,求这两个字符串的最长公共子序列的长度 因为之前集训的时候做过,所以现在即使会做也并不是什么稀奇的事,依旧为了自己的浅薄感到羞愧啊``` 解法就是通过两个字符串的每个字符互相比较,根 ...
- POJ-1887 Testing the CATCHER(dp,最长下降子序列)
Testing the CATCHER Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 16515 Accepted: 6082 ...
- POJ 1159 Palindrome(区间DP/最长公共子序列+滚动数组)
Palindrome Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 56150 Accepted: 19398 Desc ...
- poj1159--Palindrome(dp:最长公共子序列变形 + 滚动数组)
Palindrome Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 53414 Accepted: 18449 Desc ...
随机推荐
- webpack 多页面支持 & 公共组件单独打包
webpack - 多页面/入口支持 & 公共组件单独打包 webpack系列目录 webpack 系列 一:模块系统的演进 webpack 系列 二:webpack 介绍&安装 we ...
- HTML表单格式化
HTML表单格式化 一.说明 用table布局 二.效果 三.代码 <!DOCTYPE html> <html> <head> <title>Form. ...
- 一个或多个音频服务未运行 win7 错误1079:此服务的账户不同于运行于同一进程上的其他服务账户
一个或多个音频服务未运行 win7 错误1079:此服务的账户不同于运行于同一进程上的其他服务账户 启动任务管理器:右键计算机——管理——”服务和应用程序“选项——”服务“——找到“windows a ...
- 雷林鹏分享:Ruby 注释
Ruby 注释 注释是在运行时会被忽略的 Ruby 代码内的注释行.单行注释以 # 字符开始,直到该行结束,如下所示: #!/usr/bin/ruby -w # 这是一个单行注释. puts &quo ...
- mac 无法打开xx ,因为无法确认开发者身份
系统偏好与设置 - 安全性与隐私 - 通用 允许从以下位置下载的应用: 选择 [任何来源],如果没有这个选项,使用终端执行下面的命令: spctl --master-disable (spctl空格 ...
- 【异常】Application failed to start due to an exception org.springframework.beans.factory.BeanCurrentlyInCreationException
一. 异常信息: 2018-05-17 18:03:22.224 -DEBUG [ restartedMain] o.s.b.d.LoggingFailureAnalysisReporter ...
- 20170724wdVBA正则表达式提取答案到Excel
Public Sub RegExtractData() Dim StartTime, UsedTime StartTime = VBA.Timer Dim FilePath$ Dim FileName ...
- Struts2 简介图
Struts2官方提供的,strus2的内部工作机制图解.
- 安装torch-opencv
安装torch-opencv torch torch-opencv opencv-3.1.0 opencv-contrib 想在torch中使用光流法,于是就希望能够调用opencv中的光流代码,而t ...
- 使用poi导出Excel,并设定单元格内容类型,抛出异常
本例子使用的是HSSF,为Excel2003提供处理方案. 设定为输入类型为数值 import org.apache.poi.hssf.usermodel.DVConstraint; import o ...