洛谷P1091 合唱隊形(LIS)

2021-09-26 05:39:10 字數 739 閱讀 8888

題意不難理解,這裡就不說了。

思路就是開兩個陣列fro[n],back[n],先從頭到尾求一遍lis,記錄在fro[n]中,再從尾到頭求一遍lis,記錄在back[n]中,最後遍歷fro[n],back[n],符合要求的最長佇列就是max(fro[i]+back[i]),最終答案就是n減去這個數了。

注意:這裡求lis是要用樸素的n2演算法,才可以去解這道題,否則可能不行。

#include#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

const int inf=0x3f3f3f3f;

const int maxn=1e2+5;

int fro[maxn],back[maxn],h[maxn]; //fro[i]表示以h[i]為結尾的最長遞增子串行,back[i]同理,只是掃瞄順序反了而已

int main()

} if(temp==-inf)

back[i]=1;

else back[i]=temp+1;

} int ans=0;

for(int i=1;i<=n;i++)

ans=max(ans,fro[i]+back[i]); //根據fro,back陣列的定義,不難想出這樣做的對的

cout

}

洛谷 P1091 合唱隊形

n位同學站成一排,老師要請其中的 n k 位同學出列,使得剩下的k位同學排成合唱隊形。合唱隊形是指這樣的一種隊形 設k位同學從左到右依次編號為1,2 k,他們的身高分別為t1,t2,tk,則他們的身高滿足t1 ti 1 tk 1 i k 你的任務是,已知所有n位同學的身高,計算最少需要幾位同學出列,...

洛谷 P1091 合唱隊形

p1091 合唱隊形 2k 通過 4.8k 提交 題目提供者洛谷onlinejudge 標籤 noip提高組 2004 雲端評測 難度 普及 提高 提交 討論 題解 最新討論 描述是啥玩意?不能加檔案讀 參考,絕對ac,fighting 動 參考 資料太大了 n 1000 題目描述 n位同學站成一排...

洛谷P1091合唱隊形

n位同學站成一排,老師要請其中的 n k 位同學出列,使得剩下的k位同學排成合唱隊形。合唱隊形是指這樣的一種隊形 設k位同學從左到右依次編號為1,2 k,他們的身高分別為t1,t2,tk,則他們的身高滿足t1 ti 1 tk 1 i k 你的任務是,已知所有n位同學的身高,計算最少需要幾位同學出列,...