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
  • 相关阅读:
    14. HTML 列表(无序, 有序, 定义)
    13. HTML table
    12. HTML图像
    11. HTML链接
    10. HTML CSS
    learning java AWT Pannel
    learning AWT Jrame
    learning java 正则表达式
    learning java java.time相关类
    learning java Calendar类
  • 原文地址:https://www.cnblogs.com/zub23333/p/8529930.html
Copyright © 2011-2022 走看看