codeforces 1023D Array Restoration 线段树

实战指南!基于STM32的智能环境监测系统(代码+硬件设计+云端控制) 本文详细介绍了基于STM32的智能环境监测系统的设计与实现,包括硬件选型、电路设计、软件架构和云端控制。系统通过DHT11温湿度传感器和MQ-2烟雾传感器实时监测环境数据,STM32F103C8T6主控芯片处理数据并通过ESP8266上传至中国移动物联网平台,支持手机APP远程监控。项目成本低、稳定性高,适合智能家居和环境监测应用。 阅读详情

题目链接:http://codeforces.com/problemset/problem/1023/D

之前想的时候忘了如果序列中没有q,也没有0时应该输出no

先特判,若果没有q并且有0,则先任意将一个0置为q,然后将所有的0置为他们相邻的值。这样不会影响序列的合法性,并且序列中没有了0,只需判断是否合法即可

用线段树查询一个数字出现的两个端点之间是否有比它小的数,如果有输出no,如果每个数都没有输出yes

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
#define mod 1000000007
#define For(i,m,n) for(int i=m;i<=n;i++)
#define Dor(i,m,n) for(int i=m;i>=n;i--)
#define LL long long
#define lan(a,b) memset(a,b,sizeof(a))
using namespace std;


const int N=200010;

struct node
{
    int l,r;
    int m;//存储值
};

node tree[N*4];
int a[N],b[N],c[N];

void build(int n ,int l,int r)
{
    tree[n].l=l;
    tree[n].r=r;
    if(l==r)
    {
        tree[n].m=a[l];//////////////////////////视情况
        return;
    }
    int mid=(l+r)>>1;
    build(n*2,l,mid);
    build(n*2+1,mid+1,r);
    tree[n].m=min(tree[n*2].m,tree[n*2+1].m);/////////////////////看线段树种类
}

int query(int n,int l,int r)
{
    if(l>r)
        return -1;
    if(tree[n].l==l&&tree[n].r==r)
    {
        return tree[n].m;
    }
    int mid=(tree[n].r+tree[n].l)/2;

    int res=0;
    if(r<=mid)
        res=query(n*2,l,r);
    else if(l>=mid+1)
        res=query(n*2+1,l,r);
    else
    {
        res=query(n*2,l,mid);////////////////////看线段树种类
        res=min(res,query(n*2+1,mid+1,r));////////////////////看线段树种类
    }
    return res;
}

    int n,q;
        int f=0;
bool pin()
{

    For(i,1,q)
    {
        if(b[i]!=inf)
        {
            if(query(1,b[i],c[i])<i)
                return false;
        }
    }

        printf("YES\n");
        For(i,1,n)
        if(i==n)
            printf("%d\n",a[i]);
        else
            printf("%d ",a[i]);
return true;

}

int main()
{
    while(~scanf("%d%d",&n,&q))
    {
        lan(b,inf);
        lan(c,0);
        lan(tree,0);
        lan(a,0);
        f=0;
        int maxx=-1;
        For(i,1,n)
        {
            scanf("%d",&a[i]);
            if(a[i]==0)f++;
            else
            {
                b[a[i]]=min(i,b[a[i]]);
                c[a[i]]=max(i,c[a[i]]);
            }
            maxx=max(maxx,a[i]);
        }
        if(f==n)
        {
            printf("YES\n");
            For(i,1,n)
            if(i==n)
                printf("%d\n",q);
            else
                printf("%d ",q);
                continue;
        }
        if(maxx!=q&&f==0)
        {
            printf("NO\n");
            continue;
        }
        else if(maxx!=q&&f!=0)
        {
            For(i,1,n)
                if(!a[i]){a[i]=q;break;}
        }
            For(i,1,n)
                if(!a[i])a[i]=a[i-1];
            Dor(i,n,1)
                if(!a[i])a[i]=a[i+1];
        build(1,1,n);
        if(pin()==false)
        printf("NO\n");
    }
    return 0;
}

 

STM32开发 -- GPIO详解 之前有简单讲过GPIO工作模式和寄存器,还是有点没搞明白。这次需要全方位的看一下了。 一、数据手册 1、STM32F105RC引脚说明 可知:STM32F105RC 一共有4组IO口 一共16X3+3=51个IO GPIOA0~A15 GPIOB0~B15 GPIOC0~C15 GPIOD0~D2 2、程序定义 GPIO端口号 STM32F1... 阅读详情

相关推荐

通过CN3口直接控制台达伺服电机A2-M(二)

既然可以通过RS485与伺服驱动器进行通讯,那么就肯定可以控制转速 首先,需要了解下 ‘控制模式及控制命令输入源设定’ 依据以上资料,速度控制模式有两种,S和SZ模式,分别对应模式选择中的02和04,对P1-01的地址0102进行写地址操作即可实现,一开始我使用了S模式,但是这个模式在寸动模式下会自动运转,不符合我控制的要求,后面改用SZ模式,就可以实现零速度。 使用串口工具发送命令:“01 06 01 02 00 04 28 35”即可以实现设置,设置完成后可以手动在伺服驱动器的按键面板上进行确

HKing_evil的博客 6825

【线段树】入门-HDU - 1754 例题讲解,超级详细 +codeforces 1023 D (实际应用)

以下分析基于这道题目。。和代码。。 讲解在后面别被题目吓到哈哈哈哈哈 #include&lt;iostream&gt; #include&lt;cstdio&gt; using namespace std; int n,n_,m,a[200001&lt;&lt;2];char s; void init(int w){ n=1; while(n&lt;w)n*=2; for (int i...

lx233 517

手把手教你用TiggerRamDisk绕过iPhone/iPad激活锁(支持iOS16.3,Win/Mac双平台保姆级教程)

本文详细介绍了如何使用TiggerRamDisk工具绕过iPhone/iPad的激活锁,支持iOS16.3系统,并提供Windows和Mac双平台的保姆级教程。从工具准备、设备连接到核心解锁流程,一步步指导用户完成操作,帮助二手设备或旧设备重获新生。

weixin_29323493的博客 907

Codeforces 1023D Array Restoration(线段树)

题目链接:Array Restoration 题意 有一个长度为 nnn 的序列,可以对这 nnn 个序列进行 qqq 次操作,第 iii 次操作选择一个区间 [li,ri][li,ri][l_i,r_i],将这个区间内的所有数字用 iii 替换,每个位置上的数字至少被一个区间覆盖,最后将这个序列中的某几个数字改为 000。现在题目给出最终的序列,问是否存在合法的 qqq 次操作,能够得...

Dmaxiya 611

免Root抓包神器Packet Capture:安卓App数据捕获全攻略

本文详细介绍了免Root安卓抓包神器Packet Capture的安装与使用全攻略。通过利用安卓系统的VPN Service API,该工具无需Root权限即可捕获并解密App的HTTP/HTTPS网络流量。文章从核心原理、证书安装、实战抓包步骤到结果分析与常见问题排查,提供了完整指南,是移动端开发、安全测试和数据分析的实用利器。

weixin_29232507的博客 1073

《Linux运维总结:etcd 3.5.15集群数据备份与恢复》

《Linux运维总结:etcd 3.5.15集群数据备份与恢复》

东城绝神 1079

codeforces 1023D Array Restoration

考场上东拼西凑打补丁才做出来,多次找到hack自己的数据,WA ON pretest6 5发,然后想到最后一个数字必须出现,被之前的数字覆盖也要出现,才A掉。首先想到对于每个出现的数字,记录一蛤这个数字最左边出现的地方L[i]和最右边出现的地方R[i],说明在第i次query的区间至少要包括L[i]到R[i]这段区间,那么我们直接模拟一蛤区间覆盖,看一蛤最后的情况a数组和目标数组to的关系如何。接...

binarycopycode 374

Windows11开机必看:3种方法跳过联网激活(含最新OOBE命令)

本文详细介绍了Windows11新机开箱时绕过联网激活的三种实用方法,包括任务管理器终止进程法、命令行强制终止法和最新的OOBE\BYPASSNRO命令法。特别推荐使用微软官方预留的OOBE命令,操作简单且无副作用,帮助用户快速完成系统设置。

weixin_28366353的博客 1626

Codeforces 1023 D - Array Restoration(线段树/思维)

D. Array Restoration time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Initially there was an array aa consisting of nn integers. Po...

辞树 327

在ros中进行多传感器融合定位

ROS 中的 robots_localization 包是一个非常有用的包,可以使用各种卡尔曼滤波器融合任意数量的传感器!我们将使用它将全局姿势数据(x、y、z 和orientation)与机器人上的现有传感器融合,以实现更强大的定位!

如果想成为中心,那么就到中心去吧。 3001

交通仿真软件:SUMO_(1).SUMO基础知识

SUMO 中的交通网络由节点(junctions)和边(edges)组成。节点表示交叉口或路网的连接点,边表示连接节点之间的道路。节点:节点文件(.nod.xml)定义了网络中的所有节点。每个节点有一个唯一的 ID 和坐标。</边:边文件(.edg.xml)定义了连接节点的边。每个边有一个唯一的 ID、起点节点 ID 和终点节点 ID。</车辆文件(.vtype.xml)定义了不同类型的车辆。每个车辆类型可以有不同的参数,例如长度、最大速度、加速度等。</

kkchenjj的博客 1432

Codeforces Round #504 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final) (CF1023D)

题目链接:http://codeforces.com/problemset/problem/1023/D   题目大意:有一个长度为n的序列a,有q次操作。第i次操作可以用i覆盖一段区间内的数。序列a的每个位置至少被改一次。得到最终的序列,然后将序列里的某些位置变成0,输出一种可能的置零之前的最终序列,或无解   思路:通过分析可知,两个相同的数之间的数不可能比端点的数小(除非是零)。这个...

star_moon0309的博客 364

【软考中级网络工程师】知识点之 ICMP 协议

本文聚焦软考中级网络工程师必备的 ICMP 协议知识,先概述其在 TCP/IP 协议族网络层的地位与无连接特性,再阐述差错报告、网络诊断等功能。解析报文格式,详解差错与查询类报文类型及工作机制,还介绍其在 Ping、Traceroute 命令中的应用,分析常见攻击与防范措施,最后总结核心要点,为网络工程师学习和应用 ICMP 协议提供全面指导。

邓邓子的博客 1402

codeforces 1023 D Array Restoration 【线段树】

D. Array Restoration time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Initially there was an array aa consisting of nn integers. Po...

Head_Hard的博客 381

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Codeforces #504(div1+div2) 1023D Array Restoration(线段树)

题目大意:给你一个数组,数组是经过q次区间覆盖后的结果,第i次覆盖是把区间内的值赋值为i,其中有若干个地方数值未知(就是0),让你判断这个数组是否可以经过覆盖后得到的,如果可以,输出任意一种可行数组。 思路:不合法的情况只有2种。1:两个相同的数字中间出现了比它小的数字,比如: 6 5 6 就不合法,因为覆盖6的时候是覆盖连续的一段区间,而5比6先覆盖,所以这种情况不存在。我赛后看AC代码的时候...

weixin_30708329的博客 127

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Array Restoration--Codeforces Round #504 D (RMQ或线段树)

题目链接:http://codeforces.com/contest/1023/problem/D                                                       D. Array Restoration Initially there was an array aa consisting of nn integers. Positions in i...

wzw 277

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Codeforces Round 1023 (#504 rated, Div. 1 + Div. 2, based on VK Cup 2018 Final) D. Array Restoration

D. Array Restoration time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Initially there was an array aa consisting of n integers. Pos...

长路漫漫 唯剑作伴 293

Codeforces Round #504 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final)-D. Array Restoration

D. Array Restoration http://codeforces.com/contest/1023/problem/D 题意:给你一个有n个整数的数组,q次操作,第i次操作选择一个区间(不能为空)把这个区间里面的数都变成i(i&gt;.=1&amp;&amp;i&lt;=q),现在把这个变化过的数组中的一些数字变成0,问你能不能得到变成0之间的序列。如果序列可以恢复输出yes并且...

Ma_tx 289

1023D. Array Restoration

#include&lt;bits/stdc++.h&gt; using namespace std; #define ll long long #define dprintf if (debug) printf #define rep(i, j, k) for (int i=j; i&lt;k; i++) const int debug = 0; const int maxn = 2e5+50;...

u011535421的博客 223

CodeForces 102A - flody

I - Clothes Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Status Practice CodeForces 102A Description A little boy Gerald entered a clothes sho

桑榆 925

Educational Codeforces Round 102 (Rated for Div. 2) A-D

链接: Educational Codeforces Round 102 (Rated for Div. 2). A 题意:输入n,d,有n个数,可以选择互不想等的i,j,k,使得ai=aj+ak。问最终能否使得数组的每个数字都小于等于d 思路:求出数组最小的两个数的和,小于d就YES,否则NO 代码 #include <stdio.h> #include <stdarg.h> #include <stdlib.h> #include <math.h> #in

HHeyanjie的博客 794

codeforces-102A Clothes(暴力)

链接:http://codeforces.com/problemset/problem/102/A题意:给定n件衣服,每件衣服有价格,有m中配对关系,求最小的价格从中选取三件衣服,使得它们之间能两两配对题解:n很小直接暴力#include&lt;iostream&gt; #include&lt;cstring&gt; #include&lt;map&gt; #include&lt;cstdio&g...

GrimCake的博客 409

hdu 6447YJJ's Salesman 离散化+树状数组+DP

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6447 因为图中点的坐标值过大,达到1e9.然而只有1e5个点。所以先将其离散化。并按照&lt;x.y&gt;二元组排序。每次对于同一行的点连续处理两次。 第一次:先考虑由上一行转移而来的情况:树状数组找到左上角的最大值+v、以及上方值的最大值。 第二次:考虑由同行的点转移来的情况。树状数组查询区...

大乐的博客 740

zoj 4029 2018浙江省赛F Now Loading!!!

题目链接:zoj 4029用n^2不现实,考虑到某些数字对于用一个p的log值相等,所以可用二分解决用到了c++的upper_bound,找到比当前值大的第一个数字在数组中的位置,然后一个前缀数组算出分子的和#include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;vector&gt; #include&lt;set&gt; #incl...

大乐的博客 623

codeforce 991E (组合数递归搜索)

题目链接:点击打开链接给出小明在迷糊的时候看到的车牌号数字,和真实数字相比:①真实出现的数字,小明都看到了②小明只可能把同一个数字看多,不可能看少③车牌号没有前导零问真实的数字有可能有多少种情况先把每个数字出现的次数记录下来,这就是在搜索时每个数字取到的上限从0到9遍历(相当于10层循环,在这里用递归的方式实现,每层循环的遍历次数即为该层数字出现的次数,代表取多少个这个数)在最后一层统计用当前这些...

大乐的博客 545

CF 1091D

有两种子串能达到n*(n+1)/2,一种是n的全排列,有n个 另一种是分段的,一段在前面的排列里,一段在后面的排列里。只要保证在前面排列里的序列不是完全倒着的就可以计入贡献。 要用lucas计算组合数   #include&lt;bits/stdc++.h&gt; #define mod 998244353 using namespace std; long long a[1000...

大乐的博客 519
上一篇: hdu 6408 From ICPC to ACM贪心模拟
下一篇: codeforces 1023a
Dale_zero
博客等级 码龄9年 10粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值