题目链接:http://codeforces.com/contest/651/problem/A
题意:
你有两个手机,和一个充电器,如果手机插上充电器,每秒涨%1的电,如果不插充电器,每秒掉%2的电

问你最多能维持多久两个手机都有电。

可以超过100%

解法:

DP

//CF 651A

#include <bits/stdc++.h>
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;
}