zoukankan      html  css  js  c++  java
  • UVA 10891 Game of Sum (决策优化)

    这是一个零和博弈,最高得分只和序列以及谁先手有关。

    d[i][j],表示i到j的序列当前取的这个人的最高得分,转移以后状态是新的区间和另一个人取,从中取最小值。

    决策的最小值也可递推。

    #include<bits/stdc++.h>
    using namespace std;
    
    const int MX = 101;
    int d[MX][MX],f[MX][MX],g[MX][MX];
    int sum[MX];
    
    //#define LOCAL
    int main()
    {
    #ifdef LOCAL
        freopen("in.txt","r",stdin);
    #endif
        int n;
        while(scanf("%d",&n),n){
            for(int i = 1; i <= n; i++){
                scanf("%d",sum+i);
            }
            for(int i = 1; i <= n; i++){
                g[i][i] = f[i][i] = d[i][i] = sum[i];
                sum[i] += sum[i-1];
            }
            for(int L = 1; L < n; L++){
                for(int i = 1; i+L <= n; i++){
                    int j = i+L;
                    d[i][j] = sum[j] - sum[i-1] - min(0,min(f[i+1][j],g[i][j-1]));
                    f[i][j] = min(d[i][j],f[i+1][j]);
                    g[i][j] = min(d[i][j],g[i][j-1]);
                }
            }
            printf("%d
    ",(d[1][n]<<1)-sum[n]);
        }
        return 0;
    }
  • 相关阅读:
    Jooq基本操作
    SpringcloudStream简单使用
    SpringcloudBus消息总线
    RabbitMQ集群
    Springboot整合RabbitMQ
    RabbitMQ死信队列与延迟队列
    RabbitMQ事务性消息和确认模式
    公链简介
    公链简介
    Windows生产力工具推荐
  • 原文地址:https://www.cnblogs.com/jerryRey/p/4846919.html
Copyright © 2011-2022 走看看