[THUPC2021 初赛] 切切糕
个人思路:
从小往大切,感性理解一下。
由于每个人都足够聪明,博弈 dp 只有后效型而没有前效性,所以从固定的最终状态倒序往前 dp,得到初始状态的答案。
状态:\(dp_{i,j}\) 表示还剩 \(i\) 个切糕,对手还有 \(j\) 次选择权时对手最多的切糕。
因为选择权在对手,自己的切糕不是很好维护,维护对手的切糕也是一样的。
转移:\(dp_{i,j} = \max{dp_{i-1,j} + size_{big}, dp_{i-1,j-1} + size_{small}}\)。
显然,对手可以用或者不用选择权。如果用,拿走大块。不用,拿走小块。
每块的大小决定权在我们手里。显然,对手选和不选的收益和固定,我们希望这两个值中的较大值最小,那么我们切糕的时候就要让二者收益尽可能平均。
具体而言:
如果 \(dp_{i-1,j-1} > dp_{i-1,j}\),我们直接均分。
如果 \(dp_{i-1,j-1} + a_i < dp_{i-1,j}\),我们不切(即分为大小为 \(0\) 和 \(a_i\) 的两块)。
否则,一定存在切法使二者相等。
答案即为 \(\sum\limits_{i=1}^n a_i - dp_{n,m}\)。
[THUPC2021 初赛] 切切糕的更多相关文章
- Go语言--数组、切片、
3.1 数组--固定大小的连续空间 3.1.1 声明数组 写法 var 数组变量名 [元素数量]T 说明: 变量名就是使用时的变量 元素的数量可以是表达式,最后必须为整型数值 T 可是是任意基本类型, ...
- 2014蓝桥杯B组初赛试题《切面条》
题目描述: 一根高筋拉面,中间切一刀,可以得到2根面条. 如果先对折1次,中间切一刀,可以得到3根面条. 如果连续对折2次,中间切一刀,可以得到5根面条. 那么,连续对折10次 ...
- BZOJ 3144: [Hnoi2013]切糕
3144: [Hnoi2013]切糕 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1495 Solved: 819[Submit][Status] ...
- Bzoj3144 [Hnoi2013]切糕
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1494 Solved: 818 Description Input 第一行是三个正整数P,Q,R,表 ...
- 【BZOJ-3144】切糕 最小割-最大流
3144: [Hnoi2013]切糕 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1261 Solved: 700[Submit][Status] ...
- 3144:[HNOI2013]切糕 - BZOJ
题目描述 Description 经过千辛万苦小 A 得到了一块切糕,切糕的形状是长方体,小 A 打算拦腰将切糕切成两半分给小 B.出于美观考虑,小 A 希望切面能尽量光滑且和谐.于是她找到你,希望你 ...
- bzoj 3144: [Hnoi2013]切糕 最小割
3144: [Hnoi2013]切糕 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 681 Solved: 375[Submit][Status] ...
- 图论(网络流):[HNOI 2013]切糕
[HNOI 2013]切糕 第三题:切糕(程序文件名:cake.exe)100 分,运行时限:5s 经过千辛万苦小A 得到了一块切糕,切糕的形状是长方体,小A 打算拦腰将切糕切成两半分给小B.出于美观 ...
- 切糕[HNOI2013]
经过千辛万苦小A 得到了一块切糕,切糕的形状是长方体,小A 打算拦腰将切糕切成两半分给小B.出于美观考虑,小A 希望切面能尽量光滑且和谐.于是她找到你,希望你能帮她找出最好的切割方案. 出于简便考虑, ...
- BZOJ_3144_[Hnoi2013]切糕_最小割
BZOJ_3144_[Hnoi2013]切糕_最小割 Description Input 第一行是三个正整数P,Q,R,表示切糕的长P. 宽Q.高R.第二行有一个非负整数D,表示光滑性要求.接下来是R ...
随机推荐
- react项目打包后点击index.html页面出现空白
当本地打包后的文件,直接通过文件路径访问,出现空白或者,提示打包后的build内的js,css文件路径错误,有以下两种方式 方式一(无网络限制的情况下使用): 1.全局安装serve启动本地服务: n ...
- vite 运行或打包出现内存溢出的解决方案
在使用vite运行或打包时出现了内存耗尽的报错 vite VUE npm run build 报错 npm ERR! code ELIFECYCLE npm ERR! errno 134 内存溢出 n ...
- Flask + PyInstaller = 客户端
Flask + PyInstaller = 客户端 有些特殊情况需要开发客户端,Python有几个常用的几个GUI框架,如 PyQt.wxPython等 但使用这些GUI框架往往界面比较丑,而且GUI ...
- 制作 macOS U盘USB启动安装盘方法
制作macOS U盘 1,首先你得有macOS的dmg文件,关于如何取得完整版,我在另一篇 Mac 如何用python下载Mac OS ,大家可以按自所需下载. 2,准备大于8GB U盘.打开 ...
- Mac的Dock栏是什么?Mac Dock栏使用技巧
Dock栏就是Mac电脑屏幕下方的那一排快捷键,我们可以把自己常用的程序放到Dock上面,这样可以帮助我们快速的打开自己想要打开的文件和程序,默认情况下,OS X 的 Dock 置于屏幕的底部.当 ...
- Linux-jar操作脚本
service.sh 使用说明: ./service.sh start ./service.sh stop #!/bin/bash #这里可替换为你自己的执行程序,其他代码无需更改 APP_NAME= ...
- my.ini
[client] #客户端设置,即客户端默认的连接参数 # socket = /data/mysqldata/3306/mysql.sock #用于本地连接的socket套接字 # 默认连接端口 po ...
- react native 状态栏和安全区域的使用
1. 状态栏组件,react native文档提供了说明.我需要的是设置透明效果,如下图. 代码如下 <StatusBar translucent={true} backgroundColor ...
- css animation 复刻
今天做了一个七巧板的小页面,发现对于css动画一些内容又有了新的认识,所以以下准备复习一遍 首先一共有以下属性 @keyframes 如果您在 @keyframes 规则中指定了 CSS 样式,动画将 ...
- Win10用户目录迁移后变成英文的修改办法
比如我的目录从C:\Users\Lemon修改到D:\Users\Lemon后: 1.首先可以将Windows文件管理器选项中的"隐藏受保护的操作系统文件"去掉,就可以看到每个目录 ...