日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

tyvj 1067 合唱队形 dp LIS

發布時間:2024/6/21 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tyvj 1067 合唱队形 dp LIS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
P1067 合唱隊形 時間: 1000ms / 空間: 131072KiB / Java類名: Main

背景

NOIP2004?提高組?第三道

描述

N位同學站成一排,音樂老師要請其中的(N-K)位同學出列,使得剩下的K位同學排成合唱隊形。

????合唱隊形是指這樣的一種隊形:設K位同學從左到右依次編號為1,2…,K,他們的身高分別為T1,T2,…,TK,??則他們的身高滿足T1<...<Ti>Ti+1>…>TK(1<=i<=K)。

????你的任務是,已知所有N位同學的身高,計算最少需要幾位同學出列,可以使得剩下的同學排成合唱隊形。

輸入格式

輸入文件chorus.in的第一行是一個整數N(2<=N<=100),表示同學的總數。第一行有n個整數,用空格分隔,第i個整數Ti(130<=Ti<=230)是第i位同學的身高(厘米)。

輸出格式

輸出文件chorus.out包括一行,這一行只包含一個整數,就是最少需要幾位同學出列。

測試樣例1

輸入

8
186 186 150 200 160 130 197 220

輸出

4

備注

對于50%的數據,保證有n<=20;
對于全部的數據,保證有n<=100。

思路:跑一遍最長上升和最長下降,n小,n*n就行;

#include<bits/stdc++.h> using namespace std; #define ll long long #define esp 0.00000000001 const int N=2e3+10,M=1e6+10,inf=1e9+10,mod=1000000007; int a[N]; int up[N]; int down[N]; int main() {int x,y,z,i,t;while(~scanf("%d",&x)){for(i=1;i<=x;i++)scanf("%d",&a[i]);for(i=1;i<=x;i++)for(t=0;t<i;t++)if(a[i]>a[t])up[i]=max(up[i],up[t]+1);for(i=x;i>=1;i--)for(t=i+1;t<=x+1;t++)if(a[i]>a[t])down[i]=max(down[i],down[t]+1);int ans=inf;for(i=0;i<=x;i++){int minn=inf;for(t=i;t<=x;t++)minn=min(minn,x-i-down[t+1]);ans=min(ans,i-up[i]+minn);}printf("%d\n",ans);}return 0; }

?

轉載于:https://www.cnblogs.com/jhz033/p/5730777.html

總結

以上是生活随笔為你收集整理的tyvj 1067 合唱队形 dp LIS的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。