刷題訓練 hdu 1003

2022-09-09 19:00:33 字數 3196 閱讀 8981

按時間順序的做題**如下:

timelimit**:(n^2 記錄字首和,遍歷所有組合,即s[i]-s[j])

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

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 }

timelimit

wrong**:(n 輸入時用s儲存字首和,minx儲存當前最小字首和,minp儲存minx對應位點,遍歷)

錯誤點:沒考慮max負數情況

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) 56}

57 printf("

case %d:\n%d %d %d\n

", k, m, beg, end);

58if (k != t)printf("\n"

);59}60

}61 }

wrong

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...