dp - LIS
怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求救了,请帮助计算一下最少需要多少套拦截系统.
Output对应每组数据输出拦截所有导弹最少要配备多少套这种导弹拦截系统.
Sample Input
8 389 207 155 300 299 170 158 65
Sample Output
2 1 . 动态规划
首先 如果正向去思考问题,题目所让求的是有几组最长递减子序列,若按照正常的思维,去想,去思考这个问题,可能解不出来,那要怎么办呢?反向去思考,我们求一个最长递增子序列,当面对一个数有比它前面的数大时,则此时需要新开一个导弹拦截系统,当面对一个数有比他前面的两个数都要大时,则需要新开两个导弹系统,对吧,这是显然的。
代码示例 :
int arr[eps];
int dp[eps]; int main() {
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
int n; while(~scanf("%d", &n)){
for(int i = 1; i <= n; i++){
scanf("%d", &arr[i]);
}
for(int i = 1; i <= n; i++){
dp[i] = 1;
}
for(int i = 1; i <= n; i++){
for(int j = 1; j < i; j++){
if (arr[i] > arr[j]) dp[i] = max(dp[i], dp[j]+1);
}
}
int ans = 0; //for(int i = 1; i <= n; i++){
//printf("%d ", dp[i]);
//}
//printf("\n");
for(int i = 1; i <= n; i++){
if (ans < dp[i]) ans = dp[i];
}
printf("%d\n", ans);
}
return 0;
}
2 . 贪心
怎么贪呢 ? 首先将第一个数作为导弹系统的第一发导弹,当后面面对一个导弹的时候,更新导弹库里的最接近它的一个数值,如果没有则将此数组加入到导弹数组中,最后输出个数,即为答案。
int pre[eps];
int f[eps]; int main() {
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
int n; while(~scanf("%d", &n)){
for(int i = 1; i <= n; i++){
scanf("%d", &pre[i]);
}
int k = 1;
f[0] = pre[1];
for(int i = 2; i <= n; i++){
sort(f, f+k);
int p = 1;
int sign = 0;
for(int j = 0; j < k; j++){
if (pre[i] <= f[j]) {
p = j;
sign = 1;
break;
}
}
if (sign) {
f[p] = pre[i];
}
else {
f[k++] = pre[i];
}
}
printf("%d\n", k);
}
return 0;
}
dp - LIS的更多相关文章
- hdu----(1677)Nested Dolls(DP/LIS(二维))
Nested Dolls Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
- hdu----(1257)最少拦截系统(dp/LIS)
最少拦截系统 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- hdu--(1025)Constructing Roads In JGShining's Kingdom(dp/LIS+二分)
Constructing Roads In JGShining's Kingdom Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65 ...
- hdu 4352 "XHXJ's LIS"(数位DP+状压DP+LIS)
传送门 参考博文: [1]:http://www.voidcn.com/article/p-ehojgauy-ot.html 题解: 将数字num字符串化: 求[L,R]区间最长上升子序列长度为 K ...
- BZOJ.1109.[POI2007]堆积木Klo(DP LIS)
BZOJ 二维\(DP\)显然.尝试换成一维,令\(f[i]\)表示,强制把\(i\)放到\(a_i\)位置去,现在能匹配的最多数目. 那么\(f[i]=\max\{f[j]\}+1\),其中\(j& ...
- HDU 4352 XHXJ's LIS 数位dp lis
目录 题目链接 题解 代码 题目链接 HDU 4352 XHXJ's LIS 题解 对于lis求的过程 对一个数列,都可以用nlogn的方法来的到它的一个可行lis 对这个logn的方法求解lis时用 ...
- Codeforces.264E.Roadside Trees(线段树 DP LIS)
题目链接 \(Description\) \(Solution\) 还是看代码好理解吧. 为了方便,我们将x坐标左右反转,再将所有高度取反,这样依然是维护从左到右的LIS,但是每次是在右边删除元素. ...
- HDU 4352 - XHXJ's LIS - [数位DP][LIS问题]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4352 Time Limit: 2000/1000 MS (Java/Others) Memory Li ...
- HDU 4352 XHXJ's LIS (数位DP+LIS+状态压缩)
题意:给定一个区间,让你求在这个区间里的满足LIS为 k 的数的数量. 析:数位DP,dp[i][j][k] 由于 k 最多是10,所以考虑是用状态压缩,表示 前 i 位,长度为 j,状态为 k的数量 ...
随机推荐
- js将单个反斜杠转化为斜杠的问题
var two="https://192.255.255.255:3215/2019/2/26/16/13/b2e8929483c66cefddbe1e49a007e3f8-47358FC3 ...
- 【7003】&&【a203】合并多项式
Time Limit: 3 second Memory Limit: 2 MB 问题描述 求两个一元多项式的和.输入多项式方式为:多项式项数.每项系数和指数,按指数从大到小的顺序输入.输出多 ...
- linux安装python3.*,更换Python2.*
下载并解压:Python-3.5.7.tgz [root@AH-aQYWTYSJZX01 python3]# ll total 20268 -rw-r----- 1 temp01 temp01 207 ...
- Cisco DNA网络POC
角色名词解释 拓扑图 集成ISE
- win10安装Keras报错处理
本机已经安装好TensorFlow安装Keras的过程中遇到了些问题,解决后做一下记录: 1.Keras与TensorFlow的关系 Keras默认以TensorFlow为后端,同时可选以Theano ...
- Realm 配置
快速入门 本文档介绍了如何借助一个“数据库”来配置 Tomcat ,从而实现容器管理安全性.所要连接的这种数据库含有用户名.密码以及用户角色.你只需知道的是,如果使用的 Web 应用含有一个或多个 & ...
- bug(一)环境问题
1.项目开发完成,部署到服务器进行测试,遇到一个问题: 同样的接口,同样的数据库表,同样的功能,得到不同的查询结果 具体如下图: 可以看到一个是有值的,一个是无值的,断点调试会发现所以的状态都是对的, ...
- mysql主从之LVS+keepalived+双主MySQL 负载均衡
LVS(Linux Virtual Server)即Linux 虚拟服务器,是一个的开源负载均衡项目,目前LVS 已经被集成到Linux 内核模块中.LVS 是四层负载均衡,也就是说建立在OSI 模型 ...
- BuilderPattern(建造者模式)-----Java/.Net
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式
- spinor/spinand flash之高频通信延迟采样
SPI协议 对于spinor和spinand flash,其通信总线为SPI总线. SPI有四种工作模式,对应不同的极性和相位组合 极性,一般表示为CPOL(Clock POLarity),即SPI空 ...