input | output |
---|---|
1 10 2 5 0 0 |
10 3 |
1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 #include <cmath> 5 #include <deque> 6 #include <vector> 7 #include <queue> 8 #include <iostream> 9 #include <algorithm> 10 #include <map> 11 #include <set> 12 #include <ctime> 13 using namespace std; 14 typedef long long LL; 15 typedef double DB; 16 #define For(i, s, t) for(int i = (s); i <= (t); i++) 17 #define Ford(i, s, t) for(int i = (s); i >= (t); i--) 18 #define Rep(i, t) for(int i = (0); i < (t); i++) 19 #define Repn(i, t) for(int i = ((t)-1); i >= (0); i--) 20 #define rep(i, x, t) for(int i = (x); i < (t); i++) 21 #define MIT (2147483647) 22 #define INF (1000000001) 23 #define MLL (1000000000000000001LL) 24 #define sz(x) ((int) (x).size()) 25 #define clr(x, y) memset(x, y, sizeof(x)) 26 #define puf push_front 27 #define pub push_back 28 #define pof pop_front 29 #define pob pop_back 30 #define ft first 31 #define sd second 32 #define mk make_pair 33 inline void SetIO(string Name) { 34 string Input = Name+".in", 35 Output = Name+".out"; 36 freopen(Input.c_str(), "r", stdin), 37 freopen(Output.c_str(), "w", stdout); 38 } 39 40 inline int Getint() { 41 int Ret = 0; 42 char Ch = ‘ ‘; 43 while(!(Ch >= ‘0‘ && Ch <= ‘9‘)) Ch = getchar(); 44 while(Ch >= ‘0‘ && Ch <= ‘9‘) { 45 Ret = Ret*10+Ch-‘0‘; 46 Ch = getchar(); 47 } 48 return Ret; 49 } 50 51 const int N = 3010, M = 12; 52 int n, m; 53 int Dp[M][N]; 54 bool Visit[M][N]; 55 56 inline void Solve(); 57 58 inline void Input() { 59 while(~scanf("%d%d", &n, &m) && n && m) { 60 Solve(); 61 } 62 } 63 64 inline int Search(int Egg, int Floor) { 65 Egg = min(Egg, 10); 66 if(!Egg || !Floor) return 0; 67 if(Egg == 1) return Floor; 68 if(Floor == 1) return 1; 69 if(Visit[Egg][Floor]) return Dp[Egg][Floor]; 70 Visit[Egg][Floor] = 1; 71 int Cnt = INF; 72 Dp[Egg][Floor] = 1; 73 Ford(i, Floor, 1) 74 Cnt = min(Cnt, max(Search(Egg-1, i-1), Search(Egg, Floor-i))); 75 Dp[Egg][Floor] += Cnt; 76 return Dp[Egg][Floor]; 77 } 78 79 inline void Solve() { 80 int Ans = Search(n, m); 81 printf("%d\n", Ans); 82 } 83 84 int main() { 85 #ifndef ONLINE_JUDGE 86 SetIO("G"); 87 #endif 88 Input(); 89 //Solve(); 90 return 0; 91 }
ural 1223. Chernobyl’ Eagle on a Roof
原文:http://www.cnblogs.com/StupidBoy/p/4893113.html