CF1426E Rock, Paper, Scissors (思维)

链接

题意:

A和B进行剪刀石头布的游戏,一共进行n局:
A能使用a个石头,b个剪刀,c个布
B能使用x个石头,y个剪刀,z个布
问A最少和最多可以赢多少局?

分析:

看完题直接写就好了,先分析A最少赢多少:
最少赢那就是说A的石头尽量要和B的石头或者布遇见,那么就直接用a-x-z看剩多少石头,如果还剩说明他肯定会遇上B的剪刀,这样A就赢了。同样看剪刀和布就好了

再看A最多赢多少,最多赢就是A的石头尽量遇上B的剪刀,那直接取最大值就行了。

void solve()
{        
    cin>>n;
    ll a,b,c;
    ll ta,tb,tc;
    cin>>a>>b>>c;
    ta=a;tb=b;tc=c;
    ll x,y,z;
    ll tx,ty,tz;
    cin>>x>>y>>z;
    tx=x,ty=y,tz=z;
    ll ans=0,sum=0;
	ll tmp=min(a,y);
	a-=tmp;y-=tmp;
	ans+=tmp;
	tmp=min(b,z);
	b-=tmp,z-=tmp;
	ans+=tmp;
	tmp=min(c,x);
	c-=tmp;x-=tmp;
	ans+=tmp;
	
	
	sum+=max(0ll,ta-tx-tz);
	sum+=max(0ll,tb-tx-ty);
	sum+=max(0ll,tc-ty-tz);
		
	cout<<sum<<" "<<ans<<endl;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值