Codeforces Round #633 (Div. 2)(A, B, C)

Posted lifehappy

tags:

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

A. Filling Diamonds

A. Filling Diamonds 题目链接

通过对图像的观察,我们不难发现,答案就是正立的菱形的个数

技术图片

为什么是这样,我们无论如何放置都有一个图形是要用,正立的菱形去填涂的,我们假定可以有两个正立的菱形存在,可以发现,无论这两个菱形的距离是如何,都不可能填满这两个菱形之前的区域,因此只可能存在一个正立的菱形,所以正立的菱形的位置就决定了方案的数量。

//Powered by CK
#include<bits/stdc++.h>
using namespace std;
int main() {
    //freopen("in.txt", "r", stdin);
    int t, n;
    cin >> t;
    while(t--) {
        cin >> n;
        cout << n << endl;
    }
    return 0;
}

B. Sorted Adjacent Differences

B. Sorted Adjacent Differences 题目链接

简单的贪心,排一个序,从中间开始同时向两边,或者从两边开始向中间开始输出。

//Powered by CK
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5 + 10;
int a[N], n;
int main() {
    // freopen("in.txt", "r", stdin);
    int t;
    scanf("%d", &t);
    while(t--) {
        scanf("%d", &n);
        for(int i = 0; i < n; i++)
            scanf("%d", &a[i]);
        sort(a, a + n);
        int l = n / 2 - 1, r = n / 2;
        if(n & 1)   printf("%d ", a[r++]);//奇数情况特殊处理一下,方便后面的枚举遍历。
        while(r < n)
            printf("%d %d ",a[l--], a[r++]);
        printf("
");
    }
    return 0;
}

C. Powered Addition

C. Powered Addition 题目链接

要求是形成一个非递减的序列,遍历一遍记录一个当前的最大值 most 就好了,通过对小于most的数,更新最大差值。

//Powered by CK
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5 + 10;
int a[N], n;
int main() {
    // freopen("in.txt", "r", stdin);
    int t;
    scanf("%d", &t);
    while(t--) {
        scanf("%d", &n);
        for(int i = 0; i < n; i++)
            scanf("%d", &a[i]);
        int most = a[0], ans = 0;
        for(int i = 1; i < n; i++) {
            if(a[i] >= most) most = a[i];
            else {
                ans = max(most - a[i], ans);
                a[i] = most;
            }
        }
        int pos = 0, po = 1;
        while(ans > 0) {
            ans -= po;
            po *= 2;
            pos++;
        }
        printf("%d
", pos);
    }
    return 0;
}

D题写的时候就感觉是树形dp,dp还没有系统的学过(基本没子写过dp的题目),不会写,先暂时放下吧。
昨天忘记比赛时间了,比赛开赛后半小时才去写,排名2500+去了。

以上是关于Codeforces Round #633 (Div. 2)(A, B, C)的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #633 (Div. 2)(A, B, C)

Codeforces Round #436 E. Fire(背包dp+输出路径)

[ACM]Codeforces Round #534 (Div. 2)

CodeForces 633B A Trivial Problem

Codeforces 633 C Spy Syndrome 2 字典树

Codeforces 633D Fibonacci-ish 暴力