CF 1981 D. World is Mine (*1800) DP+博弈论

news/2024/7/7 21:58:17/文章来源:https://www.cnblogs.com/showball/p/18282097

CF 1981 D. World is Mine (*1800) DP+博弈论

题目链接

题意

\(n\) 个蛋糕, 每个蛋糕有一个美味值 \(a_i\)\(Alice\)\(Bob\) 轮流吃蛋糕, \(Alice\) 每次必须选择吃严格大于之前所吃的蛋糕美味程度。 \(Bob\) 随意选择。有人没有蛋糕可以吃时,游戏结束。 \(Alice\) 想吃更多蛋糕,\(Bob\) 想要阻止。

双方均采用最优策略,求 \(Alice\) 最多能吃多少蛋糕。

思路

贪心的去思考,我们注意到 \(Alice\) 选择蛋糕的策略是固定的,每次只会选择剩余蛋糕中,大于之前蛋糕美味值的最小美味值的蛋糕。而对于 \(Bob\) 来说,他如果想要让 \(Alice\) 少吃一种蛋糕,就必须把这种美味值的蛋糕全部吃掉,否则没有意义。所以对于 \(Bob\) 来说,每种蛋糕要么不吃,要么就全部吃完。不妨考虑 \(DP\), 令 \(f_{i,j}\) 表示对于前 \(i\) 种蛋糕,后手吃完了其中的 \(j\) 个,至少需要多少次操作。那么我们如果取走的 \(j\) 种蛋糕共有 \(x\) 个。那么一定要满足 $x \le i - j $ 才可以,否则没法在Alice取之前全部取走。

代码

#include<bits/stdc++.h>using namespace std;#define ff first
#define ss second
#define pb push_back
#define all(u) u.begin(), u.end()
#define endl '\n'
#define debug(x) cout<<#x<<":"<<x<<endl;typedef pair<int, int> PII;
typedef long long LL;
const int inf = 0x3f3f3f3f;
const int N = 1e5 + 10, M = 105;
const int mod = 1e9 + 7;
const int cases = 1;void Showball(){int n;cin>>n;vector<int> cnt(n+1);for(int i=0;i<n;i++){int x;cin>>x;cnt[x]++;}vector<int> cand;for(int i=1;i<=n;i++){if(cnt[i]) cand.pb(cnt[i]);}int m=cand.size();vector<int> f(m+1,inf);f[0]=0;for(int i=0;i<m;i++){auto nf=f;for(int j=0;j<i;j++){if(f[j]+cand[i]<=i-j){nf[j+1]=min(nf[j+1],f[j]+cand[i]);}}f=nf;}int ans=inf;for(int i=m;i>=0;i--) if(f[i]!=inf) return cout<<m-i<<endl,void();
}
int main(){ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);int T=1;if(cases) cin>>T;while(T--)Showball();return 0;
}

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

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

相关文章

2024年值得收藏的几款开源主机安全系统hids

随着云技术的迅速发展,主机安全系统HIDS作为服务器安全的最后一道防线,无论传统的硬件厂商,还是各大云厂商如阿里、腾讯云非常重视并闷声发大财。HIDS主机安全开源的项目虽多,但能实际用的极少,笔者经过大量搜索,找到以下几款优秀的产品供大家参考: 1、OpenHFWOpenHFW全…

代码随想录算法训练营第四十六天 | 买卖股票的最佳时机

121.买卖股票的最佳时机 题目链接 文章讲解 视频讲解动规五部曲:dp[j][0]: 表示持有股票的最大现金,dp[j][1]表示不持有股票的最大现金 递推公式:第j天持有股票的最大现金为:之前就持有这只股票和今天持有这只股票取最大值: dp[j][0] = max(dp[j-1][0], -prices[j]); 第j天…

Asp.Net Core -Authorizationz授权

授权的内部实现参考 动态授权参考动态授权 基于权限的授权 1.定义权限-Permissionspublic class Permissions{public const string Admin = "Admin";public const string Users = "Users";public const string UserCreate = Users+ ".Create";pu…

结对项目

命令行参数处理: 使用 argparse 或者 sys 模块处理命令行参数,以接收用户输入的题目数量和题目范围(例如最大数值)。 生成四则运算题目: 随机生成题目,每个题目包括两个操作数和一个运算符。 控制生成的题目数量和数值范围,确保生成的题目符合小学生的学习要求(比如操作…

详解微服务应用灰度发布最佳实践

本次分享是站在 DevOps 视角的灰度发布实践概述,主要内容包括以下四个方面:第一,灰度发布要解决的问题;第二,灰度发布的四种典型场景;第三,如何把灰度发布融入到应用的研发流程中,即把灰度发布与 DevOps 工作融合;第四,对于外部流量灰度场景,演示如何通过工具将其落…

OpenBMB Hugging Face THUNLP,联袂献上经典大模型课

这个夏天,THUNLP 携手 Hugging Face 和 OpenBMB,推出 大模型公开课第二季。在大模型公开课第二季中,将有全球知名开源社区 OpenBMB X Hugging Face 梦幻联动;MiniCPM、ChatDev、Ultra对齐 等明星开源项目作者亲自授课,带领同学从深度学习开始快速了解大模型的相关理论并进…

nginx开启https

生成自签名证书 如果是在运营商处获得的证书,则不用这一步点击查看代码 mkdir /etc/nginx/ssl cat > /etc/nginx/ssl/nginx.cnf <<EOF [ req ] default_bits = 2048 distinguished_name = req_distinguished_name req_extensions = req_ext x509_extension…

(三)JS逆向——爬取易车网

爬取易车网的车辆配置信息 所以主要就是确定这几个是怎么生成的 搜索x-sign值的位置,打断点,找到构建x-sign的函数 注意,一定要看清是否是正确的url,x-timestamp明显是时间戳 进入这个函数 x-sign值,是对这个字符串做md5,这个字符串由三部分构成,参数、时间戳、和一个固…

.Net知识技能大全

.Net知识技能大全 更多请见https://www.dotnetshare.com C#常见运算符一元运算符(+、-、!、~、++、--) 算术运算符(*、/、%、+、 – ) 移位运算符(<< 、>> ) 关系和类型测试运算符(==、!=、<、>、<=、>=、is 和 as) 逻辑运算符(&、^ 和 |…

Hello World with solidity

1. Solidity 是什么? Solidity 是一种面向对象的、静态类型的编程语言,专为在以太坊上编写智能合约而创建。由于以太坊上的智能合约可以处理真实世界的资产(比如加密货币),所以Solidity的设计非常关注安全性。 以下是 Solidity 的一些主要特点:类型安全和静态类型:这可以…

如何从Salesforce顾问转型为解决方案架构师?

在充满活力的Salesforce咨询领域,许多专业人士都希望从顾问转型为解决方案架构师。这种转型不仅需要掌握新技能,还需要从根本上改变思维方式。关键在于摆脱顾问典型的以职能为中心的思维模式,拥抱更广阔、更具战略性的视角。 从“如何”到“为什么” 当我们开始问“为什么”…

Modbus转Profibus主站网关连接温控表通讯技术

Modbus转ProfibusDP主站网关(XD-MDPBM20)是实现不同通讯协议设备之间联系的重要组件。本文将介绍Modbus转ProfibusDP主站网关(XD-MDPBM20)连接温控表实现高效通讯,涉及设备准备、协议介绍、配置步骤、测试通讯及注意事项。此技术可帮助实时监测温度并调节控制,提高生产效…

加解密技术原理

加解密技术概览 加解密定义 加密:数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,通过这样的途径来达到保护数据不被非法人员窃取、阅读的目的。解密:数据解密的过程就是对密文使用相应的算法和密钥进行解…

Jmeter使用CLI模式进行负载测试的注意点

在我们打开Jmeter的时候,窗口会出现如下提示:这个提示的意思是, 不要使用 GUI 模式进行负载测试:GUI 模式主要用于创建和调试测试,而不是运行大规模的负载测试。 ​使用 CLI 模式进行负载测试:CLI 模式(以前称为 NON GUI 模式)更适合进行负载测试,因为它能够更高效地使…

Golang面试:泛型

Go语言在1.18版本中引入了泛型(Generics),这是Go语言发展中的一个重要里程碑。泛型允许你编写更通用和可复用的代码,而无需牺牲类型安全性。以下是对Go中泛型的详细介绍,包括其语法、使用场景和示例代码。 1. 泛型的基本概念 泛型允许你定义可以处理多种数据类型的函数和数…

【算法】KD-tree

1. 算法简介 KD-tree(K-Dimensional),是一种对k维空间中的实例点进行存储以便对其进行快速检索的树形数据结构。 主要应用于多维空间关键数据的搜索。 KD-tree 的本质是一棵平衡树,将空间内的区域划分为一个超长方体,然后存储为节点进行维护。 以下为一个 \(k=2\) 时的 KD…

性能测试:主流性能监控工具介绍

行业流行性能监控工具有哪些Linux 自带命令 Vmstat,Top 等 Nmon Collectd + InfluxDB + Grafana Prometheus + Grafana行业流行性能监控工具的介绍 Linux 自带命令 Vmstat,Top 等 vmstat 和 top 都是 Linux 系统自带的命令,提供了实时的监控信息,对于系统管理员和开发人员来…

BTC交易流程

交易流程 比特币的交易流程涉及多个步骤和参与方,包括发送方、接收方、矿工和比特币网络中的节点。以下是比特币交易的详细流程:创建交易:生成比特币地址:比特币地址是一个由公钥生成的字符串,用于接收比特币。每个用户在创建比特币钱包时,都会生成一对公钥和私钥。公钥通…

技术手段和测试流程,不是一回事

看到这样一个问题:造测试数据时,如果失败了怎么办,如何处理这种失败的情况?失败了需要停止测试活动吗? 很久没看到这么有意思的问题了,毕竟测试数据是很重要的测试活动开展资料,如果缺失或者不准确,会对测试结果造成极大的影响。那么该如何理解和解决上述的问题呢?我们…

PaddleNLP UIE -- 药品说明书信息抽取(名称、规格、用法、用量)

目录创建项目环境配置上传代码训练定制代码结构数据标注准备语料库数据标注导出数据数据转换doccanoLabel Studio模型微调模型评估定制模型一键预测效果 PaddleNLP UIE 实体关系抽取 -- 抽取药品说明书(名称、规格、用法、用量) 对于细分场景推荐使用轻定制功能(标注少量数据…