Regional 2013::Asia - Changchun C Live Archive 6705 Little Tiger vs. Deep Monkey
题目大意:小老虎与深猴(奇怪的名字)比赛智商,他们要回答N道二选一的选择题,每道题由于难度不同,有不同的分值。小老虎假设深猴的回答都是蒙的(隐藏条件正确率50%),问小老虎至少要得多少分,胜率达到P?
题目分析:这道题我的思路是用0-1背包把所有可能的得分情况的概率一一列出,求达到P的胜率,就从0分开始向上加,输出胜率加到不小于P时的得分。
code:
#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
int i,j,t,n,a[50],s[40050],sum;
double p,ans,power;
scanf("%d",&t);
while(t--)
{
memset(s,0,sizeof(s));
scanf("%d%lf",&n,&p);
power=pow(2,n);
for(i=sum=0;i<n;i++)
{
scanf("%d",a+i);
sum+=*(a+i);
}
//printf("sum==%d\n",sum);
for(s[0]=1,i=0;i<n;i++)
{
for(j=sum;j>=a[i];j--)
{
if(s[j-a[i]])s[j]+=s[j-a[i]];
}
}
for(ans=i=0;i<=sum;i++)
{
ans+=s[i]*1./power;
if(ans>=p)
{
printf("%d\n",i);
break;
}
}
}
return 0;
}
PS:又回到ICPC的战场了,重拾0-1背包迈出第一步,Keep Fighting~~!
本文介绍了一道ICPC竞赛题目,通过0-1背包算法解决概率问题,实现计算选择题得分策略以达到预期胜率。
3306

被折叠的 条评论
为什么被折叠?



