首页 > [NOIP2004]合唱队形
头像 Rikkar
发表于 2020-08-21 00:21:01
最长上升子序列的变式。先从左往右求一遍最长上升子序列(dpl),再从右往左求一遍(dpr)。结果遍历一遍从左和从右的dp值和(dpr[i]+dpl[i]),找出和为最大的-1即为最大正常先递增再递减的子序列长度,-》n-长度即为需要出列的最少同学数。 AC代码如下 #include<bits/ 展开全文
头像 ddhw111
发表于 2024-05-03 16:51:33
合唱队形 链接:https://ac.nowcoder.com/acm/problem/16664 来源:牛客网 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T 展开全文
头像 在刷题的单身狗很开心
发表于 2023-10-06 09:37:37
//从前向后走一遍动态规划计算严格升序序列,从后向前走一遍计算严格升序序列。 //最后再遍历一遍其两者和最大的数,然后拿总数减去就是答案。 #include <bits/stdc++.h> using namespace std; const i 展开全文
头像 YZBPXX
发表于 2019-09-05 21:13:31
https://ac.nowcoder.com/acm/contest/1082/C 题目描述:给你n个数要求你挑出尽可能少的几个数使得前半部分递增后半部分递减 n<130 分析:看数据范围可以看出来肯定是直接暴力,暴力每个点往前能构成的最长子序列,和往后的最长递减子序列, 展开全文
头像 dbkx29
发表于 2022-04-11 14:13:08
#include <bits/stdc++.h> using namespace std; int n, cnt = 0, a[105], maxn[105], minn[105]; int main() { ios::sync_with_stdio(0), cin.tie(0); 展开全文
头像 savage
发表于 2019-08-29 22:49:38
题目描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK, 则他们的身高满 展开全文
头像 希胤
发表于 2020-08-17 15:50:54
include<bits/stdc++.h> using namespace std;int n;int a[105];int f[105];int main(){ cin >> n; for(int i=1;i<=n;++i){ cin &g 展开全文
头像 瑜画
发表于 2020-06-12 20:39:49
首先看到题目,乍一眼以为是LIS模板题,后来发现他是一个先递增后递减的序列。那么可以把最大的那个数揪出来,然后左右划分,左边为一个正常的最长递增子序列,右边为一个倒过来的最长递增子序列。然后只要序列中每个数为中心,然后取最大的一种情况就好了。由于题目要求的是最少请几个人出去,那么就用总人数减去最大的 展开全文
头像 tin_t
发表于 2020-06-11 20:52:24
链接:https://ac.nowcoder.com/acm/problem/16664 题目描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK, 展开全文
头像 savage
发表于 2019-09-07 16:31:32
算法知识点: 线性DP,最长上升子序列 复杂度: 解题思路: 假设最优解的中心是第 个人,则 一定是以 结尾的最长上升子序列。 同理,也一定是以 结尾的最长上升子序列。 因此可以先预处理出: 从前往后以每个点结尾的最长上升子序列长度 ; 从后 展开全文