【Codeforces 464D】World of Darkraft - 2
Codeforces 464 D
首先我们知道这K个装备是互不干扰的,就是说如果一个装备升级了或者卖掉了,不会对其它装备的挣到的钱产生任何影响。所以我们就考虑单独处理某一个装备挣到的钱。
那么就设\(dp[i\)][j]表示还剩下i个怪兽没有打,这个装备现在是j级别的期望挣到的钱数。
答案就是\(dp[n][1]\)。下面考虑转移。
首先如果这一轮拿到的装备就不是这一种,即有\((k-1)/k\)的概率答案是\(dp[i-1][j]\)。
否则枚举这一轮拿到的装备是级别\(l=1..j+1\),有\(1/k/(j+1)\)的概率答案是\(dp[i-1][max(j,l)]+min(j,l)\)。
但是这个转移是\(O(n)\)的,状态数是\(O(n^2)\)的,就非常不好。
下面先考虑优化转移。看第二种情况式子的形式,发现就是一个1加到j的和。
所以现在的转移方程:
\(dp[i][j]=(k-1)/k*dp[i-1][j]+1/k/(j+1)*(dp[i-1][j]*j+l)+1/k/(j+1)*(dp[i-1][j+1]+j)\)。
之所以需要将第二种情况拆分成两部分,是因为\(l=1..j\)和\(l=j+1\)是不一样的。
然后再来考虑优化状态。
仔细思考就会发现如果j很大,那么\(dp[i\)][j]对答案的贡献是微乎其微的,
因为每次都要除以k再除以j+1,那样是指数级的。
所以我们就可以把j比较大的一些状态给干掉。
经过试验发现我们把前1000个留下不会tle(雾),
所以我就只转移了\(dp[i][1..1000]\),再加上滚动数组优化空间即可AC。
【Codeforces 464D】World of Darkraft - 2的更多相关文章
- 【codeforces 415D】Mashmokh and ACM(普通dp)
[codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=200 ...
- 【codeforces 707E】Garlands
[题目链接]:http://codeforces.com/contest/707/problem/E [题意] 给你一个n*m的方阵; 里面有k个联通块; 这k个联通块,每个连通块里面都是灯; 给你q ...
- 【codeforces 707C】Pythagorean Triples
[题目链接]:http://codeforces.com/contest/707/problem/C [题意] 给你一个数字n; 问你这个数字是不是某个三角形的一条边; 如果是让你输出另外两条边的大小 ...
- 【codeforces 709D】Recover the String
[题目链接]:http://codeforces.com/problemset/problem/709/D [题意] 给你一个序列; 给出01子列和10子列和00子列以及11子列的个数; 然后让你输出 ...
- 【codeforces 709B】Checkpoints
[题目链接]:http://codeforces.com/contest/709/problem/B [题意] 让你从起点开始走过n-1个点(至少n-1个) 问你最少走多远; [题解] 肯定不多走啊; ...
- 【codeforces 709C】Letters Cyclic Shift
[题目链接]:http://codeforces.com/contest/709/problem/C [题意] 让你改变一个字符串的子集(连续的一段); ->这一段的每个字符的字母都变成之前的一 ...
- 【Codeforces 429D】 Tricky Function
[题目链接] http://codeforces.com/problemset/problem/429/D [算法] 令Si = A1 + A2 + ... + Ai(A的前缀和) 则g(i,j) = ...
- 【Codeforces 670C】 Cinema
[题目链接] http://codeforces.com/contest/670/problem/C [算法] 离散化 [代码] #include<bits/stdc++.h> using ...
- 【codeforces 515D】Drazil and Tiles
[题目链接]:http://codeforces.com/contest/515/problem/D [题意] 给你一个n*m的格子; 然后让你用1*2的长方形去填格子的空缺; 如果有填满的方案且方案 ...
随机推荐
- 【23】备忘录模式(Memento Pattern)
一.引言 在上一篇博文分享了访问者模式,访问者模式的实现是把作用于某种数据结构上的操作封装到访问者中,使得操作和数据结构隔离.而今天要介绍的备忘者模式与命令模式有点相似,不同的是,命令模式保存的是发起 ...
- 微信小程序开发BUG经验总结
摘要: 常见的微信小程序BUG! 小程序开发越来越热,开发中遇到各种各样的bug,在此总结了一些比较容易掉进去的坑分享给大家. 1. new Date跨平台兼容性问题 在Andriod使用new Da ...
- Python十讲
第一讲:从零开始学Python 第二讲:变量和基础数据类型 第三讲:条件分支以及循环 第四讲:列表与元组 第五讲:字典 第六讲:函数 第七讲:类 第八讲:标准库 第九讲:异常 第十讲:文件处理
- web新手——新闻列表这样写不容易出错
1.先写结构 a.如果列表没有时间 结构为:<li><a>新闻内容</a></li> b.如果列表有时间 结构为:<li>&l ...
- 【读书笔记】iOS-微定位技术
在大型商场,医院或是大楼里,你是否曾经有过找不到想去的地方的经历呢?这种情况下采用传统的定位方法就有些力不从心了.首先这些地方不能采用GPS定们,而Wifi和蜂窝式移动电话基站定位误差比较大.这种情况 ...
- ComponetOne 2014 v3版本正式发布
2014年11月18日---ComponentOne Studio Enterprise 2014 v3版全球正式发布.ComponentOne Studio Enterprise是世界知名的Micr ...
- Java并发编程(四)synchronized
一.synchronized同步方法或者同步块 在了解synchronized关键字的使用方法之前,我们先来看一个概念:互斥锁,顾名思义:能到达到互斥访问目的的锁. 举个简单的例子:如果对临界资源加上 ...
- 3.网络编程-tcp的服务器简单实现
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/1/13 22:03 # @Author : ChenAdong # @ema ...
- python第八十四天---十五周作业
后台管理页面: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- @addTagHelper的使用
@addTagHelper用来在cshtml页面加入自定义的Tag @addTagHelper “[the full type name of taghelper,] the assembly nam ...