cf--contest1321-A. Contest for Robots+简单推理

本文解析了CodeForces竞赛中的A题,探讨了如何通过分析两家公司的问题解决状态来确定a公司获胜所需的最低分数。文章详细阐述了解题思路,并提供了一段AC代码作为示例。
传送门

http://codeforces.com/contest/1321/problem/A

题意

有两家公司a和b,都有n个问题,给出每家公司的每个问题状态(1表示解决,0表示未解决),每个问题都有相应的分数,小明可以随意改动他,但是每个题的分数都必须大于0,小明想让a公司赢,小明提前知道a,b公司的问题状态,问a公司中问题得到分数最大值(最小化)是多少。
1.a公司的总分要大于b公司才算赢。
2.如果不能使得a公司赢b公司,则输出-1 .

思路

最小化,就是让b公司得分问题数全部为1,可以分别求出anum(只有a解决),bnum(只有b解决),num(ab同时解决);
结果可以分为三种情况.
1.如果a状态和b状态相同,则分不出结果,输出-1.
2.如果只有b解决,输出-1(a公司和b公司问题一样时,分数也是一样的,这样如果只有b解决时,那么a肯定就输了)
3.如果存在三种,则输出bnum/anum+1即可。(只有a解决的平均每个问题多少分)

AC代码
#include<cstdio>
using namespace std;
int a[101],b[101];
int main()
{
	int n;
	scanf("%d",&n);
	for(int i=0;i<n;i++)	scanf("%d",&a[i]);//a数组问题状态 
	for(int i=0;i<n;i++)	scanf("%d",&b[i]);//b数组问题状态 
	int anum=0,bnum=0,num=0;//分别指只有a解决,只有b解决,ab同时解决 
	for(int i=0;i<n;i++)//枚举每一种状态 
	{
		if(a[i]==1 && b[i]==0)	anum++; 
		else if(a[i]==0 && b[i]==1)	bnum++;
		else if(a[i]==b[i] &&a[i]==1)	num++;
	}
	if(!anum && !bnum)	puts("-1");//如果a状态和b状态相同,则分布不出结果 
	else if(!anum  && bnum)	puts("-1");//如果只有b状态 
	else printf("%d",bnum/anum+1);
	return 0;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星空皓月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值