首页 > 其他分享 >AtCoder Beginner Contest 323

AtCoder Beginner Contest 323

时间:2023-10-08 13:11:10浏览次数:35  
标签:AtCoder 概率 Beginner int LL 323 ans dp mod

E - Playlist

首先需要算出第x+0.5秒后,第一首歌播放的概率
1.要在x+0.5秒后播放第一首,需要在x,x-1,x-2,...,x-t[1]+1,时就要开始播放第一首,并且概率是1/n,概率之和除以n
2.概率dp,dp[i]表示播放i的概率,那么可以转换成,dp[i]+=dp[i-j]/n%mod(i>=t[j])
3.答案就是x,x-1,...,x-t[1]+1概率之和再除以n

其次,因为要模上mod,模意义下的除法
1.根据乘法逆元可知,n* n^(mod-2)%mod=1
2.计算x/n,可以转换成x/n* (n* n^(mod-2))%mod==x* n^(mod-2)%mod

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define LL long long
const int mod=998244353;
int d[10005],t[10005];
int _pow(int a,int b=mod-2){
	int ans=1;
	while(b){
		if(b&1) ans=(1LL*ans*a)%mod;//LL
		a=1LL*a*a%mod;//开LL
		b>>=1;
	}
	return ans;
}
int main(){
	int n,x;
	cin>>n>>x; 
	for(int i=1;i<=n;i++) cin>>t[i];
	int mo=_pow(n);
	d[0]=1;
	for(int i=1;i<=x;i++){
		LL sum=0;
		for(int j=1;j<=n;j++){
			if(t[j]>i) continue;
			sum=(sum+1LL*d[i-t[j]]*mo)%mod;//LL
		}
		d[i]=sum;
	}
	int ans=0;
	for(int i=max(0,x-t[1]+1);i<=x;i++){
		ans=(ans+d[i])%mod;
	}
	ans=1LL*ans*mo%mod;//LL
	cout<<ans;
	return 0;
} 

标签:AtCoder,概率,Beginner,int,LL,323,ans,dp,mod
From: https://www.cnblogs.com/bu-fan/p/17748627.html

相关文章

  • UNIQUE VISION Programming Contest 2023 Autumn(AtCoder Beginner Contest 323)
    UNIQUEVISIONProgrammingContest2023Autumn(AtCoderBeginnerContest323)A.WeakBeats解题思路:按题意模拟即可。代码:#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;voidsolve(){strings;cin>>s;intn=s.size();......
  • ABC323
    T1:WeakBeats模拟代码实现s=input()foriinrange(1,len(s),2):ifs[i]=='1':exit(print('No'))print('Yes')T2:Round-RobinTournament模拟代码实现#include<bits/stdc++.h>#definerep(i,n)for(inti=0......
  • AtCoder Beginner Contest 323
    有的人边上课边打abcA-WeakBeats(abc323A)题目大意给定一个\(01\)字符串,问偶数位(从\(1\)开始)是否全为\(0\)。解题思路遍历判断即可。神奇的代码#include<bits/stdc++.h>usingnamespacestd;usingLL=longlong;intmain(void){ios::sync_with_stdio......
  • AtCoder Grand Contest 057 E RowCol/ColRow Sort
    洛谷传送门AtCoder传送门首先考虑一个经典的套路:转\(01\)。具体而言,我们考虑若值域是\([0,1]\)怎么做。发现可以很容易地判定一个\(A\)是否合法。设矩阵第\(i\)行的和为\(r_i\),第\(j\)列的和为\(c_j\),那么合法当且仅当\(A\)的\(\{r_i\}\)和\(\{c_j\}\)(可重集......
  • AtCoder Grand Contest 036 F Square Constraints
    洛谷传送门AtCoder传送门本质是\(p_i\in[l_i,r_i]\)的计数问题。当\(1\lei\len\)时,\(l_i\)才可能不等于\(1\)。考虑容斥,设钦定\(m\)个不满足条件(上界为\(l_i-1\)),其余任意(上界为\(r_i\))。然后按照上界排序后dp,设\(f_{i,j}\)为考虑前\(i\)个元素,已经......
  • AtCoder Beginner Contest 288 Ex A Nameless Counting Problem
    洛谷传送门AtCoder传送门考虑到规定单调不降比较难搞。先设\(g_t\)为长度为\(t\)的满足条件的序列个数(可重且有顺序)。求这个可以设个dp,\(f_{d,i}\)表示考虑到从高到低第\(d\)位,当前\(t\)个数中有\(i\)个仍然顶上界,并且之前的位都满足异或分别等于\(X\)的限制。......
  • Atcoder abl c
    传送门题目描述有n个城市,m条双向路的图,问你最少添加几条路使得任意两个城市可以两两到达?样例样例输入3112样例输出:1题目解析这是个双向路的图,我们可以把它当成一个非连通图。在各个点之间有连线,要求我们算出如何能将整个图的各个部分连接起来。那么,我们只要算出这个......
  • AtCoder——第一题
    AtCoderBeginnerContest322FVacationQuery题目大意处理01字符串,给定Q次询问,询问区间内最长连续1的字符个数题目理解使用线段树维护区间需要使用懒标记下传修改信号线段树要维护7个信息(区间的最长连续1的个数、区间左端点开始连续1的个数、区间左端点开始连续0的个数......
  • AtCoder Grand Contest 056 D Subset Sum Game
    洛谷传送门AtCoder传送门考虑若\(n\)是奇数怎么做。枚举Alice第一次选的数\(a_i\),然后考虑把剩下的数两两结成一个匹配,若Bob选了其中一个,Alice就选另一个。容易发现排序后奇数位和它右边的偶数位匹配最优。那么设奇数位的和为\(A\),偶数位的和为\(B\),此时Alice获胜......
  • 2023-2024-1 20231323《计算机基础与程序设计》第一周学习总结
    2023-2024-120231323《计算机基础与程序设计》第1周学习总结作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK01这个作业的目标快速浏览教材《计算机......