51 Nod 1670 打怪兽
游戏的规则是这样的。
lyk一开始会有一个初始的能量值。每次遇到一个怪兽,若lyk的能量值>=怪兽的能量值,那么怪兽将会被打败,lyk的能量值增加1,否则lyk死亡,游戏结束。
若怪兽全部打完,游戏也将会结束。
共有n个怪兽,由于lyk比较弱,它一开始只有0点能量值。
n个怪兽排列随机,也就是说共有n!种可能,lyk想知道结束时它能量值的期望。
由于小数点比较麻烦,所以你只需要输出期望*n!关于1000000007取模后的值就可以了!
第一行一个数n(1<=n<=100000)。 接下来一行n个数ai表示怪兽的能量(0<=ai<n)。
一行表示答案
2 0 1
2 思路: 每轮打败怪兽后 lyk的能量值加一 所以 我们可以看出来 如果lyk在第i轮 打败一个怪兽 那么在第i+1轮也一定可以打败这个怪兽 我们设 dp[i] 表示 lyk活到第 i 轮的概率 这时候lyk的能量 必然为i 显然 第 i 轮 lyk一定存活 所以 dp[0] = N! %Mod 假设 我们已知 dp[i] 看一下怎么表示第 i+1轮的概率 x 表示 有多少怪兽的能量小于等于 i+1 到了 第 i+1 轮 只剩 (x-(i+1)+1) 只怪兽可以打 总的怪兽还剩 (n-(i+1)+1) 只 第i+1轮存活的概率记为 (x-(i+1)+1)/(n-(i+1)+1) 那么到第 i+1 轮仍然存活的概率为 dp[i] *(x-(i+1)+1)/(n-(i+1)+1) 除法用逆元来计算即可
1 #include<cstdio> 2 #include<vector> 3 #include<cstring> 4 #include<iostream> 5 #include<algorithm> 6 7 #define MAXN 50005 8 9 #define Mod 1000000007 10 11 using namespace std; 12 13 typedef long long LL; 14 15 LL num[100005],dp[100005]; 16 17 LL Fast_Pow(LL a) { 18 LL ret = 1, b = Mod - 2; 19 while(b) { 20 if (b & 1) ret = ( ret * a ) % Mod; 21 a = ( a * a ) % Mod, b >>= 1; 22 } 23 return ret; 24 } 25 26 int main(int argc,char *argv[]) { 27 int n; scanf("%d",&n); 28 for(int i=0; i<n; ++i) scanf("%lld",num + i); 29 30 sort(num,num + n); 31 dp[0] = 1; 32 for(int i=2; i<=n; ++i) dp[0] = (dp[0] * i) % Mod; 33 34 int j = 0; 35 for(int i=1; i<=n; ++i) { 36 for(; i-1>=num[j] && j<n; ++j); 37 dp[i] = dp[i-1] * (j - i + 1) % Mod * Fast_Pow((LL)n - i + 1) % Mod; 38 } 39 LL Ans = 0; 40 for(int i=2; i<=n; ++i) 41 Ans += (dp[i-1] - dp[i] + Mod) % Mod * ( i - 1 )% Mod; 42 Ans = (Ans + dp[n] * n % Mod ) % Mod; 43 printf("%lld\n",Ans); 44 return 0; 45 }
代码
转载于:https://www.cnblogs.com/whistle13326/p/7739636.html
51 Nod 1670 打怪兽相关推荐
- 51 nod 1427 文明 (并查集 + 树的直径)
1427 文明 题目来源: CodeForces 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 安德鲁在玩一个叫"文明"的游戏.大妈正在 ...
- 51 nod 1405 树的距离之和
1405 树的距离之和 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 给定一棵无根树,假设它有n个节点,节点编号从1到n, 求任意两点之间的距离(最短路径)之和. ...
- 51 nod 1439 互质对(Moblus容斥)
1439 互质对 题目来源: CodeForces 基准时间限制:2 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 有n个数字,a[1],a[2],-,a[n].有一个集合,刚开 ...
- 全民打怪兽全民战场恐惧流伙伴实测
[文章来源 元芳体 更多资讯>>>点击进入] 各位小伙伴们,小编今天为大家带来的是全民打怪兽全民战场恐惧流实测效果解析,在狐狸肆虐.蕾娜不死的现今,似乎战场也被那些主流小伙伴所霸占, ...
- OC小游戏之英雄打怪兽
编写了一个在Xcode控制台上运行的简单小游戏,本来打算写到100关(⊙o⊙)-后来发现没有好的idea,就先写了2关,目的在于练练手,理清类与类之间的关系.有好的想法和有空的话会慢慢写到100关.游 ...
- [STL乱搞]51 Nod——1573 美丽的集合
[STL乱搞]51 Nod--1573 美丽的集合 题目梗概 在多重集之中,同一个元素可以出现多次. 我们现在有n个多重集合,第i个集合最开始都有一个元素ai(1≤i≤n). 定义多重集合的价值为子集 ...
- 基于JAVA的类与对象做出的英雄打怪兽程序
一.英雄打怪兽 基于Java类与对象的调用而做出的程序. 二.实例代码 1.主函数 代码如下: menu(); 2.menu函数 代码如下: Scanner scanner = new Scanner ...
- c语言英雄打怪兽掉箭题目,荒野乱斗:“打怪兽”有诀窍,英雄选择尤其重要...
原标题:荒野乱斗:"打怪兽"有诀窍,英雄选择尤其重要 荒野乱斗更新版本之后,有一个新的模式引起了三哥的注意.因为有"首领之战"的经验,三哥第一时间就尝试了这个新 ...
- Unity引擎Fps打怪兽小游戏
自制了一款Unity的枪战打怪兽小游戏 游戏演示视频已上传至B站:https://www.bilibili.com/video/BV1wt4y187ic 一些截图展示: 可以找博主索要源码~
最新文章
- SmartDispatcher 类
- 使用Django和Python创建Json response
- kohana3 数据库模块配置
- 服务器网站显示多协议,解决高防IIS8服务器https协议多个同时访问的解决方法
- @NotBlank注解使用不生效的解决办法
- Nginx gzip参数详解及常见问题(已解决)
- tensorflow实现对彩色图像的均值滤波
- OpenGL学习笔记2 —— 画立方体
- Tesseract-OCR 字体库下载地址
- 思维导图—Git命令全集
- hpm1216nfh驱动程序_惠普m1216nfh
- 二极管双平衡混频器的原理[ZT]
- mysql用source恢复数据库_mysql source 还原数据库
- ebay 后台HTML有尺寸宽度要求吗,Ebay后台有哪些常用的操作页面?
- [淘宝客技术篇003]如何获取淘客私密优惠券链接
- linux下打印pdf文件很慢,打印机打印pdf文件特别慢怎么解决
- VBA---打开excel
- php initlize,PHP 反序列化漏洞入门学习笔记
- 如何利用编程思维,提高英语成绩?
- 经典的卷积网络架构(二)——GoogLeNet [inception v1] 详解
热门文章
- 计算机没有程序,计算机小知识:想尝试写程序却没有电脑?这个在线编辑器满足你...
- mybatis使用statement.getGenreatedKeys(); useGeneratedKeys=”true”;使用自增主键获取主键值策略和Oracle不支持自增,Oracle使用序列
- linux安装mysql不成功怎么处理_Linux上安装MySQL时出现不兼容的解决办法
- 电脑键盘中英文按键有哪些?有什么作用?
- 收集42款经典的Chrome 插件
- MySQL实用第三方客户端工具收集
- html的闪烁字,HTML最简单的文字闪烁代码
- 通过栈(Stack)实现对树的遍历
- python 爬虫-beautifulsoup4
- SpringBoot 热部署