uva10891Game of sum

简介: 题意:经典的取石子游戏是这样的:有一堆石子,A、B两个人轮流取,每次取一颗,只能从边上取,每个石子有相应的价值,A、B两人都想使得自己的价值最多,两个人足够聪明,问最后价值分别是多少 本题则是可以取多颗,但仍然只能从一侧取得 分析:状态转移方程 best[i][j]=sum[i][j]-min...

题意:经典的取石子游戏是这样的:有一堆石子,A、B两个人轮流取,每次取一颗,只能从边上取,每个石子有相应的价值,A、B两人都想使得自己的价值最多,两个人足够聪明,问最后价值分别是多少

本题则是可以取多颗,但仍然只能从一侧取得

分析:状态转移方程

best[i][j]=sum[i][j]-min(best[i][j-k],best[i+k][j], 0);{1<=k=j-i+1}.

使用了记忆化的方法,O(n3),书上说有进一步的优化,不过当前数据下已经很快了(64ms)

代码:

View Code
 1 #include <stdio.h>
 2 #include <iostream>
 3 #include <string.h>
 4 using namespace std;
 5 const int MAXN = 100 + 10;
 6 #define DEBUG
 7 int min(int a, int b){
 8     return a<b?a:b;
 9 }
10 int s[MAXN], a[MAXN], d[MAXN][MAXN], vis[MAXN][MAXN], n;
11 int dp(int i, int j){
12     if(vis[i][j]) return d[i][j];
13     vis[i][j]=1;
14     int m=0, k;
15     for(k=i+1; k<=j; k++) m=min(m, dp(k, j));
16     for(k=i; k<j; k++) m=min(m, dp(i, k));
17     d[i][j]=s[j]-s[i-1]-m;;
18     return d[i][j];
19 }
20 int main(){
21 #ifndef DEBUG
22     freopen("in.txt", "r", stdin);
23 #endif
24     while(scanf("%d", &n)!=EOF && n){
25         s[0]=0;
26         int i;
27         for(i=1; i<=n; i++){
28             scanf("%d", &a[i]);
29             s[i] = s[i-1] + a[i];
30         }
31         memset(vis, 0, sizeof(vis));
32         printf("%d\n", 2*dp(1,n)-s[n]);
33     }
34     return 0;
35 }

 

 

目录
相关文章
|
Dart 数据安全/隐私保护 Swift
iOS代码混淆工具推荐:IPA Guard详细介绍
iOS代码混淆工具推荐:IPA Guard详细介绍
952 0
|
JavaScript Windows 容器
Flutter Web:根据浏览器窗口改变布局大小
之前我们通过flutter开发web应用,然后用electron打包成可执行文件在pc端使用,因为electron可以设置最小宽高,所以布局不会越界,但是如果直接在浏览器中打开,因为浏览器的大小无法控制,如果用户缩小浏览器会导致布局越界。根据大部分网站的经验来看,当窗口缩小到一定程度后,布局就不会再改变,反而是增加了滚动,这样就保证了布局的正确性,所以我们也打算这么做。
1874 0
|
安全 算法 Oracle
【WEB安全】Apache Shiro 反序列化漏洞(上)
Apache Shiro是一款开源企业常见JAVA安全框架,提供身份验证、授权、密码学和会话管理。java中的权限框架有SpringSecurity和Shiro,由于Spring功能强大但复杂,Shiro的简单强大,扩展性好因此用的还是很多。
1643 0
【WEB安全】Apache Shiro 反序列化漏洞(上)
|
存储 运维 监控
阿里云对象存储 OSS 发布全球第一可用性 SLA 背后的技术体系
2020年6月,阿里云对象存储 OSS 通过十年积累的技术红利,将可用性 SLA(Service Level Agreement) 提升 10 倍,做到了全球第一的核心竞争力,是其他的云厂家的 10~20 倍,如下图所示。
2723 0
阿里云对象存储 OSS 发布全球第一可用性 SLA 背后的技术体系
|
11月前
|
人工智能 数据可视化 测试技术
Coze平台指南(3):核心功能-创建智能体与设计角色
Coze 智能体是由大语言模型驱动,通过提示词设定角色,并借助知识库、插件和工作流扩展能力,以执行特定任务的AI助手。对测试工程师而言,精心设计的智能体可显著提升测试效率与质量,关键是要准确理解测试需求,并将其转化为智能体的角色设定和功能配置。建议进一步学习知识库与工作流,以深化应用。
|
存储 算法 网络协议
|
机器学习/深度学习 数据采集 人工智能
高德POI数据生产中的计算机视觉技术
又到春招季!作为国民级出行服务平台,高德业务快速发展,大量校招/社招名额开放,欢迎大家投递简历,详情见文末。为帮助大家更了解高德技术,我们策划了#春招专栏#的系列文章,组织各业务团队的高年级同学以业务科普+技术应用实践为主要内容为大家做相关介绍。
779 0
高德POI数据生产中的计算机视觉技术
|
Java Android开发 开发者
深入分析 Android 系统返回手势的实现原理(1)
深入分析 Android 系统返回手势的实现原理(1)
深入分析 Android 系统返回手势的实现原理(1)
STM32F0XX DMA串口发送数据
最近在接手一个安排的时候,需要修改之前的一些代码的外设接口,然后发现之前有部分关于USART通过DMA收发数据的部分功能,修改移植的时候发现有些需要注意的事项,以及解释的,做一篇小笔记吧,博主使用的单片机是STM32f071。
710 0
STM32F0XX DMA串口发送数据
|
编解码 小程序 C#
python实现电子邮件附件指定时间段,批量下载以及C#小程序集成实现(一)
根据网上相关资料,使用python实现邮箱附件批量下载,然后打包生成exe后,虽是脱离了python环境便于她使用,可对于她们这些没有接触编程的人员来说,cmd命令行调用exe的操作不便于理解和操作。为此,界面化程序开发选择了C#,从而实现了C#调用python开发的exe来完成邮箱附件批量下载功能。
863 0
python实现电子邮件附件指定时间段,批量下载以及C#小程序集成实现(一)

热门文章

最新文章