Codeforces Round #519 by Botan Investments

Posted nblyz2003

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #519 by Botan Investments相关的知识,希望对你有一定的参考价值。

开个新号打打codeforces(以前那号玩废了),结果就遇到了这么难一套。touristD题被卡掉了(其实是对cf的评测机过分自信),G题没过, 700多行代码,码力惊人。

做了4道,本来想着上蓝名的。然后我第二题挂了,判断循环节写错了。绝望啊~~~~

比赛传送门:http://codeforces.com/contest/1043

A. Elections

 

这题很简单,就是说有n个人,每人投k张票,给你或你对手。第i个人会给你的对手投ai票,让你求最少的k。使得你的票数比你的对手多。模拟一下就好了,不多说。然而这题我又犯傻忘记了k >= max{ai},wa了一次。

弱弱地放上我的代码

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#define rep(x, l, r) for(int x = l; x <= r; x++)
#define repd(x, r, l) for(int x = r; x >= l; x--)
#define clr(x,y) memset(x, y, sizeof(x))
#define mp(x, y) make_pair(x, y)
#define INF 1 << 30
#define MAXN 
using namespace std;
typedef long long LL;
typedef pair<int,int> par;

int main(){
    int n;
    scanf("%d", &n);
    int sum = 0, maxx = 0;
    rep(i, 1, n){
        int x;
        scanf("%d", &x);
        sum += x;
        maxx = max(maxx, x);
    }
    int ans = 2 * sum / n + 1;
    if(ans < maxx) ans = maxx;
    printf("%d
", ans);
    return 0;
}

 

B. Lost Array

这题是给你个数组a,长度为n,满足技术分享图片(k是x的长度)。当k = 3, x = {1, 2, 3}, n = 5时a如下图。

技术分享图片

让你求所有x数组的方案数和,以及每种方案的长度k(从大到小)。

这题看上去很麻烦,其实很简单。只要求出他们相邻的差,就是一种x的方案。另外的其他几个方案就是由这串差的循环节组成(为什么?自己试试就知道了)。

然而我找循环节炸了,我也不知道为啥,主要还是代码太丑。后来听了大佬的建议,才改进了一点。

改过后的代码

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#define rep(x, l, r) for(int x = (int)l; x <= (int)r; x++)
#define repd(x, r, l) for(int x = (int)r; x >= (int)l; x--)
#define clr(x,y) memset(x, y, sizeof(x))
#define mp(x, y) make_pair(x, y)
#define INF 1 << 30
#define MAXN 1005
using namespace std;
typedef long long LL;
typedef pair<int,int> par;

int n;
int a[MAXN], b[MAXN], ansk[MAXN];

bool judge(int len){
    rep(i, len, n - 1)
        if(a[i] != a[i % len]) return 0;
    return 1;
}

int main(){
    scanf("%d", &n);
    rep(i, 1, n){
        scanf("%d", &b[i]);
        a[i - 1] = b[i] - b[i - 1];
    }
    int ans = 0;
    rep(i, 1, n)
        if(judge(i)) ansk[++ans] = i;
    printf("%d
", ans);
    rep(i, 1, ans) printf("%d ", ansk[i]);
    puts("");
    return 0;
}

  

C. Smallest Word

 

这题啊……cf的rating一直不变,去睡一觉,明晚再来打吧

以上是关于Codeforces Round #519 by Botan Investments的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #519 by Botan Investments

Codeforces Round #519 by Botan Investments翻车记

Codeforces Round #519 by Botan Investments F. Make It One

Codeforces Round #519

Codeforces Round #519 D - Mysterious Crime

[题解]Codeforces Round #519 - D. Mysterious Crime