1670 打怪兽
lyk在玩一个叫做“打怪兽”的游戏。
游戏的规则是这样的。
lyk一开始会有一个初始的能量值。每次遇到一个怪兽,若lyk的能量值>=怪兽的能量值,那么怪兽将会被打败,lyk的能量值增加1,否则lyk死亡,游戏结束。
若怪兽全部打完,游戏也将会结束。
共有n个怪兽,由于lyk比较弱,它一开始只有0点能量值。
n个怪兽排列随机,也就是说共有n!种可能,lyk想知道结束时它能量值的期望。
由于小数点比较麻烦,所以你只需要输出期望*n!关于1000000007取模后的值就可以了!

 
例如有两个怪兽,能量值分别为{0,1},那么答案为2,因为游戏结束时有两种可能,lyk的能量值分别为0和2。期望为1,1*2!=2,所以答案为2。

Input
第一行一个数n(1<=n<=100000)。
接下来一行n个数ai表示怪兽的能量(0<=ai<n)。
Output
一行表示答案
Input示例
2
0 1
Output示例
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 打怪兽相关推荐

  1. 51 nod 1427 文明 (并查集 + 树的直径)

    1427 文明 题目来源: CodeForces 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 安德鲁在玩一个叫"文明"的游戏.大妈正在 ...

  2. 51 nod 1405 树的距离之和

    1405 树的距离之和 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 给定一棵无根树,假设它有n个节点,节点编号从1到n, 求任意两点之间的距离(最短路径)之和. ...

  3. 51 nod 1439 互质对(Moblus容斥)

    1439 互质对 题目来源: CodeForces 基准时间限制:2 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 有n个数字,a[1],a[2],-,a[n].有一个集合,刚开 ...

  4. 全民打怪兽全民战场恐惧流伙伴实测

    [文章来源 元芳体 更多资讯>>>点击进入] 各位小伙伴们,小编今天为大家带来的是全民打怪兽全民战场恐惧流实测效果解析,在狐狸肆虐.蕾娜不死的现今,似乎战场也被那些主流小伙伴所霸占, ...

  5. OC小游戏之英雄打怪兽

    编写了一个在Xcode控制台上运行的简单小游戏,本来打算写到100关(⊙o⊙)-后来发现没有好的idea,就先写了2关,目的在于练练手,理清类与类之间的关系.有好的想法和有空的话会慢慢写到100关.游 ...

  6. [STL乱搞]51 Nod——1573 美丽的集合

    [STL乱搞]51 Nod--1573 美丽的集合 题目梗概 在多重集之中,同一个元素可以出现多次. 我们现在有n个多重集合,第i个集合最开始都有一个元素ai(1≤i≤n). 定义多重集合的价值为子集 ...

  7. 基于JAVA的类与对象做出的英雄打怪兽程序

    一.英雄打怪兽 基于Java类与对象的调用而做出的程序. 二.实例代码 1.主函数 代码如下: menu(); 2.menu函数 代码如下: Scanner scanner = new Scanner ...

  8. c语言英雄打怪兽掉箭题目,荒野乱斗:“打怪兽”有诀窍,英雄选择尤其重要...

    原标题:荒野乱斗:"打怪兽"有诀窍,英雄选择尤其重要 荒野乱斗更新版本之后,有一个新的模式引起了三哥的注意.因为有"首领之战"的经验,三哥第一时间就尝试了这个新 ...

  9. Unity引擎Fps打怪兽小游戏

    自制了一款Unity的枪战打怪兽小游戏 游戏演示视频已上传至B站:https://www.bilibili.com/video/BV1wt4y187ic 一些截图展示: 可以找博主索要源码~

最新文章

  1. SmartDispatcher 类
  2. 使用Django和Python创建Json response
  3. kohana3 数据库模块配置
  4. 服务器网站显示多协议,解决高防IIS8服务器https协议多个同时访问的解决方法
  5. @NotBlank注解使用不生效的解决办法
  6. Nginx gzip参数详解及常见问题(已解决)
  7. tensorflow实现对彩色图像的均值滤波
  8. OpenGL学习笔记2 —— 画立方体
  9. Tesseract-OCR 字体库下载地址
  10. 思维导图—Git命令全集
  11. hpm1216nfh驱动程序_惠普m1216nfh
  12. 二极管双平衡混频器的原理[ZT]
  13. mysql用source恢复数据库_mysql source 还原数据库
  14. ebay 后台HTML有尺寸宽度要求吗,Ebay后台有哪些常用的操作页面?
  15. [淘宝客技术篇003]如何获取淘客私密优惠券链接
  16. linux下打印pdf文件很慢,打印机打印pdf文件特别慢怎么解决
  17. VBA---打开excel
  18. php initlize,PHP 反序列化漏洞入门学习笔记
  19. 如何利用编程思维,提高英语成绩?
  20. 经典的卷积网络架构(二)——GoogLeNet [inception v1] 详解

热门文章

  1. 计算机没有程序,计算机小知识:想尝试写程序却没有电脑?这个在线编辑器满足你...
  2. mybatis使用statement.getGenreatedKeys(); useGeneratedKeys=”true”;使用自增主键获取主键值策略和Oracle不支持自增,Oracle使用序列
  3. linux安装mysql不成功怎么处理_Linux上安装MySQL时出现不兼容的解决办法
  4. 电脑键盘中英文按键有哪些?有什么作用?
  5. 收集42款经典的Chrome 插件
  6. MySQL实用第三方客户端工具收集
  7. html的闪烁字,HTML最简单的文字闪烁代码
  8. 通过栈(Stack)实现对树的遍历
  9. python 爬虫-beautifulsoup4
  10. SpringBoot 热部署