UPC Contest RankList – 2019年第二阶段我要变强个人训练赛第十六场
E: 飞碟解除器
•题目描述
wjyyy在玩跑跑卡丁车的时候,获得了一个飞碟解除器,这样他就可以免受飞碟的减速干扰了。
飞碟解除器每秒末都会攻击一次飞碟,但每次只有p/q的概率成功攻击飞碟。当飞碟被成功攻击时,减速状态解除。
如果攻击失败,飞碟会使wjyyy的平均速度变为前一秒的1/k倍。
wjyyy一开始以v m/s的速度行驶,问在减速状态解除时,他期望的行驶距离对998244353取模的结果。输入
输入共一行,共4个非负整数k,p,q,v。其中gcd(p,q)=1。输出
输出共一行,表示wjyyy的期望行走距离对998244353取模的结果。样例输入
2 2 3 9样例输出
119789331提示
对于100%的数据,gcd(p,q)=1,1≤k≤998244352,1≤p≤q≤998244352,0≤v≤998244352
提示wjyyy在第一秒走过的距离是v m,如果他此时没有攻击成功,则在第二秒后走过的距离是2×v/k m。
以此类推。
•思路
假设在每秒末飞碟解除
总距离相加得
显而易见(大雾)是一个差比数列前n项和
然后我们就开始高三数学每套试卷都有的错位相减
由于n是趋近于正无穷的所有最后一项
的极限为0
所以Sn的极限与等比数列前n项和有关
所以Sn极限为
•代码
F: gu集合
•题目描述
Dew有一个长为n的集合S。有一天,他想选k个不同的元素出来做游戏。
但是Dew只有两只手,所以他只能先选出k个元素,然后拿出这k个元素中最小的两个。
事实上,Dew更喜欢这k个元素中第二小的那个,因此他会记一个集合T的第二小值为g(T)。此时Dew可以获得c^g(T)!的得分,其中c是一个常数,!表示阶乘。
现在你需要求出Dew从集合S中选出k个元素后,他的期望得分对998244353取模的结果。输入
输入共两行。
第一行三个正整数n,k,c,分别表示集合S的大小,Dew要选的元素个数,和常数c。
第二行n个互不相同的正整数ai,表示集合S中的元素。保证。
输出
输出一行一个非负整数,表示 Dew 的期望得分对998244353取模的结果。样例输入
5 3 2
1 2 3 4 5样例输出
803628674
•思路
有n个数a1,a2,a3,a4,....(升序排列),从中选出k个,
总的情况数是C(n,k)种,
其中a2是第二小数的有C(n-2,k-2)个,a2是第二小,肯定得选a1,a2,再从剩下的(n-2)个里选出(k-2)个
其中a3是第二小数的有2*C(n-3,k-2)个,a3是第二小,肯定得选且只能选a1,a2中的一个即两种情况,再从剩下的(n-3)个里选出(k-2)个
其中a4是第二小数的有3*C(n-4,k-2)个,a4是第二小,肯定得选且只能选a1,a2,a3中的一个即三种情况,再从剩下的(n-4)个里选出(k-2)个
...
得到选每个数的情况是
所以被选择的期望
然后再乘以阶乘,最终结果为
•细节处理
除法取模:
指数取模:
•代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 998244353
const int maxn=5e5+;
const int maxnn=1e7+;
ll fac[maxn];
ll facc[maxnn];
ll a[maxn]; ll quickMod(ll x,ll y)
{
ll res=;
x=x%mod;
while(y)
{
if(y&)
res=res*x%mod;
x=x*x%mod;
y>>=;
}
return res%mod;
} ll getfac()
{
fac[]=;
for(int i=;i<5e5+;i++)
fac[i]=fac[i-]*i%mod;
} ll getfacc()
{
facc[]=;
for(int i=;i<1e7+;i++)
facc[i]=facc[i-]*i%(mod-);
} int main()
{
int n,k,c;
cin>>n>>k>>c;
getfac();
getfacc();
for(int i=;i<=n;i++)
cin>>a[i];
ll ans=;
for(int i=;i<=n;i++)
{
if(n-i<k-)//防止组合数越界
break;
ans=(ans%mod+(i-)*fac[n-i]%mod*fac[n-k]%mod*fac[k]%mod*quickMod(fac[n-i-k+]*fac[k-]%mod*fac[n]%mod,mod-)%mod*quickMod(c,facc[a[i]])%mod)%mod;;
}
cout<<ans<<endl;
}
UPC Contest RankList – 2019年第二阶段我要变强个人训练赛第十六场的更多相关文章
- UPC Contest RankList – 2019年第二阶段我要变强个人训练赛第十四场
A.JOIOJI •传送门 [1]:BZOJ [2]:洛谷 •思路 在一个区间(L,R]内,JOI的个数是相等的,也就是R[J]-L[J]=R[O]-L[O]=R[I]-L[I], 利用前缀和的思想, ...
- UPC Contest RankList – 2019年第二阶段我要变强个人训练赛第十五场
传送门 A: Colorful Subsequence •题意 给一个长为n的小写字母序列,从中选出字母组成子序列 问最多能组成多少种每个字母都不相同的子序列 (不同位置的相同字母也算是不同的一种) ...
- UPC 2019年第二阶段我要变强个人训练赛第十六场
传送门: [1]:UPC比赛场 [2]:UPC补题场 F.gu集合(数论) •题目描述 题目描述: Dew有一个长为n的集合S. 有一天,他想选k个不同的元素出来做游戏. 但是Dew只有两只手,所以他 ...
- UPC 2019年第二阶段我要变强个人训练赛第六场
传送门 A.上学路线 题目描述 小D从家到学校的道路结构是这样的:由n条东西走向和m条南北走向的道路构成了一个n*m的网格,每条道路都是单向通行的(只能从北向南,从西向东走). 已知小D的家在网格的左 ...
- 2019年第二阶段我要变强个人训练赛第八场 B.序列(seq)
传送门 B.序列(seq) •题目描述 给出一个长度为n的序列a,每次对序列进行一下的某一个操作. •输入 第一行两个整数n,q表示序列长度和操作个数. 接下来一行n个数,表示序列a. 接下来q行表示 ...
- 备战省赛组队训练赛第十六场(UPC)
传送门 题解: by 烟台大学 (提取码:8972)
- UPC个人训练赛第十五场(AtCoder Grand Contest 031)
传送门: [1]:AtCoder [2]:UPC比赛场 [3]:UPC补题场 参考资料 [1]:https://www.cnblogs.com/QLU-ACM/p/11191644.html B.Re ...
- 备战省赛组队训练赛第十四场(UPC)
codeforces:传送门 upc:传送门 外来题解: [1]:https://blog.csdn.net/ccsu_cat/article/details/86707446 [2]:https:/ ...
- 备战省赛组队训练赛第十八场(UPC)
传送门 题解:by 青岛大学 A:https://blog.csdn.net/birdmanqin/article/details/89789424 B:https://blog.csdn.net/b ...
随机推荐
- apache出现forbidden
<Directory /> Options FollowSymLinks AllowOverride All Order deny,allow allow from all Require ...
- CLR 垃圾回收算法
c#相较于c,c++而言,在内存管理上为程序员提供了极大的方便,解放了程序员与内存地址打交道,提高了程序员的工作效率.比如c中分配的malloc堆空间没有释放导致的内存泄露,数组越界导致的踩内存错误, ...
- c# 自己实现可迭代的容器
在c#中我们经常使用到foreach语句来遍历容器,如数组,List,为什么使用foreach语句能够遍历一个这些容器呢,首先的一个前提是这些容器都实现了IEnumerable接口,通过IEnumer ...
- 秒懂Hash算法(一):什么是Hash
Hash函数 在一般的线性表.树结构中,数据的存储位置是随机的,不像数组可以通过索引能一步查找到目标元素.为了能快速地在没有索引之类的结构中找到目标元素,需要为存储地址和值之间做一种映射关系h(key ...
- Gradle +HanLP +SpringBoot 构建关键词提取,摘要提取 。入门篇
前段时间,领导要求出一个关键字提取的微服务,要求轻量级. 对于没写过微服务的一个小白来讲.有点赶鸭子上架,但是没办法,硬着头皮上也不能说不会啊. 首先了解下公司目前的架构体系,发现并不是分布式开发,只 ...
- Programming In Lua 第十章
1,lua中的数据结构都是表来实现的.数组就是索引为数值的表. 2,矩阵就是二维数组,三角矩阵就是矩阵的一半. 3,稀疏矩阵问题: 4, 5, 6,
- Java NIO学习系列三:Selector
前面的两篇文章中总结了Java NIO中的两大基础组件Buffer和Channel的相关知识点,在NIO中都是通过Channel和Buffer的协作来读写数据的,在这个基础上通过selector来协调 ...
- Python编程菜鸟成长记--A1--02--Python介绍
目录 1.重点知识 2.Python 语言介绍 2.1.Python 在主要领域的应用前景 2.2.Python 在机构.行业巨头公司的应用 3.Python 的发展史 4.Python 的发展前景如 ...
- Minimum Spanning Tree
前言 说到最小生成树(Minimum Spanning Tree),首先要对以下的图论概念有所了解. 图 图(Graph)是表示物件与物件之间的关系的数学对象,是图论的基本研究对象.图的定义方式有两种 ...
- Salesforce Admin篇(二) Report
针对salesforce系统也好,针对其他的平台系统也好,对于business user的需求以及疑问,数据往往决定了答案.业务人员提出了某些疑问,管理员需要根据需求的分析转换成数据的分析及过滤从而反 ...



的极限为0


。

然后再乘以阶乘,最终结果为

