zoukankan      html  css  js  c++  java
  • 每天一道博弈论之“A game”(伪博弈

      题意:

        n个数字排成一列,每个人只能选择最左边或最右边的数字取掉,自己该回合的得分就是该数字的值。

    当两个人都选择最优决策时,问两个人各能得到多少分。

      题解:

      博弈论的外表,实质则是记忆化搜索=-=(不过知道博弈论原理的话应该更好想吧)

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #define LL long long
    #define RI register int
    using namespace std;
    const int INF = 0x7ffffff ;
    const int N = 100 + 10 ;
    
    inline int read() {
        int k = 0 , f = 1 ; char c = getchar() ;
        for( ; !isdigit(c) ; c = getchar())
          if(c == '-') f = -1 ;
        for( ; isdigit(c) ; c = getchar())
          k = k*10 + c-'0' ;
        return k*f ;
    }
    
    int n ; int hh[N], pre[N], sg[N][N] ;
    
    int dfs(int l,int r) {
        if(sg[l][r]) return sg[l][r] ;
        if(l == r) return hh[l] ;
        int x = dfs(l+1,r), y = dfs(l,r-1) ;
        x = min(x,y) ;
        return sg[l][r] = pre[r]-pre[l-1]-x ;
    }
    
    int main() {
        n = read() ; int tot = 0 ;
        for(int i=1;i<=n;i++) {
            hh[i] = read() ; pre[i] = pre[i-1]+hh[i] ;
        } 
        int tt = dfs(1,n) ;
        printf("%d %d",tt,pre[n]-tt) ;
        return 0 ;
    }
    View Code
  • 相关阅读:
    jquery的优势
    基于指纹识别技术的超市储物箱设计
    jquery核心
    jquery中的筛选
    红包算法设计
    jquery中trim() 去掉收尾空格
    jquery中效果的创建
    项目缓存
    StringUtils方法全集
    IE8下onclick事件不支持
  • 原文地址:https://www.cnblogs.com/zub23333/p/8529930.html
Copyright © 2011-2022 走看看