首页 > TAG信息列表 > P1091

P1091 [NOIP2004 提高组] 合唱队形

原来错一道题可能不止错在少剪枝,还可能这压根就不是搜索题 题目传送门 第一反应:这不每个点左搜一遍右搜一遍然后比大小吗 点击查看search #include<iostream> #include<cstdio> #include<cmath> #include<algorithm> using namespace std; int n,a[10010],ansl=1e6,ansr=1e6,ans=

P1091合唱队列[线性DP]

原题传送门 思路:线性DP 对于原序列求满足 t 1 < ⋅ ⋅ ⋅

luogu P1091 单调序列版

心血来潮水一篇题解luogu竟然关了这题的提交…苦鲁西 本茍蒻的思路是遍历每个数组元素,分别找出她左右(包括她自己)的最长严格降序的长度,相加减一(因为“她”加了两次), 答案就是其最大值 Code #include <bits/stdc++.h> using namespace std; #define rep(i, l, r) for (int i =

洛谷P1091 合唱队形---最长上升子序列的运用

题目链接https://www.luogu.org/problemnew/show/P1091 题目描述 这题的数据不是很标准,事实上这题有的数据是没有肯定Ti的存在,也就是说完全可以来个一直上升或一直下降的序列。 先把这题讲一下:做着题之前对于最长上升子序列要有一定的了解。我们可以直接枚举每个数作为Ti然后对

P1091 [NOIP2004 提高组] 合唱队形(求升序序列的N^2复杂度的模板)

#include <bits/stdc++.h> using namespace std; #define ll long long const int M = 1e5 + 1; int a[M]; int f[3][M]; int main() { int n; cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; } for (int i = 1;

P1091 合唱队形(C++_dp)

题目描述 N位同学站成一排,音乐老师要请其中的(N−K)位同学出列,使得剩下的K位同学排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,…,K1,2,…,K1,2,…,K,他们的身高分别为T1,T2,…,TKT_1,T_2,…,T_KT1​,T2​,…,TK​, 则他们的身高满足 T1<...<Ti

Luogu P1091 合唱队形

Luogu P1091 合唱队形 先从\(1\)到\(n\)求一遍最长上升子序列,再反向从\(n\)到\(1\)求一遍最长上升子序列。最后遍历\(1\)到\(n\)得到两端相加最长的。记得输出是出列人数,所以要写\(n-ans\)。 #include<bits/stdc++.h> #define N 110 using namespace std; int n,ans; int a[N],f

P1091 合唱队形

P1091 合唱队形 ◦          N 位同学站成一排,音乐老师要请其中的( N−K )位同学出列,使得剩下的 K 位同学排成合唱队形。 ◦          合唱队形是指这样的一种队形:设K位同学从左到右依次编号为 1,2,…,他们的身高分别为 T_1,T_2,…,T_K ◦          则他

P1091-合唱队形

1 #include <bits/stdc++.h> 2 #define _for(i,a,b) for(int i = (a);i < b;i ++) 3 typedef long long ll; 4 using namespace std; 5 inline ll read() 6 { 7 ll ans = 0; 8 char ch = getchar(), last = ' '; 9 while(!isdigit(ch)) last

洛谷P1091 合唱队形

洛谷P1091 合唱队形 题目描述 NN位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的KK位同学排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,…,K1,2,…,K,他们的身高分别为T_1,T_2,…,T_KT1​,T2​,…,TK​, 则他们的身高满足T1​<...<Ti​>Ti+

题解 P1091 【合唱队形】

思路:分别求出单调上升和单调下降的序列长度,然后直接求出答案。 #include <cstdio> #include <iostream> #include <cstring> using namespace std; const int N=105; int n,top,ans,a[N],s[N],f[3][N]; int main() { scanf("%d", &n); for(int i=1; i<=n; i++

洛谷 P1091 合唱队形

题目描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,…,K,他们的身高分别为T_1,T_2,…,T_K, 则他们的身高满足T_1<...<T_i>T_{i+1}>…>T_K 你的任务是,已知所有N位同学的身高,计算

luogu P1091 合唱队形

任务计划推了很久才做www 从两头开始的单调上升队列 没啥可说的 #include<cstdio> #include<algorithm> using namespace std; #define maxn 110 int a[maxn]; int f[2][maxn]; int ans; int main() { int n; scanf("%d",&n); for(int i = 1; i <= n; i++)