bzoj2510: 弱题

求k时刻一个标号转移到各位置的概率,最后枚举每个标号加权求期望。可以发现转移矩阵是循环矩阵,因此乘法是n^2的。另外这个乘法是圆周卷积的形式,然后就作死写了发fft,发现精度升天了= =

#include<cstdio>
#include<cstring>
#define N 1000
int n,m,k,i,j;
typedef double ds[N];
ds s,t,u,q;
void mul(double* s,double* t){
	memset(u,0,n*8);
	for(i=0;i!=n;++i)
		for(j=0;j!=n;++j)
			u[(i+j)%n]+=s[i]*t[j];
	memcpy(s,u,n*8);
}
int main(){
	scanf("%d%d%d",&n,&m,&k);
	for(i=0;i!=n;++i)
		scanf("%lf",t+i);
	*q=1-1./m;
	q[1]=1./m;
	for(*s=1;k;k/=2){
		if(k%2)mul(s,q);
		if(k/2)mul(q,q);
		else mul(t,s);
	}
	for(i=0;i!=n;++i)
		printf("%.3f\n",t[i]);
}

  

时间: 2024-10-12 08:08:32

bzoj2510: 弱题的相关文章

Bzoj2510 弱题(矩阵快速幂)

题面(权限题) 题解 一道概率\(dp\),可以设\(f[i][j]\)表示第\(i\)次操作后,标号为\(j\)的小球的期望个数,那么有: \[ \begin{aligned} &f[i][j]=(1-\frac 1m)f[i-1][j]+\frac1mf[i-1][j-1](1\leq j\leq n) \&f[i][0]=(1-\frac 1m)f[i-1][j]+\frac1mf[i-1][n] \end{aligned} \] 这样的话转移可以写成矩阵的形式(假设有\(4\)个小

【BZOJ2510】弱题 期望DP+循环矩阵乘法

[BZOJ2510]弱题 Description 有M个球,一开始每个球均有一个初始标号,标号范围为1-N且为整数,标号为i的球有ai个,并保证Σai = M. 每次操作等概率取出一个球(即取出每个球的概率均为1/M),若这个球标号为k(k < N),则将它重新标号为k + 1:若这个球标号为N,则将其重标号为1.(取出球后并不将其丢弃) 现在你需要求出,经过K次这样的操作后,每个标号的球的期望个数. Input 第1行包含三个正整数N,M,K,表示了标号与球的个数以及操作次数. 第2行包含N个

弱题(循环矩阵1)

问题 D: 弱题 时间限制: 1 Sec  内存限制: 128 MB提交: 46  解决: 28[提交][状态][讨论版] 题目描述 有M个球,一开始每个球均有一个初始标号,标号范围为1-N且为整数,标号为i的球有ai个,并保证Σai = M. 每次操作等概率取出一个球(即取出每个球的概率均为1/M),若这个球标号为k(k < N),则将它重新标号为k + 1:若这个球标号为N,则将其重标号为1.(取出球后并不将其丢弃) 现在你需要求出,经过K次这样的操作后,每个标号的球的期望个数. 输入 第1

BZOJ 2510: 弱题( 矩阵快速幂 )

每进行一次, 编号为x的数对x, 和(x+1)%N都有贡献 用矩阵快速幂, O(N3logK). 注意到是循环矩阵, 可以把矩阵乘法的复杂度降到O(N2). 所以总复杂度就是O(N2logK) ---------------------------------------------------------------------- #include<bits/stdc++.h> using namespace std; const int maxn = 1009; int N, M, K,

bzoj 2510: 弱题 循环矩阵

2510: 弱题 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 124  Solved: 61[Submit][Status][Discuss] Description 有M个球,一开始每个球均有一个初始标号,标号范围为1-N且为整数,标号为i的球有ai个,并保证Σai = M. 每次操作等概率取出一个球(即取出每个球的概率均为1/M),若这个球标号为k(k < N),则将它重新标号为k + 1:若这个球标号为N,则将其重标号为1.(取出球后并不

弱题题解

题面: 题目描述 有M个球,一开始每个球均有一个初始标号,标号范围为1-N且为整数,标号为i的球有ai个,并保证Σai = M. 每次操作等概率取出一个球(即取出每个球的概率均为1/M),若这个球标号为k(k < N),则将它重新标号为k + 1:若这个球标号为N,则将其重标号为1.(取出球后并不将其丢弃) 现在你需要求出,经过K次这样的操作后,每个标号的球的期望个数. 输入 第1行包含三个正整数N,M,K,表示了标号与球的个数以及操作次数. 第2行包含N个非负整数ai,表示初始标号为i的球有a

大神刷题表

9月27日 后缀数组:[wikioi3160]最长公共子串 dp:NOIP2001统计单词个数 后缀自动机:[spoj1812]Longest Common Substring II [wikioi3160]最长公共子串 [spoj7258]Lexicographical Substring Search 扫描线+set:[poj2932]Coneology 扫描线+set+树上删边游戏:[FJOI2013]圆形游戏 结论:[bzoj3706][FJ2014集训]反色刷 最小环:[poj1734

[补档]暑假集训D3总结

考试 集训第一次考试,然而- - 总共四道题,两道打了DFS,一道暴力,一道~~输出样例~~乱搞,都是泪啊- - 目前只改了三道,回头改完那道题再上题解吧- - T2 [Poi2010]Monotonicity 2   https://hzoi-mafia.github.io/2017/07/27/20/ T3 [中山市选2011]杀人游戏   https://hzoi-mafia.github.io/2017/07/27/19/ T4 弱题  https://hzoi-mafia.github

周(月)总结 ------------ 5月10日,祝全天下母亲母亲节快乐。

好吧. 让我们谈点正(che)经(dan)的事. 细数一数这周(月)都干了点啥. 5月1~3 首先,颓了一整个五一,今天去那个亲戚明天看这个的- -.整个五一就是颓过去了,五一的那个ch的比赛被虐的跟狗一样,递推都想不到,鬼知道当时自己中什么邪了. Conclude:在家的效率低的不行,这点已经注意了!= = 5月4~10 咳,这一周,个人评价60分吧,具体为什么呢,这一周的状态的确比以前好多了,不过在面对一些傻题的时候做不到1A,代码准确度不够,(不过现在好多了),尤其是面对傻题却想不到,这简