時間限制: 1 sec
記憶體限制: 128 mb給定乙個n
個正整數組成的序列,你最多可以改變其中乙個元素,可以修改為任意的整數。
問可以得到的嚴格遞增連續子段的最大長度。
第一行輸入乙個整數t
,代表有
t組測試資料。
每組資料佔兩行,第一行輸入乙個整數n
,代表元素個數。
下面一行
n個正整數ai(ai < 2^31)。
注:1 <= t <= 100,1 <= n <= 10000。
對每組測試資料
輸出乙個整數代表可以得到的嚴格遞增連續子段的最大長度。
241 2 3 4
41 2 2 4
44
剛開始一直以為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個整數的和,最大連續子段和...