/ Randle /

记录详情

Wrong Answer


  
# 状态 耗时 内存占用
#1 Wrong Answer 15ms 28.047 MiB
#2 Wrong Answer 12ms 28.055 MiB
#3 Wrong Answer 11ms 28.055 MiB
#4 Wrong Answer 9ms 28.059 MiB
#5 Wrong Answer 9ms 28.047 MiB
#6 Wrong Answer 8ms 28.066 MiB
#7 Wrong Answer 9ms 28.055 MiB
#8 Wrong Answer 13ms 28.055 MiB
#9 Wrong Answer 9ms 28.047 MiB
#10 Wrong Answer 11ms 28.062 MiB

代码

#include<bits/stdc++.h>
const int maxn=31;
inline const void read(int &a)
{
	a=0;
	char c=getchar();
	while(c<'0'||c>'9')c=getchar();
	while(c>='0'&&c<='9')
	{
		a=(a<<1)+(a<<3)+c-'0';
		c=getchar();
	}
}
inline const void write(int a)
{
	if(a>9)write(a/10);
	putchar(a%10+'0');
}
int n,m,v[maxn];
double p[maxn],f[2][maxn][50000];
int hash[1000000],ex_hash[50000];
int main()
{
	read(n);read(m);
	for(int i=1;i<=n;i++)
	{
		int o;
		read(v[i]);read(o);
		p[i]=double(o)/100;
	}
	memset(ex_hash,0,sizeof(ex_hash));
	memset(hash,0,sizeof(hash));
	memset(f,0,sizeof(f));
	int d=-1,x=0;
	hash[0]=++d;ex_hash[d]=0;
	hash[m]=++d;ex_hash[d]=m;
	f[x][0][0]=1;
	for(int i=1;i<=n;i++)
	{
		x^=1;
		for(int j=0;j<=i;j++)
			for(int k=0;k<=d;k++)
			{
				int r=ex_hash[k]+v[i];
				if(!hash[r])
				{
					if(r<m){hash[r]=++d;ex_hash[d]=r;}
					else r=m;
				}
				if(j)f[x][j][k]+=f[x^1][j-1][k]*(1.0-p[i]);
				f[x][j][hash[r]]+=f[x^1][j][k]*p[i];
			}
	}
	for(int i=0;i<=n;i++)printf("%.3lf\n",f[x][i][hash[m]]);
	return 0;
}

信息

递交者
类型
递交
题目
钻石 T3
题目数据
下载
语言
C++
递交时间
2017-10-05 14:15:13
评测时间
2017-10-05 14:15:13
评测机
分数
0
总耗时
110ms
峰值内存
28.066 MiB