华为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. 简单的ADO.NET连接数据小样例

    ADO.NET连接数据库的样例如下: using System; using System.Collections.Generic; using System.ComponentModel; usin ...

  2. css3 自定义字体 @font-face

    CSS3 @font-face 规则 在 CSS3 之前,web 设计师必须使用已在用户计算机上安装好的字体. 通过 CSS3,web 设计师可以使用他们喜欢的任意字体. 当您您找到或购买到希望使用的 ...

  3. Jquery知识点梳理

    Jquery $代表选择器 JS 选取元素 操作内容 操作属性 操作样式 <div id="aa" style="width:100px; height:100px ...

  4. sqlval

    SQL_STRUCTURE sqlvar { short sqltype; short sqllen; _SQLOLDCHAR *SQL_POINTER sqldata; short *SQL_POI ...

  5. poi导出excel

    Java使用poi组件导出excel报表,能导出excel报表的还可以使用jxl组件,但jxl想对于poi功能有限,jxl应该不能载excel插入浮动层图片,poi能很好的实现输出excel各种功能, ...

  6. python学习笔记(5)--迭代器,生成器,装饰器,常用模块,序列化

    生成器 在Python中,一边循环一边计算的机制,称为生成器:generator. 如: >>> g = (x * x for xin range(10)) >>> ...

  7. Linux 使用Crontab设置定时调用Shell文件

    定时执行步骤: 利用crontab来定时执行任务大致有如下两步: 1.编写shell脚本 2.利用crontab加入到定时任务队列 一.如何建立shell脚本 程序必须以下面的行开始(必须方在文件的第 ...

  8. Oracle“钱夹”的使用

    最近几年发生了很多脱库的事件,有些时候安全不到位脱库再所避免,但是可以通过某些技术对数据库进行加密,让即使通过脱库得到的库也没法查看. 在技术层面的实现可以分为应用和数据库层. (1)通过在程序端对某 ...

  9. c#中ObservableCollection<T>排序方法

    之前用到的一段代码,记录一下 public static class ObservableExtension { public static void Sort<TSource, TKey> ...

  10. jquery中ajax返回值无法传递到上层函数

    function通过ajax调用获取后台数据,结果返回出来的结果均为空,代码如下: function chart_coinbase_getdata() { var test = {postdata:& ...