/ Randle /

记录详情

Accepted

/in/foo.cc: In function 'int main()':
/in/foo.cc:25:14: warning: unused variable 'm' [-Wunused-variable]
  int i,j,l,r,m,col;
              ^
# 状态 耗时 内存占用
#1 Accepted 3ms 336.0 KiB
#2 Accepted 4ms 256.0 KiB
#3 Accepted 3ms 212.0 KiB
#4 Accepted 4ms 332.0 KiB
#5 Accepted 5ms 384.0 KiB
#6 Accepted 6ms 512.0 KiB
#7 Accepted 7ms 384.0 KiB
#8 Accepted 4ms 484.0 KiB
#9 Accepted 4ms 512.0 KiB
#10 Accepted 4ms 384.0 KiB

代码

#include <bits/stdc++.h>
using namespace std;

inline int read()
{
	char ch=getchar();
	int x=0;
	while(!isdigit(ch))
		ch=getchar();
	while(isdigit(ch))
	{
		x=x*10+ch-'0';
		ch=getchar();
	}
	return x;
}

int n,c,k;
int sum[101];//差分数组闪亮登场 
double f[101][101];//涂i次,变成j的概率 
double g[101][101];//共i次,选j次的概率 
int main()
{
	//freopen("1.out","w",stdout);
	int i,j,l,r,m,col;
	n=read(),c=read(),k=read();
	f[0][1]=1;
	for(i=0;i<k;i++)
		for(j=0;j<c;j++)
		{
			if(f[i][j]<=1e-9) continue;
			double gailv=f[i][j]/c;
			for(col=0;col<c;col++)
				f[i+1][j*col%c]+=gailv;
		}
	g[0][0]=1; 
	for(i=0;i<k;i++)
		for(j=0;j<=i;j++)
		{
			g[i+1][j]+=g[i][j]/2;
			g[i+1][j+1]+=g[i][j]/2;
		}
	/*for(i=0;i<=k;i++)
	{
		double tot=0;
		for(j=0;j<c;j++)
			tot+=f[i][j],printf("%.7lf ",f[i][j]); 
		cout<<tot<<endl;
	}*/
	for(i=1;i<=k;i++)		
	{
		l=read(),r=read();
		sum[l]++,sum[r+1]--;
	}
	double ans=0;
	int cnt=0;
	for(i=1;i<=n;i++)
	{
		cnt+=sum[i];
		for(j=0;j<c;j++)
			for(k=0;k<=cnt;k++)
				ans+=f[k][j]*g[cnt][k]*j; 
	}
	printf("%.3lf",ans);
}

信息

递交者
类型
递交
题目
灵魂画师T2
题目数据
下载
语言
C++
递交时间
2017-11-07 14:36:02
评测时间
2017-11-07 14:36:02
评测机
分数
100
总耗时
50ms
峰值内存
512.0 KiB