AtCoder Beginner Contest 063

来源:互联网 发布:中国cpi数据分析 编辑:程序博客网 时间:2024/05/17 20:12

  这次又错过了比赛,但是想着还没做过,就补了一下。感觉真的比cf的div2简单,特别是前两个题,a+b,,beginner啊

A.a+b

B.a~b

C.贪心

#include<cstdio>#include<algorithm>using namespace std;int a[105];int n,x;int main(){    scanf("%d",&n);    int sum = 0;    for(int i = 1;i <= n;i++)        scanf("%d",&a[i]),sum += a[i];    if(sum % 10)        printf("%d\n",sum);    else{        sort(a+1,a+1+n);        for(int i = 1;i <= n;i++){            if(a[i] % 10 != 0)                return 0 * printf("%d\n",sum-a[i]);        }        printf("0\n");    }    return 0;}

D.二分次数

INT_MAX在climits头文件

#include<bits/stdc++.h>using namespace std;typedef long long ll;ll h[100005];ll n,a,b;bool check(ll k){    ll cnt = k*b;    int num = upper_bound(h+1,h+1+n,cnt) - h;    ll sum = 0;    for(int i = num;i <= n;i++)    {        //printf("h[i]=%lld\n",h[i]);        ll tmp = h[i] - cnt;        sum += (tmp+a-b-1) / (a-b);    }    //printf("%lld %lld\n",sum,k);    return sum <= k;}int main(){    scanf("%lld%lld%lld",&n,&a,&b);    for(int i = 1;i <= n;i++)        scanf("%lld",&h[i]);    sort(h+1,h+1+n);    ll l = 0,r = INT_MAX,mid;    while(l < r){        mid = (l+r)/2;        if(!check(mid))            l = mid+1;        else            r = mid;    }    printf("%lld\n",r);    return 0;}//2 3   2 3  1 2  1 1       5 5 3 5


原创粉丝点击