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
  • 相关阅读:
    Easy-Transfer学习
    录音+语音转文字
    pyQt点击事件和数据传输
    第一个python-ui界面
    python写第一个网页
    pyhthon第一个小脚本——文件备份
    Stones HDU 1896
    Cow Sorting POJ 3270 & HDU 2838
    Stones
    大数相加
  • 原文地址:https://www.cnblogs.com/zub23333/p/8529930.html
Copyright © 2011-2022 走看看