uva10891

UVa 10891(记忆化搜索,递推)Game of Sum 例题28 Sum游戏(Game of Sum, UVa 10891) 有一个长度为n的整数序列, 两个游戏者A和B轮流取数, A先取。 每 次玩家只能从左端或者右端取一个数, 但不能两端都取。 所有数都被取 走后游戏结束, 然后统计每个人取走的所有数之和, 作为各自的得分。 两个人采取的策略都是让自己的得分尽量高, 并且两人都足够聪明, 求A 的得分减去B的得分后的结果。 【输入格式 阅读详情

白书P67页

对于这种博弈的dp,,

可以直接设dp为让当前先手为最大。。然后减去最小的最大。

 

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<string>
#include<cstring>
#include<iomanip>
#include<iostream>
#include<stack>
#include<cmath>
#include<map>
#include<vector>
#define ll long long
#define inf 0x3f3f3f3f
#define INF 1000000000
#define bug1 cout<<"bug1"<<endl;
#define bug2 cout<<"bug2"<<endl;
#define bug3 cout<<"bug3"<<endl;
using namespace std;
const int maxn=105;
int a[maxn];
int sum[maxn];
int dp[maxn][maxn];
int vis[maxn][maxn];
int DP(int i,int j){
    if(vis[i][j])return dp[i][j];
    vis[i][j]=1;
    int m=0;//这个地方我再敲错了。。,这里表示全部取光,
    for(int k=i+1;k<=j;++k){
        m=min(m,DP(k,j));//表示让下一次先手的人的得分更少的情况。。
    }
    for(int k=j-1;k>=i;--k){
        m=min(m,DP(i,k));
    }
    return dp[i][j]=sum[j]-sum[i-1]-m;
}
int main(){
    int n;
    while(~scanf("%d",&n)&&n){
        memset(vis,0,sizeof(vis));
        memset(sum,0,sizeof(sum));
        for(int i=1;i<=n;++i){
            scanf("%d",&a[i]);
            sum[i]=sum[i-1]+a[i];
        }
        printf("%d\n",2*DP(1,n)-sum[n]);
    }
}


 

PyCharm旧版本下载地址 快捷找到PyCharm历史版本下载地址 阅读详情

相关推荐

10行代码搞定QMT实盘交易:手把手教你用Python自动化买卖股票(附完整源代码)

本文提供了一份详尽的QMT实盘交易教程,手把手教你使用Python构建自动化交易系统。内容涵盖环境配置、账户连接、查询与下单等核心代码,并附有完整的源代码示例,帮助开发者快速掌握从零到实盘的完整流程,实现安全可靠的股票自动化买卖。

weixin_29214335的博客 439

题解系列007 | 洛谷题解 UVa10891 【Game of Sum】

原题传送门 一、题意概要 有一个长度为 nnn 的整数序列,两个游戏者 AAA 和 BBB 轮流取数,且均采用贪心算法,求最终双方取出的数的总和之差。 二、算法及分析 事实上,通过题目中的描述,我们很容易就能看出,在贪心算法这一制约条件下,这题的结果就变成了唯一的(注意:贪心算法 ≠\neq​= 最小差距!),因此可以看作是一道“模拟”题。 在做法上,注意到双方都用贪心算法,因此代码实现可以用动态规划实现:开一个动态规划二维数组 dp[105][105]dp[105][105]dp[105][105]

爱学习的Allan的博客 346

增量式PID的P和I怎么理解(一)

增量式PID的P、I理解之推翻片 据我所知的资料里关于PID三个参数的理解是这样的:(我这里只说P和I,先不说D) P的作用:比例P可以加快系统调节速度,P过小调节时间变长,响应性不够,P越大响应性越高超调也越严重,过大的P会使系统振荡。 I的作用:消除静差,提高控制精度,I越大越滞后,过大会使系统振荡。 ...

fangchenglia的博客 1万+

UVA 10891 - Game of Sum (博弈+区间DP+记忆化搜索)

Root     10891 - Game of Sum Time limit: 3.000 seconds This is a two player game. Initially there are n integer numbers in an array and players A and B get chance to take them alt

Ever_glow的博客 789

测试用例经典练习之微信发红包测试用例

微信发红包测试用例

ZCYaiCLX3344的博客 1万+

论文阅读------Exposure Fusion: A Simple and Practical Alternative to High Dynamic Range Photography

Mertens T, Kautz J, Van Reeth F. Exposure fusion: A simple and practical alternative to high dynamic range photography[C]//Computer graphics forum. Oxford, UK: Blackwell Publishing Ltd, 2009, 28(1): 161-171. 摘要 本文提出了一种将包围曝光的序列融合到高质量图像中的技术,而无需先转换为高动态范围(HD.

qq_25283239的博客 3397

UVA10891[Game of Sum] 动态规划

UVa10819 动态规划

Venishel的博客 382

用Python和sklearn预测NBA比赛胜负:从数据清洗到模型优化的完整流程

本文详细介绍了如何使用Python和sklearn构建NBA比赛胜负预测模型,涵盖从数据清洗、特征工程到模型优化与部署的完整流程。通过对比随机森林、XGBoost等主流算法,提供实战技巧和解决方案,帮助数据爱好者掌握体育数据分析的核心技术。

weixin_30823001的博客 131

Camunda流程引擎 Modeler (二)

Camunda Modeler是Camunda官方提供的建模器: 独立安装的建模器([windows、linux、mac]

1311

9篇3章7节:基于 R 语言的 FAERS 数据提取与合并

本文主要探讨了 FAERS 数据提取与合并的操作流程。首先,通过程序化方法从本地存储的 FAERS ASCII 文件中提取指定季度或范围内的单药报告数据,并可通过参数设置控制数据存储位置、处理方式、计算资源分配以及报告者职业类别等。随后,通过批量读取的方式对多个季度的 DRUG 文件进行循环处理,并将其合并为一个综合数据框。

MD Code 1263

总和一定的博弈 记忆化搜索 uva 10891 hdu 4597 hdu 4753

UVA 10891 : 题意: 现在给你一个序列,你可以从序列的左端开始取数,也可以从序列的右端开始取数,每次可以取连续个数,A先取,问A最多比B多取多少。 思路: n为100 显然是区间dp,但是这里也可以用记忆化搜一下呀。这就是一个总和确定的博弈。遇到边界就是l&gt;r ,或者 l==r 。 记忆化代码: #include&lt;bits/stdc++.h&gt; using n...

yjt9299的博客 229

知识图谱构建中的数据清洗:AI原生应用高质量图谱的前提

数据清洗是知识图谱构建的核心前置环节,直接决定AI原生应用(如智能问答、个性化推荐、决策支持系统)的图谱质量与应用效能。本文以第一性原理为起点,系统解析数据清洗的理论框架、技术架构与工程实践,覆盖从多源异构数据的噪声检测到高质量知识三元组(实体-关系-实体)生成的全流程。通过层次化概念映射(专家→中级→入门)、数学形式化建模及工业级案例分析,揭示数据清洗在解决实体歧义、关系冲突、结构不一致等关键问题中的技术逻辑,并展望基于大模型的智能清洗范式演化。Completeness(完整性)

移动开发前沿的博客 404

Uva 10891

Uva 10891 Game of Sum 题目地址:Uva 10891 题目大意,有一个包含n(n<=100)个整数的数列,两个人轮流从中取数,每次只能从数列的某一端(左或是右)取,每次可以去出一个或多个,但不能不取,每次所取得的数的和为每人的总得分,问在两人均采取最优策略时先手能够比后手多得多少分。 题目分析:看到“最优”,以及数据范围应该能想到是n^3 DP,而本题的难点在于状态的表示...

lycccccccc的博客 263

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

uva 10891 game of sum

题目链接 详细请参考刘汝佳《算法竞赛入门经典训练指南》 p67 //2013-05-01-20.40 //uva 10891 #include <stdio.h> #include <string.h> #include <algorithm> using namespace std; const int maxn = 105; bool...

111

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Game of Sum UVA - 10891

问题 https://vjudge.net/problem/UVA-10891 分析 就是n台计算机上运行这n种服务,每个计算机都可以选择一种服务,使得它和相邻计算机上的这种服务停止,问也最多能够停止多少种服务。 #include <iostream> #include <cstdio> #include <cmath> #include <cstring...

zpf1998的博客 171

UVA 10891 Sum游戏 (DP)

题目:https://vjudge.net/problem/UVA-10891 第一种方法:记忆化搜索 状态有O(n^2),每个状态有O(n)个转移,所以时间复杂度为O(n^3) #include<bits/stdc++.h> #include<algorithm> using namespace std; const int maxn=100+10; int S...

weixin_43568895的博客 202

uva 10891 sum

/***************** * Author:fisty * Date:2014-10-25 * uva 10891 *DP *******************/ #include #include #include using namespace std; #define MAX_N 110 //input int n; int a[MAX_N]; int d[M

fisty 479

UVA 10891 Game of Sum

UVA_10891 一开始想到了极大极小的思路,但觉得这不就变成极大极小搜索了么,后来便没继续往下想。 看了别人的题解后发现果然就是极大极小的博弈思想,只不过由于搜索过程中状态有限而且有些状态是重复的,因此可以用记忆化搜索来降低复杂度。当然也可以用递推形式的动规来做。 以后有想法了之后一定要敢于去实现自己的想法。 如果设f[i][j]表示面临由i到j这样一个...

weixin_30300225的博客 103

uva10891 Game of Sum(博弈论+dp)

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=11&problem=1832&mosmsg=Submission+received+with+ID+13415943 感觉博弈题写的很纠结。。。 ...

akk99296的博客 183

UVA - 10891——Game of Sum(区间dP)

题目链接:https://vjudge.net/problem/UVA-10891 题意:n个数的序列,A和B两个人比赛,A先取,可以从剩下序列的左边或者右边开始取,每次任取1~n个数字,两人都用最优方案,求A的总和减去B的总和 思路:dp[i][j]表示区间i~j先手能获得的最大值。 dp[i][j]=sum[i][j]-min{dp[i+1][j]......dp[...

creator平 235

uva 10891 - Game of Sum

题目:uva 10891 - Game of Sum 题意:一排石子,每次可以从左边或者右边拿若干个,求先后手差值的最大值 思路:dp #include #include #include #include #include using namespace std; #define maxn 110 bool vis[maxn][maxn]; int dp[maxn][maxn

shiyuan的专栏 926

Uva 10891 - Game of Sum ( 区间dp )

题目链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1832 题目大意: 有n个数字排成一条直线,然后有两个小伙伴来玩游戏, 每个小伙伴每次可以从两端(左或右)中的任意一端取走一个或若干个数(获得价值为取走数之和), 但是他取走的方式一

棺材深處 2816
上一篇: uva10635
下一篇: scut training 2 简单dp zoj3956
sega_handsome
博客等级 码龄10年 7粉丝 164原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值