51 Nod 1670 打怪兽

                              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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/281991.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QQ协议调试器 QQDebugger

QQ协议老变&#xff0c;为了分析协议&#xff0c;单用抓包工具还是不够的&#xff0c;还是得需要很好的调试工具。在网上找了几个调试工具&#xff0c;易用性均欠佳&#xff0c;不得已自己开发了一个 QQDebugger&#xff0c;不敢专美&#xff0c;特意发布出来。QQDebugger 在功…

PostgreSQL 10.1 手册_部分 II. SQL 语言_第 5 章 数据定义_5.5. 修改表

5.5. 修改表 5.5.1. 增加列5.5.2. 移除列5.5.3. 增加约束5.5.4. 移除约束5.5.5. 更改列的默认值5.5.6. 修改列的数据类型5.5.7. 重命名列5.5.8. 重命名表当我们已经创建了一个表并意识到犯了一个错误或者应用需求发生改变时&#xff0c;我们可以移除表并重新创建它。但如果表中…

Uptime-Kuma 一个轻量的开源监控工具

点击蓝字 关注我们你好&#xff0c;这里是 Dotnet 工具箱&#xff0c;定期分享 Dotnet 有趣&#xff0c;有用的工具&#xff0c;不要忘记关注。今天给大家介绍一个开源的监控工具 Uptime Kuma, 主要用来监控 Web 以及网络, 和 Prometheus 相比, 它是轻量的, Uptime Kuma 是基于…

怎么查看mysql正在运行的语句_MySQL如何查询当前正在运行的SQL语句

通过status命令&#xff0c;查看Slow queries这一项&#xff0c;如果值长时间>0,说明有查询执行时间过长以下为引用的内容&#xff1a;mysql> status;--------------mysql Ver 11.18 Distrib 3.23.58, for redhat-linux-gnu (i386)Connection id: 53Current database: (n…

SpringBoot实战之SpringBoot自动配置原理

SpringBoot 自动配置主要通过 EnableAutoConfiguration, Conditional, EnableConfigurationProperties 或者 ConfigurationProperties 等几个注解来进行自动配置完成的。EnableAutoConfiguration 开启自动配置&#xff0c;主要作用就是调用 Spring-Core 包里的 loadFactoryName…

Install OpenCV-Python in Ubuntu

之前安装python版opencv&#xff0c;需要下载whl文件&#xff0c;进行安装&#xff0c;这是在window环境下的&#xff1a;安装opencv_python,下载whl包安装系统python下的opencv 今天发现一个简单的方法。Install OpenCV-Python in UbuntuInstall package python-opencv with f…

如何健康地跑步?

最近某司高管跑步 28 公里后猝死&#xff0c;被各大媒体报道&#xff0c;每次这种悲剧发生&#xff0c;而且还跟跑步扯上关系&#xff0c;总是让人心痛。通过报道了解到&#xff0c;这位高管酷爱跑马拉松&#xff0c;身体素质和运动能力肯定是强于普通人的&#xff0c;但还是遭…

项目共享协调机制

API&#xff0c;协调前端与后端开发的连接点。 面临几个问题 1. API更新不及时&#xff0c;导致前端开发的接口没有及时更新而出现各种问题。 2. 文档描述得不准确 3. 没有统一的标准。 我们可以使用swagger editor&#xff0c; swagger ui。第一是编辑器&#xff0c;第二个是展…

vs2008C1902程序数据库管理不匹配

大清早打开vs2008,出现这么诡异的错&#xff0c; 删了一个dll的就好了。如图

mysql user表 空_mysql 忘记密码,重置密码,mysql.user表为空的解决办法

一、用户表有用户&#xff0c;直接修改密码ERROR 1045 (28000): Access denied for user rootlocalhost (using password: YES)修改mysql配置文件my.cnf&#xff1a;vim /etc/my.cnf在[mysqld]中添加skip-grant-tables重启mysql服务&#xff0c;用空密码直接登录&#xff0c;查…

链式封装与调用

var CheckObject function(){}; CheckObject.prototype function(){checkName:function(){// codereturn this;},checkEmail:function(){// code return this;},checkPassword:function(){// codereturn this;} } //使用 var Check new CheckObject() Check.checkName().che…

全新升级的AOP框架Dora.Interception[3]: 基于特性标注的拦截器注册方式

在Dora.Interception中按照约定方式定义的拦截器可以采用多种方式注册到目标方法上。本篇文章介绍最常用的基于“特性标注”的拦截器注册方式&#xff0c;下一篇会介绍另一种基于&#xff08;Lambda&#xff09;表达式的注册方式&#xff1a;全新升级的AOP框架Dora.Interceptio…

在惨遭勒索病毒攻击之后,微软呼吁重新制定“数字日内瓦公约”

基于美国安全局泄露文档开发的病毒程序成为上周的主要新闻&#xff0c;该病毒导致全世界大量的Windows电脑瘫痪。WannaCry勒索病毒在150个国家有20万个受害者&#xff0c;包括英国的医院、西班牙的基础设施部门和俄罗斯的内政部。Renault在受到攻击之后关闭了几家在法国境内的工…

【代码审计】PHP代码审计---基础记录

PHP伪协议 PHP伪协议事实上是其支持的协议与封装协议&#xff0c;支持的种类有以下12种。 * file:// — 访问本地文件系统 * http:// — 访问 HTTP(s) 网址 * ftp:// — 访问 FTP(s) URLs * php:// — 访问各个输入/输出流&#xff08;I/O streams&#xff09; * zlib:// — 压…

全新升级的AOP框架Dora.Interception[4]: 基于表达式的拦截器注册

基于特性标注的拦截器注册方式仅限于将拦截器应用到自己定义的类型上&#xff0c;对于第三方提供的类型就无能为力了。对于Dora.Interception来说&#xff0c;拦截器注册本质上建立拦截器与一个或者多个目标方法之间的映射&#xff0c;所以最笨的方式就是利用反射的方式得到表示…

mysql8.0.12插件_MySQL8.0.12 安装及配置

MySQL8.0.12 安装及配置发布时间&#xff1a;2018-08-07 10:39,浏览次数&#xff1a;274, 标签&#xff1a;MySQL一.安装1.从网上下载MySQL8.0.12版本&#xff0c;下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/2. 下载完成后解压我解压的路径是&#xff1a;D:\J…

python模块之hashlib

hashlib模块实现了多种安全哈希和信息摘要算法的通用接口&#xff0c;包括FIPS中定义的SHA1, SHA224, SHA256, SHA384, SHA512以及RFC 1321中定义的MD5 注意点&#xff1a;1. adler32及crc32哈希由zlib模块提供2. 某些算法已知存在哈希碰撞弱点 哈希算法 每个hash算法都有一个同…

记一次阿里电面经历

昨天下午&#xff08;3/19&#xff09;三点多钟&#xff0c;接到了一个杭州的电话&#xff0c;是阿里的。问我是否方便聊聊。我说我在上课&#xff0c;四点下课。然后他就四点多钟的时候又打了一次过来。项目经历上来就问我有无大型项目的经历。不好意思&#xff0c;我说无。。…

C语言程序设计第三次作业

&#xff08;一&#xff09;改错题 计算f(x)的值&#xff1a;输入实数x&#xff0c;计算并输出下列分段函数f(x)的值&#xff0c;输出时保留1位小数。 输入输出样例1&#xff1a;   Enterr x: 10.0   f(10.0) 0.1 输入输出样例2&#xff1a;   Enter x: 234   f(234.0…

mysql数据库项目化教程郑小蓉_MySQL数据库项目化教程(高等职业教育“十三五”规划教材(软件技术专业))...

《MySQL数据库项目化教程/高等职业教育十三五规划教材(软件技术专业)》是一本介绍MySQL数据库基础知识的入门教材&#xff0c;采用项目驱动方式循序渐进地介绍MySQL各个模块的知识。主要内容包括&#xff1a;Windows下MySQL的安装&#xff0c;MySQL服务的启动与停止&#xff0c…