zoukankan      html  css  js  c++  java
  • Codeforces-859C Pie Rules(dp)

    传送门

    Alice和Bob玩游戏,已知要从左到右依次分配n个数,规则是当前拥有令牌的人可以选择当前数字的归属,这一轮不获得数字的人将获得令牌。初始Bob拥有令牌,要求输出二者的最大收益。

    解法的特色在于不是记录每一状态下Bob的获利,记录的是当前拥有令牌的人最大获利。逆推,最后dp[1]就是Bob的最大获益。

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <iostream>
     4 #define MOD 1000000007
     5 #define INF 0x3f3f3f3f
     6 using namespace std;
     7 typedef long long LL;
     8 
     9 int n;
    10 const int maxn = 51;
    11 int add[maxn];
    12 int sum;
    13 int dp[maxn];
    14 
    15 int main() {
    16     scanf("%d", &n);
    17     for (int i = 1; i <= n; i++) {
    18         scanf("%d", &add[i]);
    19         sum += add[i];
    20         add[i] += add[i - 1];
    21     }
    22     dp[n] = sum - add[n - 1];
    23     for (int i = n; i >= 2; i--) {
    24         dp[i - 1] = max(dp[i], sum - add[i - 2] - dp[i]);
    25     }
    26     printf("%d %d
    ", sum - dp[1], dp[1]);
    27     return 0;
    28 }
  • 相关阅读:
    c#中@的3种作用
    iOS7 各种问题解决
    时钟
    京东APP(部分)-安卓
    博弈取石子
    博弈取牌
    年月日
    猪(恶作剧程序)
    字符统计
    奇偶类约瑟夫
  • 原文地址:https://www.cnblogs.com/xFANx/p/8378469.html
Copyright © 2011-2022 走看看