zoukankan      html  css  js  c++  java
  • [CF859C] Pie Rules

    有一个长度为n的序列,Alice和Bob在玩游戏。Bob先手掌握决策权。

    他们从左向右扫整个序列,在任意时刻,拥有决策权的人有如下两个选择:

    • 将当前的数加到自己的得分中,并将决策权给对方,对方将获得下一个数的决策权

    • 将当前的数加到对方的得分中,并将决策权保留给自己,自己将获得下一个数的决策权

    假定他们都使用最优策略,求他们最后分别能获得多少分

    Solution

    考虑到无后效性,令 (f[i][0/1]) 表示 0/1 处理完了前 (i) 个数,先手和后手得分的差

    转移即枚举上一次的位置

    (f[i][1]=max(f[j][0] - a[j+1] - a[j+2] - ... +a[i]))

    (f[i][0]=min(f[j][1] + a[j+1] + a[j+2] + ... -a[i]))

    换个思路,记 (f[i]) 为从 (i) 开始往后选,能获得的最大收益,我们可以来决策每个位置是否翻面

    (f[i]=max(f[i+1], s[i]-f[i+1]))

    其中 (s[i]) 是后缀和

    #include <bits/stdc++.h>
    using namespace std;
    
    const int N = 105;
    int n,f[N],s[N],a[N];
    
    int main() {
        cin>>n;
        for(int i=1;i<=n;i++) cin>>a[i];
        for(int i=n;i;--i) s[i]=s[i+1]+a[i];
        for(int i=n;i;--i) f[i]=max(f[i+1],s[i]-f[i+1]);
        cout<<s[1]-f[1]<<" "<<f[1];
    }
    
  • 相关阅读:
    mac下卸载mysql
    mac安装MySQL笔记
    mac安装python3.7.0
    web自动化测试之8大元素定位方法
    postman的下载和使用
    说说性能测试
    jmeter动态修改线程组参数
    服务器性能监控
    性能测试分配堆内存
    nmon分析工具的使用
  • 原文地址:https://www.cnblogs.com/mollnn/p/12304408.html
Copyright © 2011-2022 走看看