HDU 4701 - Game
2014-10-01 15:27
337 查看
题目大意是:有N个物品,每个物品有Ci个价值,ALICE和BOB分别有A, B元钱,依次购买(即买第i个物品前i-1物品必须买完),直到有一人无法购买。问ALICE是否有必胜策略。
博弈论和DP结合,具体见代码:
博弈论和DP结合,具体见代码:
/* ID:esxgx1 LANG:C++ PROG:hdu4701 */ #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; int _s[1000007], *s = &_s[1]; int dp[1000007]; int main(void) { #ifndef ONLINE_JUDGE freopen("in.txt", "r", stdin); #endif int N, A, S; while(scanf("%d%d%d", &N, &A, &S) > 0) { S += A; s[-1] = 0; for(int i=0; i<N; ++i) { int a; scanf("%d", &a); s[i] = s[i-1] + a; } /* O(n2) for(int i=N; i--; ) { dp[i] = s[N-1] - s[i-1]; for(int j = i+1; j<N; ++j) dp[i] = min(dp[i], max(s[j-1] - s[i-1], S - s[i-1] - dp[j] + 1)); }*/ int minn = s[N-1]; for(int i=N; i--; ) { dp[i] = min(s[N-1], minn) - s[i-1]; minn = min(minn, max(s[i-1], S - dp[i] + 1)); } printf(A >= dp[0] ? "ALICE\n": "BOB\n"); } return 0; }
2014-10-01 15:20:55 | Accepted | 4701 | 453MS | 8124K | 662 B | G++ |
相关文章推荐
- Hdu 4701 Game -- DP
- hdu 4701 Game----博弈
- hdu 4701 Game
- HDU 4701 Game 递推+博弈
- hdu 4701 Game 博弈论
- HDU 4701 GAME
- hdu 4701 Game(博弈)
- HDU 4701 Game
- Switch Game HDU - 2053
- hdu 2147 kiki‘game(组合游戏-博弈)
- hdu 3389 Game 博弈
- HDU 5643 King's Game 【约瑟夫环】
- hdu 1505 City Game && hdu 1506 Largest Rectangle in a Histogram
- HDU - 3295 An interesting mobile game
- hdu 3722 Card Game km
- hdu1564 Play a game
- hdu Game of Connections
- HDU 1528 Card Game Cheater
- hdu 1528 Card Game Cheater
- HDUBoard Game Dice (数学期望)