P1091 [NOIP2004 提高组] 合唱队形

Part1:链接:

点我就送屠龙宝刀[doge]

Part2:题目

Part3:思路

隔了这么久,屑人再次捡起了他的节操,洗了洗,然后开始续写他的苦逼dp之路了。


这道题我们可以用 LIS (Longest Increasing Subsequence,最长上升子序列) 来处理。

LIS代码:

///O(n^2)
///lis1[i]:当考虑前i个元素后能够产生的最长子序列的长度
for(int i=1; i<=n; i++)
{lis1[i]=1;for(int j=1; j<i; j++)if(a[i]>a[j]) lis1[i]=max(lis1[i],lis1[j]+1);  ///如果i位置上的数字大于j位置上的数字,此时要考虑///加入对方的序列,还是保持自己的序列
}

我们从前到后求LIS,然后再由后至前求一遍LIS,将两个结果分别存储在两个不同的数组。

最后枚举中心位置,即如果以pos为中心,往左递减,往右递增,那么最多会有 (lis1[pos]+lis2[pos]-1) 个人。

减一的理由:lis1[pos]和lis2[pos]都会把pos位置的人列入考虑范围,所以减去重复的1。

最后让久违的「伊丽莎白」君为我们呈上代码。

Part4:AC代码

#include<iostream>
#include<map>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
int a[105];
int lis1[105],lis2[105];
int main()
{int n;ios::sync_with_stdio(false);cin>>n;int ans=-1;for(int i=1; i<=n; i++) cin>>a[i];///第一遍LIS,正序for(int i=1;i<=n;i++){lis1[i]=1;for(int j=1;j<i;j++)if(a[i]>a[j]) lis1[i]=max(lis1[i],lis1[j]+1);}///第二遍LIS,逆序for(int i=n;i>=1;i--){lis2[i]=1;for(int j=n;j>i;j--)if(a[i]>a[j]) lis2[i]=max(lis2[i],lis2[j]+1);}for(int i=1;i<=n;i++) ans=max(ans,lis1[i]+lis2[i]-1);///注意!!!!我们求得的是K,我们要的是n-k!!!cout<<n-ans<<endl;return 0;
}

今天是2021年6月7日,高考第一天。
鸡汤应该都喝饱了,我也说不出什么优美的语言。
那就祝愿各位活成自己的样子。

Part5:死宅时间!!!

取自《银魂——鬼道丸篇》

坂田银时:
有个器官比我的心脏还重要。虽然我看不见它,但是它确实在我的体内。
因为有它我才能站得直,就算步履蹒跚也能笔直往前走。
如果我不去的话,它可是会拦腰折断的, 我的灵魂它会拦腰折断的!比起心脏停止跳动,我更重视它!

P1091 [NOIP2004 提高组] 合唱队形(动态规划+LIS)相关推荐

  1. [NOIP2004 提高组] 合唱队形-题解

    原题一览 问题描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2-,K,他们的身高分别为T ...

  2. tyvj 1067 合唱队形 dp LIS

    P1067 合唱队形 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 NOIP2004 提高组 第三道 描述 N位同学站成一排,音乐老师要请其中的(N-K)位 ...

  3. 洛谷——P1089 [NOIP2004 提高组] 津津的储蓄计划

    P1089 [NOIP2004 提高组] 津津的储蓄计划 题目描述 津津的零花钱一直都是自己管理.每个月的月初妈妈给津津300300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同. 为 ...

  4. P1091 合唱队形(LIS)

    题目描述 NNN位同学站成一排,音乐老师要请其中的(N−KN-KN−K)位同学出列,使得剩下的KKK位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,-,K1,2, ...

  5. P2196 [NOIP1996 提高组] 挖地雷 线性动态规划DP 题解

    原题链接:[P2196 NOIP1996 提高组] 挖地雷 - 洛谷) 题目分析 看到这道题,首先感觉是个搜索,如果数据范围不大应该没问题.但是,,,我没找到数据范围啊喂~ 那就动态规划一下,先用二维 ...

  6. acwing提高组 第一章 动态规划

    文章目录 数字三角形模型 最长上升子序列模型 背包模型 状态机模型 状态压缩DP 区间DP 树形DP 数位DP 单调队列优化DP 斜率优化DP oj链接 数字三角形模型 AcWing 1015. 摘花 ...

  7. [NOIP1996 提高组] 挖地雷 (动态规划)

    燃 烧 的 大 脑 - - 动 态 规 划 燃烧的大脑--动态规划 燃烧的大脑--动态规划 题目大意: 洛谷例题题目传送门!!! 解题思路: 挖地雷,拥有最优子结构和无后效性特征,考虑DP. 那么接下 ...

  8. noi题库c语言 1.5答案,NOIP2004提高组复赛试题答案c语言版

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 bool finish, hash[256], used[27]; int n, stk[27]; string a, b, c; string word ...

  9. 【动态规划刷题笔记】线性dp:合唱队形(最长递增子序列的变体)

    [NOIP2004 提高组] 合唱队形 - 洛谷 思路:最少出列,即挑出最多,即找最长递增子序列和最长递减子序列 设dp1[i]为以h[i]结尾的最长递增子序列 dp2[i]为以h[i]开头的最长递减 ...

最新文章

  1. 常用小功能(打电话、发短信、发邮件)
  2. 要管理此计算机上的用户账户,win10用户账户控制 你要允许此应用 若要继续请输入管理员密码...
  3. Android 项目,没有可运行的Module项
  4. 使用Spring Boot和DJL进行深度学习
  5. neo4j java查找_Spring-Boot使用neo4j-java-driver-- 查找两个节点之间关系的最短路径
  6. matlab 嵌入式,面向嵌入式系统的 MATLAB 和 Simulink
  7. php根据循环条件切换图片,根据条件循环复框,麻烦各位朋友帮小弟我看一下应该怎样改...
  8. linux so获取自己路径,linux下so获得自己文件位置的路径
  9. SQL Server远程连接操作
  10. 增长量计算n+1原则_事业单位行测:巧解增长量计算公式
  11. 一款非常便捷好用的mac办公工具:WPS Office 2020
  12. 广袤之中:沿着克拉克三大定律,读懂华为的最深期待
  13. 多目标进化算法详细讲解及代码实现(样例:MOEA/D、NSGA-Ⅱ求解多目标(柔性)作业车间调度问题)
  14. 【面试题】能从底层角度聊聊volatile关键字的原理吗?
  15. Qt 6.3.1 显示界面元素
  16. STM32学习之Keil5软件配置
  17. linux kernel debug 之 CallTrace
  18. 网络营销推广怎么做(更全面的网络营销知识点)
  19. 安徽科技学院 信网学院网络文化节 刘洪江
  20. 在微信项目的通讯录页面中增加添加联系人功能

热门文章

  1. 《创业大败局》一文的启示
  2. linux重启用reboot后起不来_linux6.5无法使用reboot重启服务器
  3. HTC为什么干不过三星
  4. (RAID原理)RAID0
  5. 搜索引擎(SEM)的目标层次原理
  6. 确定工艺方案及模具结构型式
  7. python视屏教程_终于拿到了清华学霸整理出来的全套Python视频教程+项目源码+笔记...
  8. 【ONNXRuntime】Win10 GPU环境 ONNXRuntime下载与VS开发配置
  9. 计算机网络系列——网络分层
  10. C#图像处理(各种旋转、改变大小、柔化、锐化、雾化、底片、浮雕、黑白、滤镜效果,滤波,图像截取) 对图片的处理 : 亮度调整 抓屏 翻转 随鼠标画矩形