hihocoder-Week173--A Game

hihocoder-Week173--A Game 

A Game

时间限制:10000ms
单点时限:1000ms
内存限制:256MB

描述

Little Hi and Little Ho are playing a game. There is an integer array in front of them. They take turns (Little Ho goes first) to select a number from either the beginning or the end of the array. The number will be added to the selecter's score and then be removed from the array.

Given the array what is the maximum score Little Ho can get? Note that Little Hi is smart and he always uses the optimal strategy. 

输入

The first line contains an integer N denoting the length of the array. (1 ≤ N ≤ 1000)

The second line contains N integers A1A2, ... AN, denoting the array. (-1000 ≤ Ai ≤ 1000)

输出

Output the maximum score Little Ho can get.

样例输入
4
-1 0 100 2
样例输出
99

 

 

使用区间dp,

 

但是我的这种方法只ac了50%, 应该是dp[i][j][1] = max( dp[i][j][1] ,  min( dp[i+1][j][0] , dp[i][j-1][0]) 

应该对方的策略不是让我方最少,而是对方也取得最优。

 

AC 50% Code: 

#include <cstdio> 
#include <cstring> #include <iostream> 
using namespace std; const int MAXN = 1000 + 10; int n, num[MAXN], dp[MAXN][MAXN][2]; int main(){freopen("in.txt", "r", stdin); int n; scanf("%d", &n); for(int i=1; i<=n; ++i){scanf("%d", &num[i]); } memset(dp, 0, sizeof(dp)); for(int i=1; i<=n; ++i){dp[i][i][0] = num[i]; }for(int i=n; i>=1; --i){for(int j=i; j<=n; ++j){dp[i][j][0] = max( dp[i+1][j][1] + num[i],   dp[i][j][0] ); dp[i][j][0] = max( dp[i][j-1][1] + num[j],   dp[i][j][0] ); dp[i][j][1] = max( dp[i][j][1], min( dp[i+1][j][0] ,  dp[i][j-1][0] ) ); }} int ans = dp[1][n][0]; printf("%d\n", ans);return 0; 
}

  

 

 

所以, 

 dp[i][j] = max( sum(i,j) - dp[i+1][j], sum(i,j) - dp[i][j-1]) 

双方都在求最优,所以 dp[i][j] 指的是当前下手的选手,可以取得的最优成果。 所以当前状态是依赖于前面的 dp[i][j-1] 和 dp[i+1][j] , 

 

AC Code 

#include <cstdio> 
#include <cstring> #include <iostream> 
using namespace std; const int MAXN = 1000 + 10; int n, num[MAXN], sum[MAXN], dp[MAXN][MAXN]; int main(){int n; scanf("%d", &n); sum[0] = 0; for(int i=1; i<=n; ++i){scanf("%d", &num[i]); sum[i] = sum[i-1] + num[i];  } memset(dp, 0, sizeof(dp)); for(int i=1; i<=n; ++i){dp[i][i] = num[i]; }for(int i=n; i>=1; --i){for(int j=i+1; j<=n; ++j){dp[i][j] = (sum[j] - sum[i-1]) - min( dp[i+1][j], dp[i][j-1] ); }} int ans = dp[1][n]; printf("%d\n", ans);return 0; 
}

  

 

转载于:https://www.cnblogs.com/zhang-yd/p/7718448.html

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

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

相关文章

php打乱数组二维数组、多维数组

//这个是针对二维数组的!下面针对多维数组的乱序方法<?php function shuffle_assoc($list) { if (!is_array($list)) return $list; $keys array_keys($list); shuffle($keys); $random array(); foreach ($keys as $key) $random[$key] $list[$key]; ret…

明明一样的程序为啥有的系统就报错有的就正常运行呢_SurfaceGo Android系统折腾笔记...

Surface Go平板在Win10系统下的表现我认为还是比较出色的&#xff0c;x86架构CPU意味着不考虑性能的情况下&#xff0c;台式机上能跑的程序&#xff0c;这台平板也能跑&#xff0c;新Galgame一出就能直接安装上躺床上玩&#xff0c;妙哉。但遗憾的是现实世界还是要考虑性能问题…

c语言实训作业总结,c语言程序设计上机实践心得报告

c语言程序设计上机实践心得报告 班级:11 电信 2 姓名:莫金波 学号:1107032242012.12.28 惠州学院 HUIZHOU UNIVERSITY 我们专业的学生在专业老师的带领下进行了 c 语言设计基础教程的 实践学习。在这之前&#xff0c;我们已经对 c 语言这门课程学习了差不多一 个学期&#xff0…

JavaOne 2012:在JVM上诊断应用程序

值得参加Staffan Larsen &#xff08;Oracle Java Serviceability Architect&#xff09;的演讲“ 在JVM上诊断应用程序 ”&#xff08;Hilton Plaza A / B&#xff09;&#xff0c;只是为了学习Oracle JVM 7随附的新jcmd命令行工具。该演示对我来说是“奖金”&#xff0c;这对…

mysql慢查询工具

GeorgeHao安装过程&#xff1a; [rootlocalhost-centos6 ~]# wget percona.com/get/pt-query-digest [rootlocalhost-centos6 ~]# chmod ux pt-query-digest [rootlocalhost-centos6 ~]# mv /root/pt-query-digest /usr/bin/ 今天有在阿里云服务器跑分的时候出现"Cant loc…

python字符串转date,在Python上将字符串转换为Date类型

I have this string:2012-02-10 # (year-month-day)and I need it to be as date type for me to use the date function isoweekday().Does anyone know how I can convert this string into a date?解决方案You can do that with datetime.strptime()Example:>>> f…

文档词频矩阵_论文理解:从词嵌入到文档距离

论文作者简介本论文第一作者Matt J. Kusner是牛津大学的副教授&#xff0c;致力于设计适应现实世界问题需求的新机器学习模型&#xff08;例如&#xff0c;fair algorithms, discrete generative models, document distances, privacy, dataset compression, budgeted learning…

C# 线程理解

概念引用&#xff1a;http://blog.csdn.net/yujie_yang/article/details/53173752 多线程和多进程的区别&#xff1a;任务管理器里各种不同的进程就是多进程&#xff0c;或者是你同时运行多个”.exe’程序就可以理解为多进程&#xff0c;多进程是要更多消耗CPU资源的。 多线程是…

c语言主调函数和被调函数,在C语言中,何为主调函数和被调函数,他们之 – 手机爱问...

2007-08-30请详细一些~最好举出例子你好。评价宝宝的标准基本上是&#xff1a;技能>资质>成长因为宝宝的评价是一项 仁者见仁的活儿&#xff0c;但其中有些规律我想是可以具体话的&#xff0c;希望能对你有帮助&#xff1a;1&#xff1a;技能&#xff1a;技能的意义有多大…

学习关于display :flex 布局问题!

很多人不明白这个display:flex是到底是什么东西&#xff0c;如何使用的 。 1.什么是display&#xff1a;flex呢&#xff1f; 答&#xff1a;flex是 flexible box的缩写&#xff0c;意为弹性布局 &#xff1b;这个东西的引入&#xff0c;为盒模型提供了最大的灵活性&#xf…

QT信号和槽函数学习笔记

//connect 函数有4个参数 分别是 发送者 信号。接受者 &#xff0c;槽 //connect(sender,signal,receiver,slot) /* * 信号和槽 * 信号 就是一个普通的函数 定义信号的时候需要在函数前面加上signals: &#xff0c;不需要实现 * 槽 函数 在QT5中科院是类的任意成员函数&#xf…

数据库和Webapp安全

威胁模型 这是根据我网站上的快速参考页松散地讨论数据库和Webapp安全的问题。 该页面变得笨拙&#xff0c;并且使读者无法轻松地与我或其他人进行交互。 威胁模型 所有安全分析都必须从检查威胁模型开始。 威胁模型要求您回答四个问题&#xff1a; 我要保护的是什么&#…

note同步不及时 one_一辆理想ONE又“跪了”?理想官方紧急发文回应

汽车行业关注(autochat.com.cn)10月16日报道——10月15日&#xff0c;有网友在社交媒体上发布视频&#xff0c;从视频可以看到&#xff0c;一辆理想ONE在遭遇事故后&#xff0c;左前轮脱落在车外疑似断轴,从视频未能判定是断轴引起的事故&#xff0c;还是事故引起的断轴。针对该…

C语言连续多个空格合并一个,C语言合并连续空格

一开始自己写的&#xff1a;a&#xff1a;#includemain(){int c;int state0;while (( cgetchar()) ! EOF) {if (c ){state1;continue;}if (state){state0;putchar( );putchar(c);}elseputchar(c);}}网上搜的&#xff1a;b:#include #define NONBLANK avoid main(){int c , last…

Skywalking 中 Agent 自动同步配置源码解析

文章目录 前言正文实现架构实现模型OAP 同步 ApolloConfigWatcherRegisterConfigChangeWatcher Agent 侧 前言 本文代码 OAP 基于 v9.7&#xff0c;Java Agent 基于 v9.1&#xff0c;配置中心使用 apollo。 看本文需要配合代码“食用”。 正文 Skywalking 中就使用这种模型…

华为5720设置静态路由不通_【干货分享】交换机与路由器在环路中的处理机制了解一下!...

点击蓝字关注我们-今天小盟带大家来讨论一下交换机与路由器在环路中的处理机制-01基础配置1---如图配置路由器各接口地址&#xff0c;AR-2为PC-1的网关路由器2---AR-1配置静态默认路由&#xff0c;下一跳地址指向AR-2&#xff1b;[AR-1]ip route-static 0.0.0.0 0 12.1.1.2AR-2…

IPC 进程间通信方式——信号量

信号量 本质上是共享资源的数目&#xff0c;用来控制对共享资源的访问。用于进程间的互斥和同步每种共享资源对应一个信号量&#xff0c;为了便于大量共享资源的操作引入了信号量集&#xff0c;可对多对信号量一次性操作。对信号量集中所有的操作可以要求全部成功&#xff0c;也…

css选择器的优先级

选择器的优先级表述为4个部分&#xff0c;用0,0,0,0表示。 !important--1,0,0,0行内样式ID选择器--0,1,0,0类选择器(例如,.example)、属性选择器&#xff08;例如, [type"radio"]&#xff09;或伪类&#xff08;例如, :hover&#xff09;--0,0,1,0元素&#xff08;例…

VisualVM介绍使用

1 打开VisualVM&#xff08;这个工具放在JDK安装目录的bin目录下&#xff0c;双击jvisualvm.exe即可打开&#xff09;&#xff0c;如下图所示 以VisualVM自身为例&#xff0c;VisualVM本身也是一个java程序&#xff0c;当然也而已用VisualVM来分析 2 概述页面主要显示程序…

c语言奇葩错误,6个奇葩的(hello,world)C语言版(转)

//下面的所有程序都可以在GCC下编译通过&#xff0c;只有最后一个需要动用C的编译器用才能编译通过。//程序功能输出 Hello,world!01.c#define _________ }#define ________ putchar#define _______ main#define _(a) ________(a);#define ______ _______(){#define __ _____…