Codeforces Round #618

Non-zero

题目链接 http://codeforces.com/contest/1300/problem/A

代码

#include <cstdio>
using namespace std;
#define Nmax 103
int N;
int A[Nmax];
void work()
{
    scanf("%d", &N);
    for (int i = 0; i < N; i++)
    {
        scanf("%d", &A[i]);
    }
    int ans = 0;
    for (int i = 0; i < N; i++)
    {
        if (A[i] == 0)
        {
            A[i] = 1;
            ans++;
        }
    }
    int sm = 0;
    for (int i = 0; i < N; i++)
    {
        sm += A[i];
    }
    if (sm == 0)
        ans++;
    printf("%d\n", ans);
}
int main()
{
    int T;
    scanf("%d", &T);
    while (T--)
    {
        work();
    }
    return 0;
}

Assigning to Classes

题目链接 http://codeforces.com/contest/1300/problem/B

代码

#include <cstdio>
#include <algorithm>
using namespace std;
#define Nmax 200010
int N;
int ls[Nmax];
void work()
{
    scanf("%d", &N);
    for (int i = 0; i < N; i++)
    {
        scanf("%d", &ls[i]);
    }
    for (int i = 0; i < N; i++)
    {
        scanf("%d", &ls[N+i]);
    }
    sort(ls, ls+N*2);
    printf("%d\n", ls[N] - ls[N-1]);
}
int main()
{
    int T;
    scanf("%d", &T);
    while (T--) {
        work();
    }
    return 0;
}

Anu Has a Function

题目链接 http://codeforces.com/contest/1300/problem/C

代码

#include <cstdio>
#include <algorithm>
using namespace std;
#define Nmax 100010
int N;
int ls[Nmax];
int cnt[40];
int main()
{
    scanf("%d", &N);
    int x;
    for (int i = 0; i < N; i++)
    {
        scanf("%d", &ls[i]);
        x = ls[i];
        for (int j = 0; j <= 30; j++)
        {
            if ((1<<j)&x)
                cnt[j]++;
        }
    }
    int ans = -1;
    int id;
    int tmp;
    for (int i = 0; i < N; i++)
    {
        x = ls[i];
        tmp = 0;
        for (int j = 0; j <= 30; j++)
        {
            if (((1<<j) & x) && cnt[j] == 1) {
                tmp |= 1<<j;
            }
        }
        if (tmp > ans)
        {
            ans = tmp;
            id = i;
        }
    }
    tmp = ls[0];
    ls[0] = ls[id];
    ls[id] = tmp;
    for (int i = 0; i < N; i++)
    {
        printf("%d ", ls[i]);
    }
    return 0;
}

Aerodynamic

题目链接 http://codeforces.com/contest/1300/problem/D

代码

#include <cstdio>
#include <map>
using namespace std;
#define Nmax 100010
int N;
int ls[Nmax][2];
long long smx, smy;
map<pair<int, int>, int> mp;
int main()
{   
    scanf("%d", &N);
    for (int i = 0; i < N; i++)
    {
        scanf("%d %d", &ls[i][0], &ls[i][1]);
        smx += ls[i][0];
        smy += ls[i][1];
    }
    smx *= 2;
    smy *= 2;
    if (N/2 == 1)
    {
        printf("NO\n");
        return 0;
    }
    for (int i = 0; i < N; i++)
    {
        mp[make_pair(ls[i][0]*(long long)N, ls[i][1]*(long long)N)] = 1;
    }
    for (int i = 0; i < N; i++)
    {
        if (!mp.count(make_pair(smx - ls[i][0] * (long long)N, smy - ls[i][1] * (long long)N)))
        {
            printf("NO\n");
            return 0;
        }
    }
    printf("YES\n");
    return 0;
}

Water Balance

题目链接 http://codeforces.com/contest/1300/problem/E

代码

#include <cstdio>
using namespace std;
#define Nmax 1000010
int N;
int A[Nmax];
long long sm[Nmax];
long double ls[Nmax];
int id[Nmax];
int len[Nmax];
int tl;
int main()
{
    scanf("%d", &N);
    for (int i = 1; i <= N; i++)
    {
        scanf("%d", &A[i]);
        sm[i] = sm[i-1] + A[i];
    }
    ls[0] = A[N];
    id[0] = N;
    len[0] = 1;
    tl = 1;
    int lenlen;
    long double ld;
    for (int i = N-1; i >= 1; i--)
    {
        lenlen = 1;
        ld = A[i];
        while (tl) {
            if (ls[tl-1] < ld) {
                tl--;
                lenlen += len[tl];
                ld = (long double)(sm[i+lenlen-1] - sm[i-1]) / (long double)(lenlen);
            }
            else
                break;
        }
        ls[tl] = ld;
        id[tl] = i;
        len[tl] = lenlen;
        tl++;
    }
    for (int i = tl-1; i >= 0; i--)
    {
        for (int j = 0; j < len[i]; j++)
        {
            printf("%.9lf\n", (double)ls[i]);
        }
    }
    return 0;
}
posted @ 2020-02-18 11:20  KZNS  阅读(69)  评论(0)    收藏  举报