序列變換 HDU 5256 LIS

2022-09-13 07:21:14 字數 594 閱讀 4920

題意:給乙個數列,每乙個數都不相同且為整數,現求,最少需要修改多少次才能使該數列為嚴格上公升的。

思路:首先,對於乙個嚴格上公升的整數數列a,一定有a[i]>=a[i-1]+1,所以,a[i]-i>=a[i-1]-(i-1),以此為線索,我們生成乙個新數列b[i]=a[i]-i,則b[i]>=b[i-1],換句話說,a數列嚴格遞增,等價於b數列不下降,因此,n-b的最長上公升子串行長度即為最小修改次數。

**如下:

1 #include2 #include3 #include4 #include5

using

namespace

std;

6const

int max_v=100010;7

const

int inf=10000000;8

intdp[max_v],n,a[max_v];910

intsolve()

16int

main()

25 printf("

case #%d:\n%d\n

",i,n-solve());26}

27return0;

28 }

HDU 5256 序列變換 LIS變形

傳送們 5256 他讓求至少可以改變幾個數讓他們單調遞增 我們可以處理一下 讓每乙個數都減去i 這樣在後面求出的最長遞增子串行的每幾個數之間都有相應的空位使他變過來 然後求最長遞增子串行就可以啦 如 4 2 3 3 4 變為2 2 1 1 最長遞增子串行為2,2 或1 1 我們就可以變為2 3 4 ...

HDU 5256 序列變換

題意 我們有乙個數列a1,a2.an,你現在要求修改數量最少的元素,使得這個數列嚴格遞增。其中無論是修改前還是修改後,每個元素都必須是整數。請輸出最少需要修改多少個元素。思想 第i個位置到第i k個位置可以使當中k 1個相等的數通過變換滿足題意,首先把i位置上的數減去i,消除位置的影響 1 2 4 ...

hdoj5256序列變換 LIS變形

problem description 我們有乙個數列a1,a2.an,你現在要求修改數量最少的元素,使得這個數列嚴格遞增。其中無論是修改前還是修改後,每個元素都必須是整數。請輸出最少需要修改多少個元素。input 第一行輸入乙個 t 1 t 10 表示有多少組資料 每一組資料 第一行輸入乙個 n ...