wxy 3.30 牛客练习赛59重现
v>
5062
C
赛时解法
直接线性规划啊,2 * a+4 * b<=x和 3*a+b<=y 相加就是 ( a+b ) <=(x+y)/5 x->x-x%2,应为a,b一定是正
整数,所以考虑交点不在第一象限的情况, b或者a/2
# include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int main()
{
int T; scanf("%d",&T);
LL a,aa,b,bb,x,y;
LL ans=0;
while(T--){
scanf("%lld%lld",&x,&y);
ans=0;
a=(4*y-x)/10;
b=(3*x-2*y)/10;
if(b<0){
b=0;
a=min(y/3,x/2);
ans=a;
}else if(a<0){
a=0;
b=min(y,x/4);
ans=b;
}else{
for(LL i=a-10;i<=a+10;++i){
for(LL j=b-10;j<=b+10;++j){
if(i*2+j*4<=x&&i*3+j<=y) ans=max(ans,i+j);
}
}
}
printf("%lld\n",ans);
}
return 0;
}# include <bits/stdc++.h>
using namespace std;
int main()
{
int T; scanf("%d",&T);
while(T--){
int x,y; scanf("%d%d",&x,&y);
x-=x%2;
printf("%d\n",min((x+y)/5,min(y,x/2)));
}
return 0;
}
二分解法
2a+3b
4a+b 都可以造一个装备,假设能造mid个装备
y-=mid = 2b x/2=a+2a
y/2=b x/2-mid=a
此时第一种只用一件b,第二种只用一件a,二分就可以解了
这个是苏同的解法,QAQ,没看懂。。。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5+5;
int T;
int x,y;
int main(){
cin>>T;
while(T--){
cin>>x>>y;
int l=0,r=y;
while(l!=r){
int mid=l+r+1>>1;
int x1=x,y1=y-mid;
x1/=2;y1/=2;
x1-=mid;
if(x1>=0&&y1>=0&&x1+y1>=mid)l=mid;
else r=mid-1;
}
cout<<l<<endl;
}
}
题解三分
# include <bits/stdc++.h>
using namespace std;D
找规律太慢了。。。,找出规律以后一定要小心仔细,不能想当然,先用打表找,实在找不到了再手
画,虽然还是不是很适应打表找规律,但是这个效率更高
int main()
{
int T; scanf("%d",&T);
while(T--){
int x,y; scanf("%d%d",&x,&y);
int l=0,r=min(x/2,y/3);
while(r-l>10){
int m1=l+(r-l)/3,m2=r-(r-l)/3;
if(m1+min((x-2*m1)/4,(y-3*m1))<m2+min((x-2*m2)/4,(y-3*m2))) l=m1;
else r=m2;
}
int ans=0;
for(int i=l;i<=r;++i){
ans=max(ans,i+min((x-2*i)/4,(y-3*i)));
}
printf("%d\n",ans);
}
return 0;
}
# include <bits/stdc++.h>
using namespace std;
typedef long long LL;
LL f[100];
int main()
{
LL ans=3;
f[1]=1,f[2]=2;
for(int i=3;;++i){
if(i%2) f[i]=f[i-1]*2-1;
else f[i]=f[i-1]*2+1;
ans+=f[i];
//cout<<i<<" "<<f[i]<<" "<<ans<<endl;
if(ans>1e18) break;
}
int T; scanf("%d",&T);
while(T--){
LL n; scanf("%lld",&n);
LL now=0;
for(int i=1;;++i){
now+=f[i];
if(now>=n){
if(i%2==0){
printf("XiaoHuiHui\n");
}else printf("XiaoQiao\n");
break;
}
}
}return 0;
}
向wjmzbmr学习,acm本就是逆天而行。
浙公网安备 33010602011771号