Educational Codeforces Round 94 (Rated for Div. 2) B. RPG Protagonist (数学)

-
题意:你和你的随从去偷剑和战斧,你可以最多可以拿\(p\)重的东西,随从可以拿\(f\)重的东西,总共有\(cnt_{s}\)把剑,\(cnt_{w}\)把战斧,每把剑重\(s\),战斧重\(w\),问你和随从最多能拿的剑和战斧的总和是多少?
-
题解:首先,肯定谁轻就先拿谁,我们就令剑是轻的,然后算一下我自己最多能拿多少剑,从\(0\)开始枚举我拿的剑的个数,我先拿剑,然后随从拿剑,然后我再拿战斧,然后随从再拿战斧,维护一个最大值.这题关键这个枚举的方法不好想.
-
代码:
int t; int p,f; int cnts,cntw; int w,s; int ans=0; int main() { //ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); t=read(); while(t--){ ans=0; p=read(); f=read(); cnts=read(); cntw=read(); s=read(); w=read(); if(s>w){ swap(s,w); swap(cnts,cntw); } int mx=min(p/s,cnts); for(int i=0;i<=mx;++i){ int rems=cnts-i,remw=cntw; int now=i; int remp=p-s*i,remf=f; int tmp=min(remf/s,rems); remf-=tmp*s; now+=tmp; tmp=min(remp/w,remw); remw-=tmp; now+=tmp; tmp=min(remf/w,remw); now+=tmp; ans=max(ans,now); } printf("%d\n",ans); } return 0; }
𝓐𝓬𝓱𝓲𝓮𝓿𝓮𝓶𝓮𝓷𝓽 𝓹𝓻𝓸𝓿𝓲𝓭𝓮𝓼 𝓽𝓱𝓮 𝓸𝓷𝓵𝔂 𝓻𝓮𝓪𝓵
𝓹𝓵𝓮𝓪𝓼𝓾𝓻𝓮 𝓲𝓷 𝓵𝓲𝓯𝓮

浙公网安备 33010602011771号