首页 > 其他分享 >ABC270D(fake)

ABC270D(fake)

时间:2022-09-25 21:47:24浏览次数:44  
标签:Level int scanf 石子 fake ABC270D dp

image
……
你家 E 比 D 水……

题意

有 $ N $ 颗石子,每次可以拿 $ A_1 $ 或 $ A_2 $ 或 …… 或 $ A_K $ 颗石子。
Takahashi 是先手,Snuke 是后手。他们都想让自己取的石子数尽可能的多。
在两人都采用最优策略的前提下,Takahashi 会拿多少颗石子?

Level 1

穿山甲:鸡汤来喽!
哔——


我:DP来喽!
哔——











Level 2

状态:$ f_i $ 为先手在 $ i $ 颗石子开局时,最终能拿多少颗石子。
友情提示:状态转移一次 $ O(n) $ 。











Level 3

$ f_i = \max \left \{ a_j + (i - a_j) - f_{i - a_j} \ | \ a_j \leq i \right \} $
含义:首先,我们取了 $ a_j $ 个。接着,后手开 $ i - a_j $ 的局。后手拿到 $ f_{i - a_j} $ 个,我们先手就拿到了 $ (i - a_j) - f_{i - a_j} $ 个。











代码

#include <bits/stdc++.h>
using namespace std;

int a[105], dp[10005];

int main() {
	int N, K;
	scanf("%d %d", &N, &K);
	for (int i = 0; i < K; i++) {
		scanf("%d", &a[i]);
	}
	dp[0] = 0, dp[1] = 1;
	for (int i = 2; i <= N; i++) {
		for (int j = 0; j < K; j++) {
			if (a[j] <= i) {
				dp[i] = max(dp[i], a[j] + (i - a[j] - dp[i - a[j]]));
			}
		}
	}
	printf("%d", dp[N]);
	return 0;
}

标签:Level,int,scanf,石子,fake,ABC270D,dp
From: https://www.cnblogs.com/AProblemSolver/p/16729039.html

相关文章

  • python爬虫随机headers伪装fake_useragent
    python爬虫随机headers伪装fake_useragentfake_useragent库调用方法ua.random可以随机返回一个headers(User-Agent)fromfake_useragentimportUserAgent#下载:pip......
  • 论文阅读《FAKE OR GENUINE? CONTEXTUALISED TEXT REPRESENTATION FOR FAKE REVIEW DE
    一、论文所解决的问题采用集成学习的方式,集成了RoBERTa,ALBERT,andXLNet三种bert改进的版本,以一定的权重进行结果的计算,解决虚假评论预测问题。二、创新点采用了集......
  • 创建自己的数据集进行分析——Faker 库教程
    创建自己的数据集进行分析——Faker库教程如果您曾经在您最喜欢的平台(例如TikTok、Udemy等)上看到大量有关数据分析的视频、博客文章或课程,建议保持不变,请学习技术技能......
  • Faker库
    一、PythonFaker库简介Faker是一个Python包,开源的GITHUB项目,主要用来创建伪数据。在项目开发初期,为了测试方便,我们总要造不少假数据到系统中,尽量模拟真实环境。使用Fak......
  • 攻防世界 | Web-Fakebook
    这关一进来一个登录框,一个注册框,题目没给什么提示先注册一个试试(但是注册完之后退不回去了需要重新开一个浏览器)注册完随便点一点,发现URL有点异样http://111.200.241.......