zoukankan      html  css  js  c++  java
  • [CF1329A] Dreamoon Likes Coloring

    [CF1329A] Dreamoon Likes Coloring - 构造

    Description

    给定长为 (n) 的格子和 (m) 种颜色。Dreamoon 会依次刷这 (m) 种颜色,对于第 (i) 种颜色,他会从第 (p_i) 格开始刷到第 (p_i+l_i-1) 格。(p_i) 不能超过 (n-l_i+1) 或小于 (1),这样会超出格子。您的任务是找出一组 (p_i),使得 Dreamoon 刷完所有颜色之后每种颜色至少出现了一次,且每个格子都被刷上了颜色。

    Solution

    假设默认散开来放,同时记录一个剩余长度,如果剩余长度不够了,就压缩

    #include <bits/stdc++.h>
    using namespace std;
    
    #define int long long
    
    int n, m;
    int l[100005], p[100005];
    
    signed main()
    {
        ios::sync_with_stdio(false);
        cin >> n >> m;
        for (int i = 1; i <= m; i++)
            cin >> l[i];
        int res = 0;
        for (int i = 1; i <= m; i++)
            res += l[i];
        int pos = 1;
        for (int i = 1; i <= m; i++)
        {
            if (pos > n)
            {
                cout << -1;
                return 0;
            }
            p[i] = pos;
            res -= l[i];
            if (pos + l[i] > n + 1)
            {
                cout << -1;
                return 0;
            }
            pos += min(l[i], max(1ll, n - res - pos + 1));
        }
        if (pos != n + 1)
        {
            cout << -1 << endl;
            return 0;
        }
        else
        {
            for (int i = 1; i <= m; i++)
                cout << p[i] << " ";
            cout << endl;
        }
    }
    
  • 相关阅读:
    IBinder介绍
    Android组成部分
    Android中handler,looper与messageQueue的代码解析
    JS
    设计模式
    冒泡排序
    战斗逻辑
    mongo数据库基础
    JS闭包
    c/c++
  • 原文地址:https://www.cnblogs.com/mollnn/p/14565100.html
Copyright © 2011-2022 走看看