嚴格遞增連續子段 模擬

2021-07-28 23:23:22 字數 1240 閱讀 9819

時間限制: 1 sec

記憶體限制: 128 mb給定乙個n

個正整數組成的序列,你最多可以改變其中乙個元素,可以修改為任意的整數。

問可以得到的嚴格遞增連續子段的最大長度。

第一行輸入乙個整數t

,代表有

t組測試資料。

每組資料佔兩行,第一行輸入乙個整數n

,代表元素個數。

下面一行

n個正整數ai(ai < 2^31)。

注:1 <= t <= 100,1 <= n <= 10000。

對每組測試資料

輸出乙個整數代表可以得到的嚴格遞增連續子段的最大長度。

2

41 2 3 4

41 2 2 4

4

4

剛開始一直以為12345才叫嚴格遞增,原來12458也叫嚴格遞增

然後就好辦了,把整個序列分成若干個連續遞增段,然後判斷每個段的頭尾能不能通過改變連線在一起

#include#include#include#include#include#include#include#define inf 0x3f3f3f3f

using namespace std;

typedef long long ll;

const int maxn = 1e5+10;

int s[maxn], sum[maxn];

struct node k[maxn];

int main()

} k[ans].l = l;

k[ans++].r = n-1;

k[ans].l = k[ans].r = -1;

for(int i = 0; i < ans; i++)

if(!flag || k[i+1].l < k[i+1].r)

if(flag) sum[num++] = k[i+1].r - k[i].l + 1;//兩段接在一起

else sum[num++] = k[i].r - k[i].l + 2;//不能接,則可以再改變與這個段相鄰的元素使這個段長度再加1

} sort(sum, sum + num);

int v = min(n, sum[num-1]);//可能會出現1234這樣整個序列都滿足,由上面得出錯誤的5,所以做一下約束

cout << v << endl;

} return 0;

}

HPU 1007 嚴格遞增連續子段 模擬

1007 嚴格遞增連續子段 模擬 時間限制 1 sec 記憶體限制 128 mb 提交 150 解決 12 題目描述 給定乙個有n 個正整數組成的序列,你最多可以改變其中乙個元素,可以修改為任意的整數。問可以得到的嚴格遞增連續子段的最大長度。輸入第一行輸入乙個整數t 代表有t 組測試資料。每組資料佔...

最大連續子段和

最大連續子段和 給定長度為n的整數序列,a 1.n 求 1,n 某個子區間 i,j 使得a i a j 和最大,或者求出最大的這個和。例如 2,11,4,13,5,2 的最大子段和為20,所求子區間為 2,4 窮舉法 3次for迴圈 第1次for迴圈,遍歷陣列所有數字,即確定子段和的首個數字 第2次...

DP 最大連續子段和

最大連續子段和 hdu 1003 1.問題描述 給定一串整數,例如 6 1 5 4 7,求最大連續子段和?2.演算法介紹 此題不能暴力,o n 2 的時間複雜度必然超時。考慮如下演算法 設mi表示前i個整數包含第i個整數的最大連續子段和。sum i,j 表示第i個整數到第j個整數的和,最大連續子段和...