UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#197755#2717. 8.2t2tkswls100100ms1588kbC++939b2023-11-14 10:47:012023-11-14 12:03:34

answer

#include <bits/stdc++.h>
using namespace std;
int t, n, a[205], f[205][205], maxn[205][205];
signed main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0)	;
	cin >> t;
	while (t--) {
		cin >> n;
		for (int i = 1; i <= n; i++) {
			cin >> a[i];
			maxn[i][i] = a[i];
		}
		for (int len = 2; len <= n; len++) {
			for (int i = 1, j = len; j <= n; j++, i++) {
				maxn[i][j] = max(maxn[i][j - 1], maxn[i + 1][j]);
			}
		}
		memset(f, 0, sizeof(f));
		for (int i = 1; i <= n; i++) {
			f[i][0] = f[i - 1][0] + a[i];
		}
		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= n; j++) {
				f[i][j] = max(f[i][j - 1], f[i - 1][j] + a[i]);
				for (int k = 1; k < i; k++) {
					if ((i - k + 1) / 2 > j) continue;
					f[i][j] = max(f[i][j], f[k - 1][j - (i - k + 1) / 2] + maxn[k][i] * (i - k + 1));
				}
			}
		}
		for (int i = 1; i <= n; i++) {
			cout << f[n][i] << " ";
		}
		cout << "\n";
	}
}

详细

小提示:点击横条可展开更详细的信息

Test #1:

score: 10
Accepted
time: 0ms
memory: 1420kb

input:

10
5
11 4 11 12 15
5
7 2 14 19 6
5
4 6 8 7 2
5
14 10 3 15 12
5
1 6 3 2 6
5
5 15 12 20 13
5
20 18 9 5...

output:

62 75 75 75 75 
70 95 95 95 95 
34 40 40 40 40 
71 75 75 75 75 
26 30 30 30 30 
80 100 100 100 100 
...

result:

ok 50 numbers

Test #2:

score: 10
Accepted
time: 0ms
memory: 1420kb

input:

10
5
9 4 11 15 4
5
4 19 1 12 15
5
2 20 14 4 10
5
12 15 11 19 7
5
14 8 17 15 2
5
7 19 13 1 17
5
11 12...

output:

58 75 75 75 75 
84 95 95 95 95 
74 100 100 100 100 
84 95 95 95 95 
73 85 85 85 85 
81 95 95 95 95 
...

result:

ok 50 numbers

Test #3:

score: 10
Accepted
time: 1ms
memory: 1420kb

input:

10
5
8 2 19 16 13
5
4 8 5 17 5
5
11 5 13 17 20
5
3 9 19 6 15
5
13 7 20 6 5
5
1 18 11 10 5
5
2 2 6 12...

output:

86 95 95 95 95 
63 85 85 85 85 
82 100 100 100 100 
78 95 95 95 95 
80 100 100 100 100 
69 90 90 90 ...

result:

ok 50 numbers

Test #4:

score: 10
Accepted
time: 0ms
memory: 1428kb

input:

10
15
11 16 14 18 17 1 20 8 18 1 3 8 16 18 8
15
4 10 14 10 7 14 5 1 20 1 10 12 19 12 14
15
7 4 17 1 ...

output:

209 240 258 270 279 287 300 300 300 300 300 300 300 300 300 
191 216 235 253 277 291 300 300 300 300...

result:

ok 150 numbers

Test #5:

score: 10
Accepted
time: 1ms
memory: 1428kb

input:

10
15
9 17 4 3 17 3 12 10 7 11 2 15 5 1 9
15
10 20 1 6 13 16 3 17 11 12 1 1 6 15 20
15
6 16 8 4 16 2...

output:

153 177 198 217 233 247 255 255 255 255 255 255 255 255 255 
185 209 242 262 280 297 300 300 300 300...

result:

ok 150 numbers

Test #6:

score: 10
Accepted
time: 0ms
memory: 1432kb

input:

10
15
11 15 20 2 20 18 7 19 20 17 3 18 19 18 11
15
1 19 16 19 18 2 1 19 4 5 14 8 18 2 18
15
3 12 18 ...

output:

241 261 276 286 295 300 300 300 300 300 300 300 300 300 300 
199 228 254 275 283 285 285 285 285 285...

result:

ok 150 numbers

Test #7:

score: 10
Accepted
time: 0ms
memory: 1460kb

input:

10
50
4 14 15 20 12 15 1 19 16 3 1 19 2 17 6 20 20 1 18 3 3 9 7 10 14 4 6 8 12 5 17 17 17 3 10 16 18...

output:

602 634 664 689 713 736 758 782 804 825 845 864 882 901 919 933 949 961 973 984 990 995 1000 1000 10...

result:

ok 500 numbers

Test #8:

score: 10
Accepted
time: 2ms
memory: 1456kb

input:

10
50
18 15 12 10 12 20 18 1 13 9 13 14 2 7 8 11 4 12 18 5 4 7 7 2 5 11 10 4 3 18 7 19 16 18 14 19 1...

output:

533 560 586 614 641 664 692 715 738 760 780 802 824 843 866 889 912 930 947 961 970 977 987 998 1000...

result:

ok 500 numbers

Test #9:

score: 10
Accepted
time: 0ms
memory: 1456kb

input:

10
50
4 16 4 16 1 3 18 7 12 4 6 13 6 7 3 14 9 4 12 12 2 8 12 13 8 1 8 9 13 5 18 17 19 20 16 16 13 5 ...

output:

501 531 559 587 617 643 667 686 710 731 753 774 793 817 835 854 874 900 924 945 963 974 989 1000 100...

result:

ok 500 numbers

Test #10:

score: 10
Accepted
time: 96ms
memory: 1588kb

input:

10
200
37 114 93 127 119 140 8 63 134 2 137 36 119 112 73 142 60 177 100 70 153 105 53 138 46 180 13...

output:

19916 20240 20544 20842 21138 21429 21717 22001 22285 22568 22851 23125 23401 23675 23943 24209 2447...

result:

ok 2000 numbers