zoukankan      html  css  js  c++  java
  • HDU 4701

    题目大意是:有N个物品,每个物品有Ci个价值,ALICE和BOB分别有A, B元钱,依次购买(即买第i个物品前i-1物品必须买完),直到有一人无法购买。问ALICE是否有必胜策略。

    博弈论和DP结合,具体见代码:

     1 /*
     2 ID:esxgx1
     3 LANG:C++
     4 PROG:hdu4701
     5 */
     6 #include <cstdio>
     7 #include <cstring>
     8 #include <iostream>
     9 #include <algorithm>
    10 using namespace std;
    11 
    12 int _s[1000007], *s = &_s[1];
    13 int dp[1000007];
    14 
    15 int main(void)
    16 {
    17     #ifndef ONLINE_JUDGE
    18     freopen("in.txt", "r", stdin);
    19     #endif
    20 
    21     int N, A, S;
    22     while(scanf("%d%d%d", &N, &A, &S) > 0) {
    23         S += A;
    24         s[-1] = 0;
    25         for(int i=0; i<N; ++i) {
    26             int a;
    27             scanf("%d", &a);
    28             s[i] = s[i-1] + a;
    29         }
    30         /* O(n2)
    31         for(int i=N; i--; ) {
    32             dp[i] = s[N-1] - s[i-1];
    33             for(int j = i+1; j<N; ++j)
    34                 dp[i] = min(dp[i], max(s[j-1] - s[i-1], S - s[i-1] - dp[j] + 1));
    35         }*/
    36         int minn = s[N-1];
    37         for(int i=N; i--; ) {
    38             dp[i] = min(s[N-1], minn) - s[i-1];
    39             minn = min(minn, max(s[i-1], S - dp[i] + 1));
    40         }
    41         printf(A >= dp[0] ? "ALICE
    ": "BOB
    ");
    42     }
    43     return 0;
    44 }
    2014-10-01 15:20:55 Accepted 4701 453MS 8124K 662 B G++
  • 相关阅读:
    计算机科学中最重要的32个算法
    趣事
    深度学习迷你地图
    物理学
    代数几何
    Node.js 文件系统
    Node.js 常用工具util包
    Node.js 全局对象
    favi.icon是什么?
    Node.js 路由
  • 原文地址:https://www.cnblogs.com/e0e1e/p/hdu_4701.html
Copyright © 2011-2022 走看看