比赛 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;
}