zoukankan      html  css  js  c++  java
  • codevs 1191 数轴染色

    线段树,数据水。。。

    成段更新区间,然后每次dfs整棵线段树。

    #include<iostream>
    #include<cstdio>
    #define maxn 1000005
    using namespace std;
    struct tree
    {
    int left,right;
    int value;
    }node[maxn];
    int father[maxn],n,m,l,r,ans=0;
    void build(int i,int left,int right)
    {
    node[i].left=left;
    node[i].right=right;
    node[i].value=0;
    if (left==right)
    {
    father[left]=i;
    return;
    }
    int mid=(left+right)>>1;
    i=i<<1;
    build(i,left,mid);
    build(i+1,mid+1,right);
    }
    void modify(int i,int l,int r)
    {
    int left=node[i].left,right=node[i].right;
    if ((l==left) && (r==right))
    {
    node[i].value=1;
    return;
    }
    int mid=(left+right)>>1;
    if (r<=mid) modify(i<<1,l,r);
    else if (l>=mid+1) modify((i<<1)+1,l,r);
    else
    {
    modify(i<<1,l,mid);
    modify((i<<1)+1,mid+1,r);
    }
    }
    void ask(int i)
    {
    int left=node[i].left,right=node[i].right;
    if (node[i].value==1)
    {
    ans=ans+right-left+1;
    return;
    }
    if (left==right) return;
    else
    {
    ask(i<<1);
    ask((i<<1)+1);
    }
    }
    int main()
    {
    scanf("%d%d",&n,&m);
    build(1,1,n);
    for (int i=1;i<=m;i++)
    {
    scanf("%d%d",&l,&r);
    modify(1,l,r);
    ask(1);
    printf("%d ",n-ans);
    ans=0;
    }
    return 0;
    }

  • 相关阅读:
    spring
    SpringMVC 配置与使用
    基本MVC2模式创建新闻网站
    EL表达式
    JavaBeans介绍
    JSP简介
    Cookie与Session的异同
    过滤器的使用
    session的使用
    最长回文子串
  • 原文地址:https://www.cnblogs.com/ziliuziliu/p/5152517.html
Copyright © 2011-2022 走看看