zoukankan      html  css  js  c++  java
  • cf C. Knight Tournament

    http://codeforces.com/contest/357/problem/C

      1 #include <cstdio>
      2 #include <cstring>
      3 #include <algorithm>
      4 #define maxn 300010
      5 using namespace std;
      6 
      7 int n,m;
      8 int l1,r1,x1;
      9 struct node
     10 {
     11     int l,r;
     12     int cover;
     13 }tree[maxn*4];
     14 int x[maxn];
     15 
     16 void build(int i,int l,int r)
     17 {
     18     tree[i].l=l;tree[i].r=r;
     19     tree[i].cover=0;
     20     if(l==r) return ;
     21     int mid=(l+r)>>1;
     22     build(i<<1,l,mid);
     23     build(i<<1|1,mid+1,r);
     24 }
     25 void down(int i)
     26 {
     27     if(tree[i].l==tree[i].r) return ;
     28     if(tree[i].cover>0)
     29     {
     30         if(tree[i<<1].cover==0)
     31             tree[i<<1].cover=tree[i].cover;
     32         if(tree[i<<1|1].cover==0)
     33             tree[i<<1|1].cover=tree[i].cover;
     34         tree[i].cover=-1;
     35     }
     36 }
     37 void update(int i,int l,int r,int co)
     38 {
     39     if(tree[i].l==l&&tree[i].r==r)
     40     {
     41         if(tree[i].cover==0)
     42         {
     43             tree[i].cover=co;
     44         }
     45         return ;
     46     }
     47     down(i);
     48     int mid=(tree[i].l+tree[i].r)>>1;
     49     if(r<=mid)
     50     {
     51         update(i<<1,l,r,co);
     52     }
     53     else if(l>mid)
     54     {
     55         update(i<<1|1,l,r,co);
     56     }
     57     else
     58     {
     59         update(i<<1,l,mid,co);
     60         update(i<<1|1,mid+1,r,co);
     61     }
     62 }
     63 
     64 void search1(int i)
     65 {
     66     if(tree[i].l==tree[i].r)
     67     {
     68         x[tree[i].l]=tree[i].cover;
     69         return;
     70     }
     71     down(i);
     72     search1(i<<1);
     73     search1(i<<1|1);
     74 }
     75 
     76 int main()
     77 {
     78     while(scanf("%d%d",&n,&m)!=EOF)
     79     {
     80         build(1,1,n);
     81         memset(x,0,sizeof(x));
     82         for(int i=1; i<=m; i++)
     83         {
     84             scanf("%d%d%d",&l1,&r1,&x1);
     85             if(l1==x1){
     86             update(1,l1+1,r1,x1);
     87             }
     88             else if(r1==x1)
     89             {
     90                 update(1,l1,r1-1,x1);
     91             }
     92             else
     93             {
     94                 update(1,l1,x1-1,x1);
     95                 update(1,x1+1,r1,x1);
     96             }
     97         }
     98         search1(1);
     99         for(int i=1; i<=n; i++)
    100         {
    101             if(i==1)
    102             printf("%d",x[i]);
    103             else
    104                 printf(" %d",x[i]);
    105         }
    106         printf("
    ");
    107     }
    108     return 0;
    109 }
    View Code
  • 相关阅读:
    JS基础18-网站效果
    JS基础17-网站效果
    JS基础16-轮播图的实现(二维数组实现多变量同时滚动)
    JS基础15-事件监听
    JS基础14-对DOM的增改和删除工作
    JS基础13-DOM访问表格子元素的常用属性和方法
    python之路--装饰器函数
    python之路 函数进阶
    python之路 初始函数
    python之字符编码
  • 原文地址:https://www.cnblogs.com/fanminghui/p/3935030.html
Copyright © 2011-2022 走看看