Codeforces Round #345 (Div. 2) A. Joysticks dp

2019-04-13 21:37发布

题目链接:http://codeforces.com/contest/651/problem/A
题意:
你有两个手机,和一个充电器,如果手机插上充电器,每秒涨%1的电,如果不插充电器,每秒掉%2的电 问你最多能维持多久两个手机都有电。 可以超过100% 解法: DP //CF 651A #include using namespace std; int a1, a2, dp[320][320], vis[320][320];//dp[i][j]表示第一个手机有i的电,第二个手机有j的电最长能够坚持多久 int dfs(int x, int y){ if(x > y) swap(x, y); if(x <= 0) return 0; if(vis[x][y]) return dp[x][y]; vis[x][y] = 1; dp[x][y] = max(dfs(x-2, y+1), dfs(x+1, y-2)) + 1; return dp[x][y]; } int main() { cin >> a1 >> a2; if(a1 == 1 && a2 == 1) return puts("0"), 0; cout << dfs(a1, a2) << endl; return 0; }