[UVA 10891] Game of Sum

图片加载可能有点慢,请跳过题面先看题解,谢谢
1196604-20171012112123762-678498953.png
1196604-20171012112127371-728858458.png

很容易想到这样一个状态:
\(dp[l][r]\) 表示,\(l\)\(r\) 这一段区间,双方都使用最优策略时,先手能得到的最大分数
$
$
那么这个只要怎么求呢,想一下,\(dp[l][r]\) 要最大,而 \(sum[l][r]\) 是固定的,
所以 \(dp[l][r]=sum[l][r]-min(min(dp[l'][r]),min(dp[l][r']),0)\),其中 \(l+1\le l'\le r\)\(l\le r'\le r-1\)
我们记 \(f[l][r]=min(dp[l'][r]),l\le l'\le r\)\(g[l][r]=min(dp[l][r']),l\le r'\le r\)
显然,有转移:

  1. \(dp[l][r]=sum[l][r]-min(f[l+1][r],g[l][r-1],0)\)
  2. \(f[l][r]=min(dp[l][r],f[l+1][r])\)
  3. \(g[l][r]=min(dp[l][r],g[l][r-1])\)

那么最后的答案就是:\(2*dp[1][n]-sum[1][n]\)

//made by Hero_of_Someone
#include<iostream>
#include<cstdio>
#include<cstdlib>
#define il inline
#define RG register
using namespace std;
il int gi(){ RG int x=0,q=1; RG char ch=getchar(); while( ( ch<'0' || ch>'9' ) && ch!='-' ) ch=getchar();if( ch=='-' ) q=-1,ch=getchar(); while(ch>='0' && ch<='9') x=x*10+ch-48,ch=getchar(); return q*x; }int n,a[540],sum[540];
int f[540][540],g[540][540],dp[540][540];il void init(){for(RG int i=1;i<=n;i++) a[i]=gi(),sum[i]=sum[i-1]+a[i];for(RG int i=1;i<=n;i++) f[i][i]=g[i][i]=dp[i][i]=a[i];
}il void work(){for(RG int len=1;len<n;len++)for(RG int l=1;l+len<=n;l++){RG int r=l+len,Min=0;Min=min(Min,min(f[l+1][r],g[l][r-1]));dp[l][r]=sum[r]-sum[l-1]-Min;f[l][r]=min(dp[l][r],f[l+1][r]);g[l][r]=min(dp[l][r],g[l][r-1]);}RG int ans=(dp[1][n]<<1)-sum[n]; printf("%d\n",ans);
}int main(){ while(scanf("%d",&n)&&n){ init(); work(); } return 0; }

转载于:https://www.cnblogs.com/Hero-of-someone/p/7655387.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/415609.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1 微信公众号开发 服务器配置 有什么用

启用并设置服务器配置后&#xff0c;用户发给公众号的消息以及开发者需要的事件推送&#xff0c;将被微信转发到该URL中。 换句话说&#xff0c;开发者需要监听这个URL&#xff0c;处理数据&#xff0c;并做出反应。

svn在linux下的使用(转)

svn在linux下的使用(转)ubuntu命令行模式操作svn 首先要安装SVN客户端到你的系统才能操作各种命令 apt-get install subversion 1、将文件checkout到本地目录 svn checkout path&#xff08;path是服务器上的目录&#xff09; 例如&#xff1a;svn checkout svn://192.168.1.1…

2 微信公众号开发 服务器配置 Token验证

服务器配置的主要难点就是Token验证。 官方文档&#xff1a;https://mp.weixin.qq.com/wiki?tresource/res_main&idmp1445241432 接入指南&#xff1a;https://mp.weixin.qq.com/wiki?tresource/res_main&idmp1421135319 用户服务器端主要需要做的工作&#xff0c;…

前端学习(2623):Vuex初步识别

Vuex 是什么&#xff1f; Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到 Vue 的官方调试工具 devtools extension (opens new window)&#x…

3 微信公众号开发 接受普通消息

用户如果在公众号发送内容&#xff0c;微信服务器会把消息转发到我们到服务器上&#xff0c;我们需要及时做出处理&#xff0c;给用户反馈。 文档地址&#xff1a;https://mp.weixin.qq.com/wiki?tresource/res_main&idmp1421140453 例如&#xff0c;在微信公众号发送消…

Linux 查看系统硬件信息

Linux 查看系统硬件信息(实例详解)linux查看系统的硬件信息&#xff0c;并不像windows那么直观&#xff0c;这里我罗列了查看系统信息的实用命令&#xff0c;并做了分类&#xff0c;实例解说。 cpu lscpu命令&#xff0c;查看的是cpu的统计信息. blueblue-pc:~$ lscpu Archit…

简易表格编辑器

SMMS有个建表工具,尝试使用HTML模仿出一个简单的做为练习. 截图: 一.实现SMMS建表工具的操作 点击单元格,进入编辑状态.按TAB切换单元格按方向箭切换单元格按空格设定取消主键列二.实现思路: 1.DOM结构使用div(行)span(列) <div><span></span><span>&l…

Android 向右滑返回,退出当前activity

demo链接&#xff1a;https://download.csdn.net/download/meixi_android/10826597 实现效果: 纯原生类实现方法&#xff1a; 1、自定义侧滑基类SwipeBackActivity public class SwipeBackActivity extends FragmentActivity implements SwipeBackActivityBase {private Swi…

4 微信公众号开发 被动回复消息 回复没有反应怎么办

接收到用户的消息&#xff0c;我们需要做出反馈。 文档地址&#xff1a;https://mp.weixin.qq.com/wiki?tresource/res_main&idmp1421140543 官方返回的数据格式是xml&#xff0c;我们需要转化为json。获取数据&#xff0c;构造xml在返回就OK了。 核心代码&#xff1a; …

Linux系统的远程登录

Linux大多应用于服务器&#xff0c;而服务器不可能像PC一样放在办公室&#xff0c;它们是放在IDC机房的&#xff0c;所以我平时登录linux系统都是通过远程登录的。Linux系统中是通过ssh服务实现的远程登录功能。默认ssh服务开启了22端口&#xff0c;而且当我们安装完系统时&…

更新——Canvas画布动画效果之实现倒计时

Hello&#xff0c;大家好&#xff01; 小W复活啦&#xff01;继续欢乐的给大家更博&#xff0c;输送新知识~~ 不开玩笑啦&#xff01;秒进正题~~~ 上次更博&#xff0c;小W给大家介绍了Canvas画布的基础部分&#xff0c;以及实现了一个由7*10点阵图显示的倒计时的基本架构。 上…

5 微信公众号开发 获取 access_token

在使用微信公众号接口中&#xff0c;需要access_token。access_token是公众号的全局唯一凭证。可以理解为我们服务器的身份证。 总结以上说明&#xff0c;access_token需要做到以下两点&#xff1a; 1.因为access_token有2个小时的时效性&#xff0c;要有一个机制保证最长2个…

Android TextView 设置文字背景色或文字颜色,字体阴影,字体样式

//第一个字符变色String copiesStr_notic tv_notic.getText().toString().trim();SpannableString spannableString2 new SpannableString(copiesStr_notic);//0 第一行缩进像素 , SizeUtils.dp2px(15)非第一行缩进像素Paint mPaintnew Paint();float wmPaint.measureText(cop…

微信公众号 和 微信小程序 用户数据互通 通过微信开放平台的UnionID机制

很多时候&#xff0c;需要将多个公众号和小程序的用户数据打通&#xff0c;我们需要做的&#xff0c;就是将这些公众号和小程序都绑定到同一个微信开发平台上&#xff0c;那么我们就可以获取到UnionID了。其实数据就已经打通了。 UnionID机制说明&#xff1a; 如果开发者拥有…