• 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+去了。

  • 相关阅读:
    java23种设计模式-结构型模式-适配器模式
    java23种设计模式-创建者模式-抽象工厂模式
    java23种设计模式-创建者模式-工厂模式
    从jvm运行数据区分析字符串是否相同
    Linux常见安全策略
    MySQL 报错案例分析
    Linux系统网络监控工具
    海量运维架构
    Linux运维面试技巧
    DBA机遇于风险并存
  • 原文地址:https://www.cnblogs.com/lifehappy/p/12693894.html
Copyright © 2020-2023  润新知