下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、合唱队形 解题报告<问题描述> N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,K,他们的身高分别为T1,T2,TK, 则他们的身高满足T1<.<Ti>Ti+1>>TK(1<=i<=K)。 你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。- 输入文件
2、160; 输入文件chorus.in的第一行是一个整数N(2<=N<=100),表示同学的总数。第一行有n个整数,用空格分隔,第i个整数Ti(130<=Ti<=230)是第i位同学的身高(厘米)。- 输出文件 输出文件chorus.out包括一行,这一行只包含一个整数,就是最少需要几位同学出列。- 样例输入8186 186 150 200 160 130 197 220- 样例输出4- 数据规模对于50的数据,保证有n<=20;对于全部的数据,保证有n<=100。<算法分析>动态规划。最基本
3、的想法是:枚举中间最高的一个人,接着对它的左边求最长上升序列(注意序列中最高的同学不应高过基准),对右边求最长下降序列(同样的,序列中最高的同学不应高过基准)。时间复杂度为O(n3),算法实现起来也很简单。接着对这个算法进行分析,我们不难发现,假如还是基于枚举一个同学的话,设Incsqi表示了1 - i的最长上升序列,Decsqi表示了i - n的最长下降序列,那么,Currenti = Incsqi + Decsqi - 1(两个数组中i被重复计算了)那么,我们只需要先求好最长上升和下降序列,然后枚举中间最高的同学就可以了。<算法优化>求最长上升序列的经典状态转移方程为:opti
4、 = maxoptj+1, 其中i<j<=n, 且listj>listi我们对状态转移方程稍微做一些修改:opti = maxopti+1, minj, recj>=listirecj = listi很明显可以看出,在opti的寻找j的过程当中,查询序列是单调的,于是可以用二分法,就十分巧妙地在logn的时间内找到指定的j,而问题的总体复杂度为O(nlogn)。这样,这个问题的算法效率就得到了大幅度的提升,即便n是106,也可以轻松应对。<代码清单>#include <fstream>#include <cstring>using n
5、amespace std;ifstream fin("chorus.in");ofstream fout("chorus.out");const int maxn = 100;int n, amaxn;int incsqmaxn, decsqmaxn;void init() fin >> n;for (int i = 0; i < n; i +)fin >> ai;void LIncSeq()int i, low, high, mid, ans = 0;int solmaxn;for (i = 0; i < n; i
6、+) low = 1; high = ans;while (low <= high) mid = (low + high) >> 1;if (solmid < ai) low = mid + 1;else high = mid - 1;if (low > ans) ans +;sollow = ai;incsqi = ans;void LDecSeq()int i, low, high, mid, ans = 0;int solmaxn;for (i = 0; i < n; i +) low = 1; high = ans;while (low <=
7、high) mid = (low + high) >> 1;if (solmid > ai) low = mid + 1;else high = mid - 1;if (low > ans) ans +;sollow = ai;decsqi = ans;void work() int i, max = 0;LIncSeq();LDecSeq();for (i = 0; i < n; i +)if (incsqi + decsqi - 1 > max)max = incsqi + decsqi - 1;fout << n - max << endl;int main() init();work();return 0;&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国移动5G网络升级改造方案规划及时间线
- 2026年关联词语专项训练题及答案解析
- 东北工业振兴申论题目及答案
- 加工厂生产考勤制度
- 公司无打卡考勤制度
- XX区实验初级中学2026年春季学期物理教研组实验教学优化方案
- 广东梅州市蕉岭县2025-2026学年八年级上学期期末数学试题(无答案)
- 少儿运动馆考勤制度
- 履约考勤制度
- 工作专班考勤制度
- 《智能制造单元集成应用》课件-智能制造单元概述
- 中学-学年第二学期教科室工作计划
- 2024年贵州省公务员考试《行测》真题及答案解析
- DB34T 3267-2024 公路养护工程设计文件编制规范
- GB/T 3163-2024真空技术术语
- GB/T 24203-2024炭素材料体积密度、真密度、真气孔率、显气孔率的测定方法
- 英语阅读理解50篇
- 催化剂导论课件
- 科技研发中心物业管理服务方案
- FZ∕T 74001-2020 纺织品 针织运动护具
- 全自动灯检机校准规范
评论
0/150
提交评论