[ABC270D] Stones
[ABC270D] Stones
题意
有两个人玩游戏,有 \(n\) 个石子,和一个长度为 \(k\) 的序列,每次可以取 \(a_i\) 个但前提是剩下来的石子数有 \(a_i\) 个,第一个人先取,问两边都是用最优策略时,第一个人最多能得多少个石子。
思路
可以设计状态 \((x, y, f)\) 表示第一个人取了 \(x\) 个石子,第二个人取了 \(y\) 个石子,由第 \(f + 1\) 人开取,显然 \(x + y \le n\)。
那么可以优化状态,因为要求的是第一个人最多能得多少个石子,所以可以将其中一个变量提取出来变成最优属性,可是光靠知道另一个人取了多少个石子是不够的,所以可以将它变成一共已经取了 \(x\) 个石子,还有由于两个人都用的是最优策略,所以 \(f\) 可以优化掉,也就变成了 \(dp_x = y\),那转移就是 \(dp_x = \max(x - dp_{x - a_i})\)。
代码
#include <iostream>
using namespace std;
const int MaxN = 110, MaxV = 1e4 + 10;
int dp[MaxV], a[MaxN], n, k;
int main() {
cin >> n >> k;
for (int i = 1; i <= k; i++) {
cin >> a[i];
}
for (int i = 0; i <= n; i++) {
for (int j = 1; j <= k; j++) {
if (i >= a[j]) {
dp[i] = max(dp[i], i - dp[i - a[j]]);
}
}
}
cout << dp[n] << endl;
return 0;
}
[ABC270D] Stones的更多相关文章
- HDU 5973 Game of Taking Stones 威佐夫博弈+大数
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5973 Game of Taking Stones Time Limit: 2000/1000 MS ...
- HDU 4573 Throw the Stones(动态三维凸包)(2013 ACM-ICPC长沙赛区全国邀请赛)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4573 Problem Description Remember our childhood? A fe ...
- codechef Jewels and Stones 题解
Soma is a fashionable girl. She absolutely loves shiny stones that she can put on as jewellery acces ...
- HDU-1896 Stones
http://acm.hdu.edu.cn/showproblem.php?pid=1896 题意:一个人从0开始走起,遇到偶数个石头就踢.要是同一位置有多个石头,则先扔最重的石头(也就是扔的最近的那 ...
- hdoj 1896 Stones【优先队列】
Stones Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Subm ...
- Stones(优先队列)
Stones Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Subm ...
- 动态规划,而已! CodeForces 433B - Kuriyama Mirai's Stones
Kuriyama Mirai has killed many monsters and got many (namely n) stones. She numbers the stones from ...
- HDU 1896 Stones (优先队列)
Problem Description Because of the wrong status of the bicycle, Sempr begin to walk east to west eve ...
- LeetCode --> 771. Jewels and Stones
Jewels and Stones You're given strings J representing the types of stones that are jewels, and S rep ...
- [Swift]LeetCode1033. 移动石子直到连续 | Moving Stones Until Consecutive
Three stones are on a number line at positions a, b, and c. Each turn, let's say the stones are curr ...
随机推荐
- PHP 循环语句
循环机构,在一定的控制下,对此执行. 在PHP中,有以下几种循环 for循环.while循环.do-while循环.forech循环(针对数组) for 循环 语法 for (条件1;条件2;条件3) ...
- 【VSC】ERROR:GDB exited unexpectedly.
[VSC]ERROR:GDB exited unexpectedly. 记录一次调试所遇bug的查找历程 问题描述 ERROR: GDB exited unexpectedly. Debugging ...
- springboot 接入 ChatGPT
项目地址 https://gitee.com/Kindear/lucy-chat 介绍 lucy-chat是接入OpenAI-ChatGPT大模型人工智能的Java解决方案,大模型人工智能的发展是不可 ...
- 使用Net将HTML简历导出为PDF格式
现在有许多将HTML导出PDF的第三方包,这里介绍使用的是Select.HtmlToPdf.NetCore 使用Select.HtmlToPdf.NetCore 整体思路是将cshtml内容读出来,然 ...
- Kafka + SpringData + (Avro & String) 【Can't convert value of class java.lang.String】问题解决
[1]需求:Kafka 使用 Avero 反序列化时,同时需要对 String 类型的 JSON数据进行反序列化.AvroConfig的配置信息如下: 1 /** 2 * @author zzx 3 ...
- springboot jpa---->总结一下遇到的问题
Native Query throw exception dto code import lombok.Value; @Value public class IdsOnly { Integer id; ...
- 有关SpringMVC的一些知识点
Spring的获取对象 1.获取原生对象,直接在在方法李传http相关的对象.2.接受简单数据类型,接受简单数据类型(八种基本类型)参数直接在handler方法里声明,会自动把相同类型进行绑定,但是接 ...
- AndroidBanner - ViewPager 03
AndroidBanner - ViewPager 03 上一篇文章,描述了如何实现自动轮播的,以及手指触摸的时候停止轮播,抬起继续轮播,其实还遗留了一些问题: 当banner不可见的时候,也需要停止 ...
- 迁移学习《Cluster-Guided Semi-Supervised Domain Adaptation for Imbalanced Medical Image Classification》
论文信息 论文标题:Cluster-Guided Semi-Supervised Domain Adaptation for Imbalanced Medical Image Classificati ...
- 【LeetCode回溯算法#extra01】集合划分问题【火柴拼正方形、划分k个相等子集、公平发饼干】
火柴拼正方形 https://leetcode.cn/problems/matchsticks-to-square/ 你将得到一个整数数组 matchsticks ,其中 matchsticks[i] ...