CodeForces #322 (div2)

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;
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章