Live Archive 6705 Little Tiger vs. Deep Monkey

本文介绍了一道ICPC竞赛题目,通过0-1背包算法解决概率问题,实现计算选择题得分策略以达到预期胜率。

Regional 2013::Asia - Changchun C    Live Archive 6705   Little Tiger vs. Deep Monkey

题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=603&page=show_problem&problem=4717

题目大意:小老虎与深猴(奇怪的名字)比赛智商,他们要回答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~~!








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值