`
xxx0624
  • 浏览: 30813 次
文章分类
社区版块
存档分类
最新评论

CF-Div2-207-C题+线段树

 
阅读更多

简单线段树。。。

区间更新

/*
线段树+修改区间+询问区间
update是把某个区间ab的数改为c
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
#include<iostream>
#include<queue>
#include<vector>
#include<map>
#include<math.h>
typedef long long ll;
//typedef __int64 int64;
const int maxn = 300005;
const int maxm = 1005;
const int inf = 0x7FFFFFFF;
const double pi = acos(-1.0);
const double eps = 1e-8;
using namespace std;
#define LEFT( x ) (x<<1)
#define RIGHT( x ) ((x<<1)+1)
struct node{
    int l,r,win;
    int flag;
}tree[ maxn<<2 ];

struct QQ{
    int x,y;
    int win;
}a[ maxn ];

void pushdown( int n ){
    if( tree[ n ].flag!=0 ){
        tree[ LEFT( n ) ].flag = tree[ RIGHT( n ) ].flag = tree[ n ].flag;
        tree[ LEFT( n ) ].win =  tree[ n ].win;//tree[ n ].flag*((m+1)/2);
        tree[ RIGHT( n ) ].win = tree[ n ].win;//tree[ n ].flag*( m-(m+1)/2 );
        tree[ n ].flag = 0;
    }
    return;
}
void build( int l,int r,int n ){
    if( l==r ){
        tree[ n ].win = 0;
        tree[ n ].flag = 0;
        tree[ n ].l=tree[ n ].r = l;
        return ;
    }
    tree[ n ].win = 0;
    tree[ n ].flag = 0;
    tree[ n ].l = l;
    tree[ n ].r = r;
    int mid;
    mid = (l+r)>>1;
    build( l,mid,LEFT( n ) );
    build( mid+1,r,RIGHT( n ) );
    return;
}
void update( int a,int b,int c,int l,int r,int n ){
    if( a==l&&b==r ){
        tree[ n ].flag = 1;
        tree[ n ].win = c;
        //printf("l = %d,r = %d\nc = %d\n",l,r,c);
        return ;
    }
    pushdown( n );
    int mid;
    mid = (l+r)>>1;
    if( mid>=b ) update( a,b,c,l,mid,LEFT( n ) );
    else if( mid<a ) update( a,b,c,mid+1,r,RIGHT( n ));
    else {
        update( a,mid,c,l,mid,LEFT( n ) );
        update( mid+1,b,c,mid+1,r,RIGHT( n ) );
    }
    return ;
}
int query( int a,int b,int l,int r,int n ){
    if( a==l&&b==r ){
        //printf("l = %d, r = %d,c = %d\n",l,r,tree[n].win);
        return tree[ n ].win;
    }
    pushdown( n );
    int mid;
    mid = (l+r)>>1;
    if( mid>=b ) return query( a,b,l,mid,LEFT( n ) );
    else if( mid<a ) return query( a,b,mid+1,r,RIGHT( n ));
    else return query( a,mid,l,mid,LEFT( n ) )+query( mid+1,b,mid+1,r,RIGHT( n ));
}
int main(){
    int n,m;
    while( scanf("%d%d",&n,&m)==2 ){
        for( int i=1;i<=m;i++ ){
            scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].win);
        }
        build( 1,n,1 );
        for( int i=m;i>=1;i-- ){
            if( a[i].win-1>=a[i].x ) update( a[i].x,a[i].win-1,a[i].win,1,n,1 );
            if( a[i].y>=a[i].win+1 )update( a[i].win+1,a[i].y,a[i].win,1,n,1 );
        }
        int f = -1;
        for( int i=1;i<=n;i++ ){
            int ans = query( i,i,1,n,1 );
            if( ans==i ) {
                if(f==-1)printf("0"),f++;
                else printf(" 0");
            }
            else {
                if( f==-1 ) printf("%d",ans),f++;
                else printf(" %d",ans);
            }
        }
        printf("\n");
    }
    return 0;
} 


分享到:
评论

相关推荐

    CF-WU710N V2

    COMFAST品牌 CF-WU710N V2型号 USB无线网卡 驱动 亲测能用

    CF-926AC.zip

    标题 "CF-926AC.zip" 暗示我们关注的是一个与CF-926AC相关的软件或驱动程序的压缩文件。描述中的信息同样简单,只提到了文件本身的名称,没有提供额外的上下文。标签也一样,只复述了文件名,因此无法直接获取更多...

    七彩虹主板 cf-af3-e v18 主板BIOS

    "七彩虹主板 CF-AF3-E v18 主板BIOS" 这个标题指的是一款特定的计算机硬件组件,即七彩虹品牌的主板,具体型号为CF-AF3-E,其BIOS版本为v18。BIOS(基本输入输出系统)是计算机启动时首先运行的固件程序,它负责初始...

    七彩虹 CF-P8 MX 2.4A bios

    七彩虹 CF-P8 MX 2.4A bios

    CF-Root-SGS3-v6.0.zip_CF-Root-SGS3-V6.0_ROOT

    标题中的"CF-Root-SGS3-v6.0.zip_CF-Root-SGS3-V6.0_ROOT"指的是一款针对三星Galaxy S3 (SGS3) 设备的root工具包,版本为6.0。这个工具包的主要目的是使用户能够获取设备的root权限。在Android操作系统中,root权限...

    COMFAST CF-WU810N驱动 rtl8188eu-master.zip

    COMFAST CF-WU810N是一款常见的无线网卡,主要应用于个人电脑和小型网络环境,提供便捷的无线网络连接。在Linux操作系统中,设备驱动是连接硬件与系统的桥梁,对于无线网卡来说,合适的驱动程序是确保其正常工作的...

    CF-H2 GPS松下touchbook

    松下touchbook gps驱动程序注册表,电脑型号CF-H2

    七彩虹cf-p8 mx 2.4a bios 测试可以正常使用

    七彩虹cf-p8 mx 2.4a bios 测试可以正常使用

    COMFAST CF-912AC USB无线网卡驱动 官方版

    COMFAST CF-912AC USB无线网卡驱动,官方最新驱动,是连接电脑的必备组件,主要解决电脑无法识别问题,如果你有这款网卡,那就下载吧。参数品牌 COMFAST型号 CF-912AC类型 无线网卡接口 USB外置天线 无遵循标准 IEEE...

    松下Panasonic 笔记本 圆形触摸板驱动CF-N8 -N9 -N10 -S8 -S9 -S10

    2. 解压缩文件,通常会得到一个.exe或.inf格式的安装程序。 3. 双击安装程序,按照提示进行操作,同意许可协议,选择安装路径,并等待安装完成。 4. 安装完成后,可能需要重启计算机,让新驱动生效。 5. 如果有两个...

    QCA953x-CF-E320编程器固件_uboot-qca953x_

    标题中的“QCA953x-CF-E320编程器固件_uboot-qca953x”提到了两个关键元素:QCA953x和uboot-qca953x。QCA953x是高通公司(Qualcomm Atheros)推出的一款无线网络芯片,常用于路由器、接入点等设备。而“uboot”则是...

    Comfast CF-WU810N Linux驱动及安装说明.rar

    Comfast CF-WU810N是一款常见的无线网卡,主要设计用于在计算机上提供无线网络连接。在Linux操作系统中,设备驱动程序是至关重要的,因为它们允许操作系统与硬件进行通信。这款无线网卡在Linux上的驱动程序可能与...

    Cf-worker-pages-vless脚本,默认支持Chatgpt,支持workers与pages两种形式部署

    Cf-worker-pages-vless脚本,默认支持Chatgpt,支持workers与pages两种形式部署

    CF-955AX无线网卡LINUX驱动-自己修改

    支持内核版本5.15.0-106-generic-自己修改 关联博客:https://blog.csdn.net/weixi234/article/details/139004986?spm=1001.2014.3001.5502

    CF-Auto-Root

    2.将您的nexus 5调整到bootloader模式,具体的办法是先关机,然后在关机的状态下,同时按住电源和音量下键。 3.通过USB将nexus 5和电脑相连接。 4.下载nexus 5对应的CF-Auto-Root版本 节约您的时间,下载地址呈上...

    cf-w810n或cf-w815n for Mac 驱动10.15.7亲测有效

    安装方法: 1、必须要有有线网卡能上网,因为安装的时候,它要下载字库什么的...2、解压双击install.pkg按提示安装即可,超级简单,如果成功了后,在任务栏上,就有wifi信号了。现在发文件,就是用无线发送的,很nice的

    黑苹果wifi驱动CF-WU810N.rar

    2. **获取驱动**:从可靠来源下载CF-WU810N的驱动程序压缩包,确保与自己的硬件型号匹配。 3. **解压文件**:使用解压缩工具打开rar文件,提取出驱动程序文件。 4. **打开系统资源库**:在Finder中,按下`Shift+...

    PyPI 官网下载 | cf-plot-3.1.16.tar.gz

    《PyPI官网下载 | cf-plot-3.1.16.tar.gz——Python科学计算与可视化库解析》 PyPI(Python Package Index)是Python开发者的重要资源库,它提供了丰富的第三方Python库,使得开发者能够方便地下载和安装所需的模块...

    COMFAST CF-WU760NL无线网卡驱动 官方版

    CF WU760NL驱动是同型号150m无线网卡的最新驱动程序,CF WU760NL外置1根高增益天线,信号接收能力强,支持WPS加密,让你的网络使用更加安全,本款驱动适合xp/win7等系统,欢迎下载使用。COMFAST CF-WU760NL介绍...

    松下cf-18内置联通3g软件

    【松下CF-18内置联通3G软件详解】 松下CF-18是一款专为军事和专业领域设计的坚固型笔记本电脑,以其强大的耐用性和适应性而闻名。这款设备配备了丰富的功能,其中包括对3G网络的支持,使其在偏远或无Wi-Fi的环境下...

Global site tag (gtag.js) - Google Analytics