传送门

思路:“Dreamoon will choose a number pipi from range [1,n−li+1](inclusive) and will paint all cells from pipi to pi+li−1(inclusive) in ii-th color.”可以知道从[1, n - li - 1]任意位置往后染pi个格子为第ith种颜色。

容易想到,如果∑li < n,说明"-1"。

如果∑li>=n,因为我们不知道怎么染色才好,但我们知道SUM = ∑li,即我们目前还可以染色SUM块。不如我们类贪心的思想染色,这样我们可以分成两种情况:

假设now为当前的pi,len为剩余未染色的块

①SUM - now >= len - 1

说明我们只用当前颜色染色1块,之后SUM-now的个数也可以染色剩余的部分,那么 SUM -= now ,n -= 1

②SUM - now < len - 1

说明我们如果用当前颜色只染色1块,则SUM - now 不能染色剩余的 len - 1,那么我们需要让

SUM - now == len - 1 - ? (==>) ? = (len - 1) - (SUM - now),则当前颜色需要染色 ? + 1个才行。

这样我们可以用pre_s,pre_d记录之前的开始位置和染色长度。

当然我们不能忘记一个条件“每种颜色只能在[1, n - li - 1]开始往后染色”,如果(n - li - 1) < pre_s + pre_d,

说明我们无法完成满足题意的染色,因为我们前面是尽可能少的染色切满足题目要求,如果仍然无法满足,说明没有可行解。

 1 #include <iostream>
2 #include <cstdio>
3 #include <algorithm>
4 #include <cstring>
5 #include <cmath>
6 #include <queue>
7 #include <vector>
8 #include <cstring>
9 #include <functional>
10 #define LL long long
11 using namespace std;
12
13 const int N = 1e5 + 10;
14 int L[N], inx[N];
15
16 void solve ()
17 {
18 int n, m, len;
19 scanf("%d%d", &n, &m);
20
21 LL Sum_d = 0;
22 for(int i = 1; i <= m; ++i) {
23 scanf("%d", L + i);
24 Sum_d += L[i];
25 }
26
27 int pre_s, pre_d;
28 pre_s = 1; pre_d = 0;
29 len = n;
30 for(int i = 1; i <= m; ++i) {
31 //printf("start = %d L = %d\n", pre_s + pre_d, n - L[i] + 1);
32 if(n - L[i] + 1 < pre_s + pre_d) { break; }
33
34 if(Sum_d - L[i] >= len - 1) {
35 Sum_d -= L[i];
36 len -= 1;
37 pre_s = pre_s + pre_d;
38 pre_d = 1;
39 } else {
40 int tmp_d = (len - 1) - (Sum_d - L[i]);
41 if(tmp_d + 1 > L[i]) { break; }
42 Sum_d -= L[i];
43 len -= (1 + tmp_d);
44 pre_s = pre_s + pre_d;
45 pre_d = (1 + tmp_d);
46 }
47 inx[i] = pre_s;
48 }
49
50 // cout << "len = " << len << endl;
51
52 if(len > 0) {
53 printf("-1\n");
54 } else{
55 for(int i = 1; i <= m; ++i) { printf("%d ", inx[i]); }
56 printf("\n");
57 }
58
59
60 }
61
62 int main()
63 {
64 solve();
65
66 return 0;
67 }

Dreamoon Likes Coloring 【CF 1329 A】的更多相关文章

  1. 【39.68%】【CF 714 C】Filya and Homework

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...

  2. 【Cf #503 B】The hat(二分)

    为什么Cf上所有的交互题都是$binary \; Search$... 把序列分成前后两个相等的部分,每一个都可以看成一条斜率为正负$1$的折线.我们把他们放在一起,显然,当折线的交点的横坐标为整数时 ...

  3. 【cf比赛记录】Codeforces Round #606 (Div. 2, based on Technocup 2020 Elimination Round 4)

    比赛传送门 只能说当晚状态不佳吧,有点头疼感冒的症状.也跟脑子没转过来有关系,A题最后一步爆搜没能立即想出来,B题搜索没有用好STL,C题也因为前面两题弄崩了心态,最后,果然掉分了. A:简单数学 B ...

  4. UOJ30——【CF Round #278】Tourists

    1.感谢taorunz老师 2.题目大意:就是给个带权无向图,然后有两种操作, 1是修改某个点的权值 2是询问,询问一个值,就是u到v之间经过点权的最小值(不可以经过重复的点) 操作数,点数,边数都不 ...

  5. 【CF刷题】14-05-12

    Round 236 div.1 A:只需要每个点连接所有比他大的点,知道边用完为止. //By BLADEVIL #include <cmath> #include <cstdio& ...

  6. UOJ #30. 【CF Round #278】Tourists

    Description Cyberland 有 n 座城市,编号从 1 到 n,有 m 条双向道路连接这些城市.第 j 条路连接城市 aj 和 bj.每天,都有成千上万的游客来到 Cyberland ...

  7. UOJ #30【CF Round #278】Tourists

    求从$ x$走到$ y$的路径上可能经过的最小点权,带修改  UOJ #30 $ Solution:$ 如果两个点经过了某个连通分量,一定可以走到这个连通分量的最小值 直接构建圆方树,圆点存原点的点权 ...

  8. 【Cf #449 C】Willem, Chtholly and Seniorious(set维护线段)

    这里介绍以个小$trick$,民间流传为$Old Driver Tree$,实质上就是$set$维护线段. 我们将所有连续一段权值相同的序列合并成一条线段,扔到$set$里去,于是$set$里的所有线 ...

  9. 【Cf #503 C】Sergey's problem(有趣的构造)

    感觉这种构造题好妙啊,可我就是想不到诶. 给出一张无自环的有向图,回答一个独立集,使得图中任意一点都可以被独立集中的某一点两步之内走到. 具体构造方案如下: 下标从小到大枚举点,如果该点没有任何标记, ...

随机推荐

  1. Canal Admin

    一.Canal Admin 安装与配置 1.1 下载 wget https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal ...

  2. PyQt信号connect连接槽方法时报:native Qt signal is not callable错误

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 在将一个信号连接到槽方法时,程序异常退出,捕获异常 ...

  3. Python中使用百分号占位符的字符串格式化方法中%s和%r的输出内容有何不同?

    Python中使用百分号占位符的字符串格式化方法中%s和%r表示需要显示的数据对应变量x会以str(x)还是repr(x)输出内容展示. 关于str和repr的关系请见: <Python中rep ...

  4. PyQt学习随笔:截获窗口Widget组件的关闭事件

    在PyQt中,QWidget类对应基础的窗口组件,如果要在窗口组件关闭时截获关闭事件,提供自己的控制机制,则可以通过在自定义的派生类中重写closeEvent方法. 重写closeEvent方法的语法 ...

  5. 虚拟IP原理及使用

    一.前言 高可用性 HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性.HA 系统是目前企业防止核心 ...

  6. javascript是面向对象的,怎么体现javascript的继承关系?

    一个简单的例子: var A =function(){ } A.prototype = { v : 5, tmp : 76, echo : function(){console.log(this.tm ...

  7. 傲视Kubernetes(二):Docker镜像搭建与本地Kubernetes环境搭建

    主要内容: 1.Docker与Kubernetes的关系 2.SpringBoot微服务的Docker镜像创建 3.Kubernetes本地环境搭建 一.Docker与Kubernetes的关系 在说 ...

  8. uni-app中使用sass

    uni-app在创建时,工程目录下会有个uni.scss文件,我们可以直接在里面定制化scss变量. 全局scss中的坑: 1.如果要引用全局外部scss文件,可以考虑在uni.scss这个系统全局s ...

  9. Linux下基于.NET5开发CAX应用

    <<.NET5下的三维应用程序开发>>一文中介绍了如何在.NET5下使用AnyCAD开发应用程序.相比.NET4.x,.NET5一大进步便是可以跨平台,即可以在Linux.Ma ...

  10. 容器编排系统之Kubectl工具的基础使用

    前文我们了解了k8s的架构和基本的工作过程以及测试环境的k8s集群部署,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14126750.html:今天我们主要来 ...