栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Vases and Flowers(二分+线段树

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Vases and Flowers(二分+线段树

#include
using namespace std;
const int N=5e5+10;
int t,n,m;
struct node{
    int l,r,val,lazy;
}tr[N<<2];
void pushup(int p){
    tr[p].val=tr[p<<1].val+tr[p<<1|1].val;
}
void pushdown(int p){
    if(tr[p].lazy!=-1){
        tr[p<<1].lazy=tr[p<<1|1].lazy=tr[p].lazy;
        tr[p<<1].val=tr[p].lazy*(tr[p<<1].r-tr[p<<1].l+1);
        tr[p<<1|1].val=tr[p].lazy*(tr[p<<1|1].r-tr[p<<1|1].l+1);
        tr[p].lazy=-1;
    }
}
void build(int p,int l,int r){
    tr[p]={l,r,r-l+1,-1};
    if(l==r){
        tr[p].val=1;
        return ;
    }
    int mid=(l+r)>>1;
    build(p<<1,l,mid);
    build(p<<1|1,mid+1,r);
}
void update(int p,int l,int r,int val){
    if(l<=tr[p].l&&tr[p].r<=r){
        tr[p].lazy=val;tr[p].val=val*(tr[p].r-tr[p].l+1);
        return ;
    }
    int mid=(tr[p].l+tr[p].r)>>1;
    pushdown(p);
    if(mid>=l) update(p<<1,l,r,val);
    if(mid+1<=r) update(p<<1|1,l,r,val);
    pushup(p);
}
int query(int p,int l,int r){
    if(l<=tr[p].l&&tr[p].r<=r){
        return tr[p].val;
    }
    int mid=(tr[p].l+tr[p].r)>>1;
    int ret=0;
    pushdown(p);
    if(l<=mid) ret+=query(p<<1,l,r);
    if(mid+1<=r) ret+=query(p<<1|1,l,r);
    pushup(p);
    return ret;
}
int solve1(int x){
    int l=x,r=n;
    while(l>1;
        if(query(1,x,mid)>0) r=mid;
        else l=mid+1;
    }
    return l;
}
int solve2(int x,int nd){
    int l=x,r=n;
    while(l>1;
        if(query(1,x,mid)>=nd) r=mid;
        else l=mid+1;
    }
    return l;
}

int main(){
    scanf("%d",&t);
    while(t--){
        scanf("%d%d",&n,&m);
        build(1,1,n);
//        cout<
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/316322.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号