CodeForces #322 (div2)

来源:互联网 发布:linux grep命令与管道 编辑:程序博客网 时间:2024/05/24 00:36

A. Vasya the Hipster

随便模拟一下。

#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<queue>#include<map>#include<vector>#include<set>#include<ctime>#define LL long long#define db double#define EPS 1e-1#define inf 1e16#define pa pair<int,int>using namespace std;int main(){    int a,b;scanf("%d%d",&a,&b);int ans1=max(a,b)-min(a,b);int ans2=min(a,b);int ans;if (ans1%2==0) ans1=ans1/2;else ans1=(ans1-1)/2;printf("%d %d\n",ans2,ans1);}

B. Luxurious Houses

倒着扫一遍,记录一下最大值。

#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<queue>#include<map>#include<vector>#include<set>#include<ctime>#define LL long long#define db double#define EPS 1e-1#define inf 1e16#define pa pair<int,int>using namespace std;LL a[100000],ans[100000];int main(){    int n;    scanf("%d",&n);    for (int i=0;i<n;i++){    scanf("%d",&a[i]);    }    LL maxi=a[n-1];    ans[n-1]=0;    for(int i=n-2;i>=0;i--){ans[i] = max(maxi-a[i]+1,(LL)0);maxi=max(maxi,a[i]);}for (int i=0;i<n-1;i++) printf("%I64d ",ans[i]);printf("0");return 0;}

C. Developing Skills

贪心搞一下,先按照差多少能补进位,尽量去补,如果最后多了就随便补。

#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<queue>#include<map>#include<vector>#include<set>#include<ctime>#define LL long long#define db double#define EPS 1e-1#define inf 1e16#define pa pair<int,int>using namespace std;int n,m,ans;int a[100010];inline bool cmp(int a,int b){     int x=a%10,y=b%10;x=10-x;y=10-y;     if (x<y)return 1;     if (y<x)return 0;     return a<b;}int main(){scanf("%d%d",&n,&m);for (int i=1;i<=n;i++) scanf("%d",&a[i]),ans+=a[i]/10;sort(a+1,a+n+1,cmp);for (int i=1;i<=n;i++){if (a[i]==100) continue;int x=a[i]%10; x=10-x;if (x>m) break;m-=x; a[i]+=x; ans++;}sort(a+1,a+n+1);for (int i=1;i<=n;i++)while (a[i]<=90&&m>=10)ans++,a[i]+=10,m-=10;printf("%d\n",ans);}


D Three Logos

暴力枚举。

#include<bits/stdc++.h>using namespace std;int main(){    int x1,y1,x2,y2,x3,y3;    while(scanf("%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3)!=EOF){        int area=x1*y1+x2*y2+x3*y3;        int k=sqrt(area);        if(k*k==area){            if(y1==k)                swap(x1,y1);            if(y2==k)                swap(x2,y2);            if(y3==k)                swap(x3,y3);            if(x1==k&&x2==k&&x3==k){                printf("%d\n",k);                for(int i=1;i<=y1;i++){                    for(int j=1;j<=x1;j++)                        printf("A");                    printf("\n");                }                for(int i=1;i<=y2;i++){                    for(int j=1;j<=x2;j++)                        printf("B");                    printf("\n");                }                for(int i=1;i<=y3;i++){                    for(int j=1;j<=x3;j++)                        printf("C");                    printf("\n");                }                continue;            }            int sd=0;            if(x2==k){                sd=1;                swap(x1,x2);                swap(y1,y2);            }            if(x3==k){                sd=2;                swap(x1,x3);                swap(y1,y3);            }            if(y2==k-y1){                swap(x2,y2);            }            if(y3==k-y1){                swap(x3,y3);            }            if(x2==k-y1&&x3==k-y1&&y2+y3==k){                printf("%d\n",k);                for(int i=1;i<=y1;i++){                    for(int j=1;j<=x1;j++)                        printf("%c",'A'+sd);                    printf("\n");                }                if(sd==0){                    for(int i=1;i<=x2;i++){                        for(int j=1;j<=y2;j++)                            printf("%c",'B');                        for(int j=1;j<=y3;j++)                            printf("%c",'C');                        printf("\n");                    }                }                if(sd==1){                    for(int i=1;i<=x2;i++){                        for(int j=1;j<=y2;j++)                            printf("%c",'A');                        for(int j=1;j<=y3;j++)                            printf("%c",'C');                        printf("\n");                    }                }                if(sd==2){                    for(int i=1;i<=x2;i++){                        for(int j=1;j<=y2;j++)                            printf("%c",'B');                        for(int j=1;j<=y3;j++)                            printf("%c",'A');                        printf("\n");                    }                }                continue;            }            else{                printf("-1\n");            }        }        else{            printf("-1\n");        }    }    return 0;}



0 0
原创粉丝点击