/ Randle /

记录详情

Memory Exceeded


  
# 状态 耗时 内存占用
#1 Memory Exceeded ≥96ms ≥256.0 MiB
#2 Memory Exceeded ≥101ms ≥256.0 MiB
#3 Memory Exceeded ≥91ms ≥256.0 MiB
#4 Memory Exceeded ≥80ms ≥256.0 MiB
#5 Memory Exceeded ≥109ms ≥256.0 MiB
#6 Memory Exceeded ≥86ms ≥256.0 MiB
#7 Memory Exceeded ≥74ms ≥256.0 MiB
#8 Memory Exceeded ≥81ms ≥256.0 MiB
#9 Memory Exceeded ≥81ms ≥256.0 MiB
#10 Memory Exceeded ≥87ms ≥256.0 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][500000];
int hash[10000000],ex_hash[500000];
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:14:43
评测时间
2017-10-05 14:14:43
评测机
分数
0
总耗时
≥890ms
峰值内存
≥256.0 MiB