【CSP膜你赛】ATM
题目描述
小沈阳在小品里说过:“人生最痛苦的事情是人死了,钱还没花掉”。 于是小宋(80 岁)决定要将所有的储蓄从 ATM 机中取出花光。 小宋忘记 了她有多少存款(银行卡密码她是记得的 2333),这个奇怪的ATM不支持查询 存款余额功能。小宋知道她存款的唯一信息是存款上限是K元,这意味着小宋的存款 x 是 0 到 K 之间的随机整数(包括 K)。 每次小宋都可以尝试从 ATM 中拿出一些钱。 如果她要取的 y 元钱不大于 她的存款,ATM 将立即给小宋y元。 但如果她的存款小于y,小宋将收到ATM的警告。如果小宋被警告超过w次,那么她将被警方带走,作为小偷。 小宋希望取钱次数期望最小。 由于小宋聪明,她总是采取最好的策略。 请计算小宋将所有储蓄从自动取款机中取出期望次数最小值是多少,并不得被警方带走。
输入格式
每个测试点包含多组测试数据(最多 10 组)每组测试数据包含两个整数 K,和 W 1≤K,W≤2000
输出格式
对于每组测试数据输出取钱次数最小的期望值,舍入到小数点后 6 位。
输入样例
1 1
4 2
20 3
输出样例
1.000000
2.400000
4.523810
分析
我以为所谓的最优策略仅仅是二分,没想到这个80岁的老奶奶不仅会二分,还会期望dp
本题的最好策略的意思就是每次的选择期望次数最小的方案进行决策(语文不好的悲哀
取完不单单是指他存折里没钱了,小宋需要得到确定的信息告诉他取完了。
我们是已知上限$K$元,最多可以被警告$W$次(反正只有这两个信息)
发现每次取钱都可以确定新的上限
考虑末状态,根据我们对"取完"的理解
末状态就是已知上限0元,最多可以被警告$w$次($0 \leq w \leq W$)
这样就可以设$dp[i][j]$表示已知上限i元,最多还可以被警告j次的期望次数
那么就有$dp[0][j]=0(0 \leq j \leq W)$
枚举每次取的个数v,就可以转移了。
$$dp[i][j]=min(\frac {v} {i+1} dp[v-1][j-1]+\frac {i+1-v} {i+1}dp[i-v][j]+1)$$
然后可以突然发现时间复杂度为$O(N^2 W)$。
但是,正如之前所说
这个80岁的老奶奶是会二分答案的!
所以,$W$最大取到11就足够了($2^{11}=2048>2000$)
Code
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m;double f[][];
int main()
{
for(int i=;i<=;i++)for(int j=;j<=;j++)f[i][j]=1e10;
for(int i=;i<=;i++)for(int j=;j<=;j++)for(int v=;v<=i;v++)
f[i][j]=min(f[i][j],(v)/1.0/(i+)*f[v-][j-]+(i+-v)/1.0/(i+)*f[i-v][j]+1.0);
while(scanf("%d%d",&n,&m)==)
{
m=min(,m);
printf("%.6lf\n",f[n][m]);
}
}
【CSP膜你赛】ATM的更多相关文章
- 【CSP膜你赛】大逃亡
题目描述 魔王撒旦为了建立魔物的乐土,率领亚多拉玛雷克.艾谢尔.路西菲尔.以 及马纳果达这四位恶魔大元帅进攻人类世界.然而此时手持圣剑的勇者艾米莉亚出现了. 战败的魔王逃跑时穿越到了地球,以真奥贞夫 ...
- 【CSP膜你赛】柠檬的密码(manacher 二分 单调性 st表)
题目描述 Lemon觉得他需要一个复杂的密码来保证他的帐号的安全.他经过多日思考,决定使用一个长度为奇数的回文串来作为他的密码. 但是这个回文串太长了,Lemon记不住,于是Lemon决定把它记在本 ...
- cdcqの省选膜你赛
cdcqの省选膜你赛 比赛当天因为在杠hnoi2016的大数据结构没有参加,今天补了一下.挺好玩的虽然不看一句话题意的话真的卡读题 此生无悔入东方,来世愿生幻想乡 2651. 新史「新幻想史 -现代史 ...
- 【良心noip膜你赛】总结
一点都不良心!!!! AK 快乐爆零快乐!!! 1. A. value512mb 1s规定一个区间的价值为这个区间中所有数 and 起来的值与这个区间所有数 or 起来的值的乘积.例如 3 个数 2, ...
- EZ 2018 1 21 2018noip第五次膜你赛
这次分数普遍偏高,而且yu'ben'ao又AK了! 但是最后一题莫名爆0让我很感伤啊(搓了1个多小时的20分暴力)! 难度偏低,主要是T2没剪枝,炸了3个点. T1 这种SB题恐怕是千年难遇了,PJ- ...
- EZ 2018 01 14 2018noip第四次膜你赛
这次惨烈的炸了个精光(只有20),然后对我的OI想法造成了巨大的转折. (以上有点作,其实我只是再也不用vector存图了而已(用邻接表)) 难度很不均匀,而且题型很狗(还有结论题???) T1 坑人 ...
- EZ 2017 12 30 2018noip第二次膜你赛
去年的比赛了,然而今天才改好. 总体难度适中,有大佬AK. 主要是自己SB第二题没想出来,然后又是可怜的100来分. T1 一道二分+数学的题目. 我们可以二分叫的次数,然后用公式(等差数列,公差都是 ...
- EZ 2017 12 17初二初三第一次膜你赛
以后平时练习还是写一写吧. (题目搞来搞去太烦了,直接PDF存起来) T1 水题(???),主要是数据水,正解是设一个阙值,然而根本没人打.(暴力出奇迹) CODE #include<cstdi ...
- 【20151105noip膜你赛】bzoj3652 bzoj3653
题目仿佛在讽刺我... 第一题: 题解: 考虑枚举区间右端点,维护所以左到当前的 and 和 or .注意 and 每次变化至少有一个二进制位从1变 0,or 每次至少有一个位从0变 1,所以最多有l ...
随机推荐
- Ubuntu 18.04 RTX2080(ti) + tensorflow-gpu + cuda9.0 + gcc5 兼容性问题解决
0.下载display driver.cuda和cudnn RTX2080 Display Driver cuda cudnn 1. 禁止系统默认的显卡驱动 打开系统黑名单 sudo gedit /e ...
- witchcase
#include "stdafx.h" #include using namespace std; int _tmain(int argc, _TCHAR* argv[]) { i ...
- 解决Spring Boot 从1.x升级到 2.x 后 单点登陆(SSO)问题
解决Spring Boot 从1.x升级到 2.x 后 单点登陆(SSO)问题 在学习Spring Cloud 时,遇到了授权服务oauth 相关内容时,总是一知半解,因此决定先把Spring S ...
- Java自学-接口与继承 多态
Java的多态 操作符的多态 +可以作为算数运算,也可以作为字符串连接 类的多态 父类引用指向子类对象 示例 1 : 操作符的多态 同一个操作符在不同情境下,具备不同的作用 如果+号两侧都是整型,那么 ...
- Django---图书管理系统,一对多(外键设置),__str__和__repr__的区别,进阶版项目说明简介.模版语言if ... else ..endif
Django---图书管理系统,一对多(外键设置),__str__和__repr__的区别,进阶版项目说明简介.模版语言if ... else ..endif 一丶__str__ 和 __repr__ ...
- 记一下python的method resolution order(MRO)机制
一直用python都是拿着cookbook和库的文档直接撸,很少会把细节过得那么彻底,遇到问题才会翻文档. 今天看到这个例子的时候我突然触及了我的盲区,我不确定这样的继承层级调用super.foo() ...
- 【转载】C#使用InsertRange方法往ArrayList集合指定位置插入另一个集合
在C#的编程开发中,ArrayList集合是一个常用的非泛型类集合,ArrayList集合可存储多种数据类型的对象.在实际的开发过程中,我们可以使用InsertRange方法在ArrayList集合指 ...
- JavaScript API 与 DOM
一.API 1.API 的概念 API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供引用程序与开发人员基于某软件或硬件得以访问 ...
- Win10系统配置Java环境变量
Win10系统配置Java环境变量 电脑重新装了个系统,又要重新配置JDK环境变量,这里做个记录. 安装JDK后在cmd里运行java会显示找不到指令,这种就是需要添加java的环境变量. 这里我记录 ...
- PostgreSQL 基本数据类型及常用SQL 函数操作
数据类型 名字 别名 描述 bigint int8 有符号的8字节整数 bigserial serial8 自动增长的8字节整数 bit [ (n) ] 定长位串 bit varying [ (n ...