比赛 |
2024暑假C班集训5 |
评测结果 |
AAATTTTTTT |
题目名称 |
任务 |
最终得分 |
30 |
用户昵称 |
liuyiche |
运行时间 |
7.000 s |
代码语言 |
C++ |
内存使用 |
4.13 MiB |
提交时间 |
2024-07-05 11:32:54 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
int n, ans = 1e9;
int a[2005];
int b[2005];
inline void dfs(int step, int cnt1, int cnt2, int las)
{
if(step == n+1)
{
ans = min(ans,max(cnt1,cnt2));
return;
}
if(las == -1)
{
dfs(step+1,cnt1+a[step],cnt2,1);
dfs(step+1,cnt1,cnt2+b[step],2);
}
else if(las == 1)
{
cnt2 = max(cnt2,cnt1-a[step-1]);
dfs(step+1,cnt1+a[step],cnt2,1);
dfs(step+1,cnt1,cnt2+b[step],2);
}
else
{
cnt1 = max(cnt1,cnt2-b[step-1]);
dfs(step+1,cnt1+a[step],cnt2,1);
dfs(step+1,cnt1,cnt2+b[step],2);
}
}
int main()
{
freopen("task.in", "r", stdin);
freopen("task.out", "w", stdout);
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin >> n;
for(int i = 1; i <= n; ++i)
cin >> a[i] >> b[i];
dfs(1,0,0,-1);
cout << ans;
return 0;
}