题意:N位士兵站成一排,长官要请其中的(N-K)位出列,使得剩下的K位士兵排成一等队形。一等队形是指这样的一种队形:设K位士兵从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK, 则他们的身高满足T1<...<Ti,Ti>Ti+1>…>TK(1<=i<=K)。 你的任务是,已知所有N位士兵的身高,计算最少需要几位士兵出列,可以使得剩下的排成一等队形。

思路:枚举一下分割点,然后分别以递减和递增讨论一下

#include<stdio.h>
#include<string.h>
#include<queue>
#include<cmath>
#define MAX 100+10
#define INF 0x3f3f3f3f
int n;
int dp[MAX];
int a[MAX];
int b[MAX];using namespace std;
int up(int l, int r, int tmp) {memcpy(a, b, sizeof(b));for (int i = l; i <= r; i++)dp[i] = 0;a[l - 1] = 0;dp[l - 1] = 0;for (int i = l; i <= r; i++) {for (int j = l - 1; j < i; j++) {if (a[i] >= tmp || a[j] >= tmp)continue;if (a[i] > a[j]) {dp[i] = max(dp[i], dp[j] + 1);}}}int ans = 0;for (int i = l; i <= r; i++) {ans = max(ans, dp[i]);}return r - l + 1 - ans;}int down(int l, int r, int tmp) {memcpy(a, b, sizeof(b));for (int i = l; i <= r; i++)dp[i] = 0;a[l - 1] = INF;dp[l - 1] = 0;for (int i = l; i <= r; i++) {for (int j = l - 1; j < i; j++) {if (a[i] >= tmp)continue;if (a[i] < a[j]) {dp[i] = max(dp[i], dp[j] + 1);}}}int ans = 0;for (int i = l; i <= r; i++) {ans = max(ans, dp[i]);}return r - l + 1 - ans;}
int main(void) {while (~scanf("%d", &n)) {for (int i = 1; i <= n; i++)dp[i] = 1;for (int i = 1; i <= n; i++)scanf("%d", &b[i]);int ans = 0;int minn = INF;for (int k = 1; k <= n; k++) {if (k == 1)ans = down(1, n, INF);else if (k == n)ans = up(1, n, INF);else {ans = up(1, k - 1, b[k]) + down(k + 1, n, b[k]);}minn = min(minn, ans);}printf("%d\n", minn);}return 0;
}

转载于:https://www.cnblogs.com/tennant/p/8975781.html

HRBUST 2011【简单dp】相关推荐

  1. Codeforces 41D Pawn 简单dp

    题目链接:点击打开链接 给定n*m 的矩阵 常数k 以下一个n*m的矩阵,每一个位置由 0-9的一个整数表示 问: 从最后一行開始向上走到第一行使得路径上的和 % (k+1) == 0 每一个格子仅仅 ...

  2. hdu2067 简单dp或者记忆化搜索

    题意: 小兔的棋盘 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  3. POJ1088:滑雪(简单dp)

    题目链接:  http://poj.org/problem?id=1088 题目要求: 一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小.求可以滑落的最长长度. 题目解析: 首先要先排一 ...

  4. 第三讲 数学与简单DP【完结】

    目录 1205. 买不到的数目 [数学结论题] 1211. 蚂蚁感冒 [模拟 / 推理] 1216. 饮料换购 [简单 / 模拟] 2. 01背包问题 [板子题] 1015. 摘花生 [简单DP] 8 ...

  5. hdu 2881(简单dp)

     题意:n*n的矩阵,里面有m个格子是有任务要去完成的,t,x,y表示要在第t秒到达(x,y)的格子完成任务,问你最多可以完成多少 解题思路:简单dp,将时间排个序后就是LIS #include< ...

  6. P1005 矩阵取数游戏(__int128模板/简单dp)

    转跳P1005 题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的 n \times mn×m 的矩阵,矩阵中的每个元素 a_{i,j}a i,j ​ 均为非负整数.游戏规则如下: 每次取数时 ...

  7. 最少拦截系统,简单dp,(学长说这是贪心?!。。。。。。也是醉了)

     description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天, ...

  8. HDU 1158【简单dp】

    题意:给你一个项目,需要几个月来完成买,同时也给你每个月最少需要的工人数.并且告诉你hiring,firing每个工人的钱数,以及每个月应付每个工人的工资.求项目完成时最小花费. 这是个简单dp,思路 ...

  9. 4.15 每周作业 —— 简单DP

    免费馅饼 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submissi ...

  10. HDU 5375 Gray code (简单dp)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5375 题面: Gray code Time Limit: 2000/1000 MS (Java/Ot ...

最新文章

  1. “智能”基石:人工智能数据标注与训练,是决定智能时代的第一步
  2. AI Studio 不同环境下的执行速度
  3. 这边有本书:中国社会生存的必备常识(修订版)下载
  4. 「后端小伙伴来学前端了」Vue中学会使用Echarts生成各种各样的图表,得学学了,必须要会的基本操作了
  5. 员外带你读论文:SeqGAN论文分享
  6. go 打印结构体对象,结构体指针
  7. 课程设计完成之后要考虑的问题
  8. duration java_Java Duration类| minusMinutes()方法与示例
  9. zookeeper专题:zookeeper集群搭建和客户端连接
  10. 利用ipsec配置tcp/ip用于安全连接
  11. 为什么.class文件查看不了_恕我直言,这可能是你见过最详细的class文件结构分析
  12. VS2017编译SNMP库
  13. pytorch 学习笔记 part14 过拟合欠拟合及解决方案
  14. Unity3D学习之旅7-RPG游戏-更新与踩坑实录
  15. 34-高级路由:BGP汇总:实验五 route-map+suppress-map过滤、as-set
  16. 做网站要服务器和什么软件,做网站的软件有哪些,自己建网站要用到哪些软件?...
  17. 2万行java代码的系统_PublicCMS: 200万行代码修改 打造安全快速的java cms 轻松支撑千万数据、千万PV;目前已经拥有全球0.0002%的用户,诸多明星网站案例。...
  18. 同一设备安装不同版本的Vue脚手架
  19. 女装网 www.nzw.com.cn
  20. Juniper交换机收集日志

热门文章

  1. 模拟计算机网络中的零比特填充
  2. lstm 根据前文预测词_干货 | Pytorch实现基于LSTM的单词检测器
  3. 剑指Offer #12 数值的整数次方(快速幂)
  4. linux打开应用程序的命令,Windows环境下如何通过命令打开程序!
  5. 怎么在mac下运行映像dmg_仅用Mac OS X系统映像文件(dmg)安装系统
  6. Linux运维13款实用工具
  7. java多线程下载_Java实现多线程下载,支持断点续传
  8. 开发函数计算的正确姿势——OCR 服务
  9. app开发上传文件夹到服务器,uni-app 上传(图片上传实战)
  10. 数位屏如何去光标_iPad还是数位板屏?我该选哪个?