按時間順序的做題**如下:
timelimit**:(n^2 記錄字首和,遍歷所有組合,即s[i]-s[j])
1timelimit#pragma warning (disable:4996)
2 #include 3 #include4 #include5 #include6 #include
7 #include
8#define max1 100005 /*1e5 + 5*/
9#define max2 1000000005 /*le9 + 5*/
10#define max3 200005 /*1e5 + 5*/
11#define max4 5005 /*5e3 + 5*/
12#define max5 1005 /*1e3 + 5*/
13#define t1 27
14#define t2 27
15#define t3 18
16using
namespace
std;
17 typedef long
long
intll;
18#define mol 998244353
19struct
ans ;
24int
main() ;
26int s[max1] = ;
27ans x, m_ans;
28int
t, n;
29int
i, j, k;
30while (scanf("
%d", &t) !=eof)
37 m_ans.max = -max1 * 1000;38
for (i = 1; i <= n; ++i) 46}
47 printf("
case %d:\n%d %d %d\n
", k, m_ans.max, m_ans.beg, m_ans.end);
48if (k != t)printf("\n"
);49}50
}51 }
wrong**:(n 輸入時用s儲存字首和,minx儲存當前最小字首和,minp儲存minx對應位點,遍歷)
錯誤點:沒考慮max負數情況
1wrong#pragma warning (disable:4996)
2 #include 3 #include4 #include5 #include6 #include
7 #include
8#define max1 100005 /*1e5 + 5*/
9#define max2 1000000005 /*le9 + 5*/
10#define max3 200005 /*1e5 + 5*/
11#define max4 5005 /*5e3 + 5*/
12#define max5 1005 /*1e3 + 5*/
13#define t1 27
14#define t2 27
15#define t3 18
16using
namespace
std;
17 typedef long
long
intll;
18#define mol 998244353
1920
int a[max1] = ;
21int s[max1] = ;
22int mins[max1] = ;
23int minp[max1] = ;
2425
intmain()
44else48}
49 m = -100000000;50
for (i = 1; i <= n; ++i) 56}
57 printf("
case %d:\n%d %d %d\n
", k, m, beg, end);
58if (k != t)printf("\n"
);59}60
}61 }
1#pragma warning (disable:4996)
2 #include 3 #include4 #include5 #include6 #include
7 #include
8#define max1 100005 /*1e5 + 5*/
9#define max2 1000000005 /*le9 + 5*/
10#define max3 200005 /*1e5 + 5*/
11#define max4 5005 /*5e3 + 5*/
12#define max5 1005 /*1e3 + 5*/
13#define t1 27
14#define t2 27
15#define t3 18
16using
namespace
std;
17 typedef long
long
intll;
18#define mol 998244353
1920
int a[max1] = ;
21int s[max1] = ;
22int mins[max1] = ;
23int minp[max1] = ;
2425
intmain()
44else48}
49 m = -100000000;50
for (i = 1; i <= n; ++i)
57else
if (m
63}64 printf("
case %d:\n%d %d %d\n
", k, m, beg, end);
65if (k != t)printf("\n"
);66}67
}68 }
HDU 1003 解題報告
問題描述 求最大連續字串 分析 一道簡單的dp,狀態轉移方程是d i d i 1 a i a i d i 1 a i a i d i 表示以第i個數字結尾的連續字串的最大值,限制條件是 d 0 0 題目要求找出最大連續字串的首尾序號,尾序號顯然是d i 的下標 i 首序號用陣列start i 儲存,...
hdu1003最大子串行和
看了一些別人的題解,說實話,我現在還不會證明這個,我不知道為什麼這樣是最大值 hdu1003最大連續子串行和 sum i sum i 1 0 sum i 1 a i a i 只有當sum處於增長狀態時才會得到最大子串行 當sum處於減小狀態時,應當更新起點 include using namespa...
HDU1003 最大子串行和
大學搞過兩年的acm,今天心血來潮的去杭電oj上瀏覽了一下,真幸運賬號居然沒有記錯。然後想著之前學過很多經典的演算法,但是很遺憾當時沒有記錄下來,所以現在彌補遺憾的時候到了,演算法會不定期更新。include int array 100005 n void maxsubsum1 void maxsu...