美文网首页
Uva(10891)(Game of Sum)

Uva(10891)(Game of Sum)

作者: kimoyami | 来源:发表于2018-08-08 10:37 被阅读0次

链接:https://vjudge.net/problem/UVA-10891
思路:其实我一开始没有看出来这是一个动态规划的题目,不过我们可以来思考一下,设d(i,j)为先手所能取得的最好的最大的分差,那么我们怎么表示这个d(i,j)呢,我们知道,总和是一定的,你取了多少分,马上可以算出对手取了多少分,那么d(i,j)就可以i表示为sum(i,j)-min(d(i+1,j),d(i+2,j).......d(i,j-1),d(i,j-2).....d(i,i+1),0)(注意0表示对手决策用完,即我一把把所有的都全部抓完,对手从而没有东西可以抓了,这种情况一定不要漏掉!!!),然后用dd[][]保存已经计算出的值,记忆式搜索求出答案。
代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
int n,sum[101][101],a[101],dd[101][101];

int d(int i,int j){
    if(dd[i][j]!=0)return dd[i][j];//保存已经搜索出的值
    if(i==j)return a[i];
    int minn = 0;//一把抓完所有的
//取最小值
    for(int k=i+1;k<=j;k++){
        minn = min(minn,d(k,j));
    }
    for(int k=j-1;k>=i;k--){
        minn = min(minn,d(i,k));
    }
    dd[i][j] = sum[i][j] - minn;//保存当前最优解
    return dd[i][j];//返回最优解
}

int main(){
//  freopen("in.txt","r",stdin);
//  freopen("out.txt","w",stdout);
    while(cin>>n&&n){
        memset(sum,0,sizeof(sum));
        memset(dd,0,sizeof(dd));
        for(int i=1;i<=n;i++)cin>>a[i];
            for(int i=1;i<=n;i++){
                for(int j=i;j<=n;j++){
                    for(int k=i;k<=j;k++){
                        sum[i][j]+=a[k];
                    }
                }
            }
    cout<<2*d(1,n)-sum[1][n]<<endl;//结果等于d(i,j)-(sum(i,j)-d(i,j)),即原式
    }
    return 0;
}

老刘的o(n^2)解法暂时没看懂,先放这里吧


Uva(10891)(Game of Sum)

相关文章

  • Uva(10891)(Game of Sum)

    链接:https://vjudge.net/problem/UVA-10891思路:其实我一开始没有看出来这是一个...

  • Uva(1130)(City Game)

    链接:https://vjudge.net/problem/UVA-1330思路:首先先强调一下,这个题不要相信他...

  • zero-sum game

    给大家介绍新词。今天阅读的过程中,有一个词让我很感兴趣――zero-sum game,零和游戏。又称零和博弈(ze...

  • Non sum-zero game

    因为我们的语言是线性的,想表达出非线性语言的意思,非常困难。 光为什么沿着直线传播?如果按照线性时间来思考,是因为...

  • Objective-C编译的程序占用内存分布的结构

    一、介绍 参考链接: http://www.cocoachina.com/ios/20150109/10891.h...

  • 素数练习题

    UVA 10375 UVA 10791 UVA10375 Choose and divide 题解 先素数打表,然...

  • 有趣的数学题

    UVA12716 UVA11582 UVA12716 GCD XOR 题解 参考这题用到2个结论a ^ b = c...

  • 字典树

    UVA 11488题目链接https://uva.onlinejudge.org/index.php?option...

  • ACM 国内外几个网站 & 题目分类

    国外 西班牙Valladolid大学 Uva:https://uva.onlinejudge.org俄罗斯Ural...

  • 管理定律:零和博弈#8.28

    ps:尽量每天一篇,加强学习。 零和博弈(Zero-sum Game),也称零和游戏、定和博弈 简介 零和博弈是博...

网友评论

      本文标题:Uva(10891)(Game of Sum)

      本文链接:https://www.haomeiwen.com/subject/castbftx.html