华为OJ-合唱队

描述

计算最少出列多少位同学,使得剩下的同学排成合唱队形

说明:

N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。

合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK, 则他们的身高满足存在i(1<=i<=K)使得

    Ti < T2 < ...< Ti-1 < Ti > Ti+1>...>TK

你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。

知识点

循环

运行时间限制

0M

内存限制

0

输入

整数N

一行整数,空格隔开,N位同学身高

输出

最少需要几位同学出列

样例输入

8 186 186 150 200 160 130 197 200

样例输出

4

楼下的代码重点在于维护了两个数组,res_up【i】保存了序列arr[0]到arr[i]的并且含有arr[i]最长升序的长度 res_down[i]则是从后面向前数的,于是num就表示合唱团包含 i 这个下标参加合唱的人数 OK 差不多就是这样

重点在代码
// 合唱队.cpp 

#include "stdafx.h"//vs的头文件
#include <iostream> using namespace std;
int getSubseq_up(int,int [],int *);
int getSubseq_down(int,int [],int *);
int main()
{
int len;
int tmp = 0;
int arr[500];
cin >> len;
for (int i = 0;i < len;i++) {
cin >> arr[i];
}
int res_up[500];
int res_down[500];
getSubseq_up(len, arr, res_up);
getSubseq_down(len,arr,res_down);
//需要知道包含i但不大于i的最长子序列的长度
for (int i = 0;i < len;i++) {
int num = res_up[i] + res_down[i]-1;
if (num > tmp)
tmp = num;
}
cout << len - tmp << endl;
return 0;
}
int getSubseq_up(int len, int arr[],int res[]) {/*这里应用到动态规划的思想(ps 算法导论上面提到dp的p是指表格法,这里确实)
for (int j = 0;j < len;j++) {
res[j] = 1;
for (int k = 0;k < j;k++) {
if (arr[j] > arr[k] && res[j] < (res[k] + 1)) {
res[j] = res[k] + 1;
}
}
}
return 0;
}
int getSubseq_down(int len, int arr[], int res[]) {
for (int j = len-1;j >= 0;j--) {
res[j] = 1;
for (int k = len-1;k > j;k--) {
if (arr[j] > arr[k] && res[j] < (res[k] + 1)) {
res[j] = res[k] + 1;
}
}
}
return 0;
}

代码参考了http://blog.csdn.net/xiaoski/article/details/47161009 毕竟新人给自己一点时间

华为oj 刷题记录之合唱团的更多相关文章

  1. AC 自动机刷题记录

    目录 简介 第一题 第二题 第三题 第四题 第五题 第六题 简介 这就是用来记录我对于<信息学奥赛一本通 · 提高篇>一书中的习题的刷题记录以及学习笔记. 一般分专题来写(全部写一起可能要 ...

  2. PE刷题记录

    PE刷题记录 PE60 / 20%dif 这道题比较坑爹. 所有可以相连的素数可以构成一张图,建出这张图,在其中找它的大小为5的团.注意上界的估算,大概在1W以内.1W内有1229个素数,处理出这些素 ...

  3. Sublime Text3 配置C++(附oj刷题常用模板)

    # 下载对应平台的sublime sublime最新版下载, 字体样式个人喜欢Consolas, 另附注册码: -– BEGIN LICENSE -– TwitterInc 200 User Lice ...

  4. leetcode刷题记录--js

    leetcode刷题记录 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但 ...

  5. Leetcode刷题记录(python3)

    Leetcode刷题记录(python3) 顺序刷题 1~5 ---1.两数之和 ---2.两数相加 ---3. 无重复字符的最长子串 ---4.寻找两个有序数组的中位数 ---5.最长回文子串 6- ...

  6. 刷题记录:[HarekazeCTF2019]encode_and_encode

    目录 刷题记录:[HarekazeCTF2019]encode_and_encode 一.知识点 JSON转义字符绕过 php伪协议 刷题记录:[HarekazeCTF2019]encode_and_ ...

  7. 刷题记录:[De1CTF 2019]Giftbox && Comment

    目录 刷题记录:[De1CTF 2019]Giftbox && Comment 一.知识点 1.sql注入 && totp 2.RCE 3.源码泄露 4.敏感文件读取 ...

  8. 刷题记录:[强网杯 2019]Upload

    目录 刷题记录:[强网杯 2019]Upload 一.知识点 1.源码泄露 2.php反序列化 刷题记录:[强网杯 2019]Upload 题目复现链接:https://buuoj.cn/challe ...

  9. 刷题记录:[XNUCA2019Qualifier]EasyPHP

    目录 刷题记录:[XNUCA2019Qualifier]EasyPHP 解法一 1.error_log结合log_errors自定义错误日志 2.include_path设置包含路径 3.php_va ...

随机推荐

  1. 【转】代码中特殊的注释技术——TODO、FIXME和XXX的用处

    (转自:http://blog.csdn.net/reille/article/details/7161942) 作者:reille 本博客网址:http://blog.csdn.net/reille ...

  2. ExtJs基础知识总结:Dom、IFrame和TreePanel、TabPanel(三)

    概述 ExtJs是另外一种操作封装JavaScript的类库与Jquery同类.所以对Dom的操作也是支持的,比如修改Div内Html内容等操作.有几个问题需要思考下: 1.ExtJs也支持IFram ...

  3. 【Java EE 学习 72 下】【数据采集系统第四天】【移动/复制页分析】【使用串行化技术实现深度复制】

    一.移动.复制页的逻辑实现 移动.复制页的功能是在设计调查页面的时候需要实现的功能.规则是如果在同一个调查中的话就是移动,如果是在不同调查中的就是复制. 无论是移动还是复制,都需要注意一个问题,那就是 ...

  4. ssh反向连接和简单实现

    转自:http://blog.chinaunix.net/uid-20109107-id-2954579.html SSH反向连接的使用 1.什么是反向连接?反向连接是指主机A(受控端)主动连接主机B ...

  5. CozyRSS开发记录20-CanResizeWithGrip

    CozyRSS开发记录20-CanResizeWithGrip 1.窗口样式 首先,WindowStyle有四种: 然后,对于窗口缩放的ResizeMode,也有四种,CanResize和CanRes ...

  6. python学习4 常用内置模块

    logging os 路径处理 // 获取当前路径 os.path.abspath(__file__) //获取当前文件夹路径 os.path.dirname(os.path.abspath(__fi ...

  7. 好文分享_java堆栈的区别

    Java Heap Memory Heap memory is used by java runtime to allocate memory to Objects and JRE classes. ...

  8. 转载:移动web开发规范

    本文来源:http://blog.csdn.net/joueu/article/details/44329825 以下是规范建议,均是日常在开发当中的的一些经验,仅供参考. 移动web开发规范 一.头 ...

  9. C++-数据库【1】-C++连接MSSQL数据库

    测试环境—— 系统:Win7 64bit 编译器:VC++ 2015 数据库:MSSQL 2008 R2 #include <Windows.h> #include <stdio.h ...

  10. 词法分析程序(C)

    #include <stdio.h> #include <string.h> ],word[],ch; int type,p,i,n,sum; ]={"begin&q ...