华为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. iOS 数据存储规则

    概观 iCloud的备份包括,它可以自动每天通过Wi-Fi备份用户的iOS设备.在您的应用程序的主目录都被备份,唯一的例外是应用程序本身捆绑,缓存目录和temp目录.购买的音乐,应用程序,电子书,相机 ...

  2. H5(三)

    Canvas(画布)   基本内容     简单来说,HTML5提供的新元素<canvas>     Canvas在HTML页面提供画布的功能       在画布中绘制各种图形     C ...

  3. Unity Cookie

    1   在Unity里面,选择脚本单击左键打开 Sync Mono Development  这样就可以打开整个工程的脚本文件 进而才能在脚本中继续进行切换      Mesh    MeshFilt ...

  4. (3)WebApi客户端调用

    1.创建一个应用台控制程序,可以把Model的引用,用下面的方法拖拽上来(解决方案里没有这个文件,只是这个文件的引用)  2.Program.cs using System; using System ...

  5. Docker和Docker-compose安装教程以及docker-elk,docker-storm安装教程

    此安装教程仅供我自己安装配置时查看,其他的人不可以偷看!!! 安装Docker 1. Update package information, ensure that APT works with th ...

  6. Zbrush 快捷键

    1.按住shift 在空白地方移动鼠标左键 就会去到正交视图 2.shift+F可以看一下布线的情况 3.按住shift 点一下画布,松开shift键,就可以旋转画布

  7. 2003服务器搭建vpn

    先说下为什么会有本文,公司的git突然被防火墙屏蔽了,有些同事无奈用4g网去提交,我比较穷,1g的小水管hold不住,于是我想着用vpn.国内封杀的比较严重,免费的更是少,找朋友要了一个3小时试用的, ...

  8. OpenGL帧缓存对象(FBO:Frame Buffer Object)(转载)

    原文地址http://www.songho.ca/opengl/gl_fbo.html 但有改动. OpenGL Frame BufferObject(FBO) Overview: 在OpenGL渲染 ...

  9. linux系统swappiness参数在内存与交换分区间优化

    http://blog.itpub.net/29371470/viewspace-1250975        swappiness的值的大小对如何使用swap分区是有着很大的联系的.swappine ...

  10. jquery中的ajax方法参数总是记不住,这里记录一下。

    1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如 ...