计蒜之道 2016 复赛 B. 联想专卖店大促销

来源:互联网 发布:2016年网络作家富豪榜 编辑:程序博客网 时间:2024/04/28 11:33

题目有个条件没注意啊

可以直接枚举

比赛时 错了不少细节

两个代码 第二个是yzy的太神了!!

#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;int a,b,c;int T;int ok(int k){int Ct=k;int A=a-k,B=b-k;int tmp=B/3;int At=tmp,Bt=tmp;k+=1;if(B-At-Bt*2>=1&&A-At*2-Bt>=2&&k>=1) At++,k--;if(B-At-Bt*2>=1&&A-At*2-Bt>=2&&k>=1) At++,k--;int tt=min(min((A-At*2-Bt)/3,Bt),k/3);At+=tt*2;Bt-=tt;if(A-At*2-Bt>=1&&B-Bt*2-At>=2) Bt++;//cout<<At<<' '<<Bt<<' '<<Ct<<' '<<At+Bt+Ct<<endl;if(At+Bt+1<Ct) return -1;return At+Bt+Ct;}int main(){//freopen("a.in","r",stdin);//freopen("a.out","w",stdout);cin>>T;while(T--){scanf("%d %d %d",&a,&b,&c);int ans=-1;for(int i=0;i<=c;i++) ans=max(ok(i),ans);//,cout<<i<<' '<<ans<<endl;printf("%d\n",ans);}return 0;}

#include<algorithm>#include<iostream>#include<cstring>#include<cstdlib>#include<vector>#include<cstdio>#include<queue>#include<ctime>#include<cmath>#include<set>#include<map>#define LL long longusing namespace std;int a,b,c;bool jud(int x){int t[5],w=x;t[0]=a-x,t[1]=b-x,t[2]=c;for(int i=0;i<3;i++)    w-=min(t[i],(x+1)/2);return w<=0;}int main(){freopen("a.in","r",stdin);freopen("ac.out","w",stdout) ;int T;scanf("%d",&T);while(T--){scanf("%d%d%d",&a,&b,&c);int L=0,R=min(a,b),ans=0;while(L<=R){int mid=L+R>>1;if(jud(mid)) ans=mid,L=mid+1;else R=mid-1;}printf("%d\n",ans);}return 0;}


0 0
原创粉丝点击