Skip to content

Commit 905588e

Browse files
authored
da
1 parent 3f3ca8b commit 905588e

File tree

4 files changed

+74
-9
lines changed

4 files changed

+74
-9
lines changed

a.out

48 Bytes
Binary file not shown.

bca.cpp

+16-2
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,24 @@ const long long MAX = 1e5 + 10;
1515
int main()
1616
{
1717
fastio;
18-
int t = 1; // cin>>t;
18+
int t = 1; cin>>t;
1919
while (t--)
2020
{
21-
21+
int n ; cin>>n;
22+
int a[n+1]; FOR(i,1,n+1) cin>>a[i];
23+
int dp[n+1][n+1];
24+
int ans = 0;
25+
FOR(i,1,n+1) dp[0][i] = 0,dp[i][0] = 0,dp[1][i] = a[i],ans= max(ans,a[i]);
26+
FOR(i,1,n) dp[2][i] = max(a[i],a[i+1]),ans= max(ans,dp[2][i]);
27+
FOR(l,3,n+1){
28+
FOR(i,1,n+1){
29+
int j = i+l-1;
30+
if(j>n) continue;
31+
dp[l][i] = max(min(dp[l-2][i+2],dp[l-2][i+1]) + a[i], min(dp[l-2][i], dp[l-2][i+1]) + a[j]);
32+
ans = max(ans,dp[l][i]);
33+
}
34+
}
35+
cout<<ans<<"\n";
2236
}
2337
}
2438

ji.cpp

+26-7
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,36 @@ int main()
2424
FOR(i, 1, n + 1)
2525
cin >> a[i];
2626
LL dp[n + 1][2];
27-
dp[1][1] = 1;
28-
dp[1][0] = a[1] - 1;
29-
FOR(i, 2, n + 1)
27+
dp[1][1] = a[1];
28+
dp[1][0] = 0;
29+
dp[2][1] = 0;
30+
dp[2][0] = a[1]*a[2] - min(a[1],a[2]);
31+
FOR(i, 3, n + 1)
3032
{
31-
dp[i][1] = dp[i-1][0];
33+
dp[i][1] = dp[i-1][0] + dp[i-1][1];
3234
dp[i][0] = dp[i-1][1]*(a[i]-1) + (a[i] <2 ? 0 : dp[i-1][0]*(a[i]-2));
3335
}
3436
cout << dp[n][0]+dp[n][1];
3537
}
3638
}
37-
2 3 2
39+
// 2 3 2
3840

39-
1 3 1
40-
1 1 3
41+
// 1 3 1
42+
// 1 1 3
43+
44+
// 1 2 1
45+
// 1 3 1
46+
47+
48+
// 2 1 2
49+
// 2 3 2
50+
51+
// 1 2 1
52+
// 1 3 2
53+
// // 2 1 2
54+
// // 2 3 2
55+
56+
// 1 2 1
57+
// 1 3 1
58+
// // 2 1 2
59+
// // 2 3 2

sg.cpp

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
4+
#define MAXN 100000
5+
6+
int n, t[26][4*MAXN];
7+
8+
void build(int a[], int v, int tl, int tr, int i) {
9+
if (tl == tr) {
10+
t[i][v] = a[tl];
11+
} else {
12+
int tm = (tl + tr) / 2;
13+
build(a, v*2, tl, tm,i);
14+
build(a, v*2+1, tm+1, tr,i);
15+
t[i][v] = t[i][v*2] + t[i][v*2+1];
16+
}
17+
}
18+
19+
int sum(int v, int tl, int tr, int l, int r,i) {
20+
if (l > r)
21+
return 0;
22+
if (l == tl && r == tr) {
23+
return t[v];
24+
}
25+
int tm = (tl + tr) / 2;
26+
return sum(v*2, tl, tm, l, min(r, tm))
27+
+ sum(v*2+1, tm+1, tr, max(l, tm+1), r);
28+
}
29+
30+
int main(){
31+
32+
}

0 commit comments

Comments
 (0)