zoukankan      html  css  js  c++  java
  • loj 10117 简单题(cqoi 2006)

    题目来源:CQOI 2006

    有一个 n 个元素的数组,每个元素初始均为 0。有 m条指令,要么让其中一段连续序列数字反转——011 变 0(操作 1),要么询问某个元素的值(操作 2)。

    例如当 n=20时,10条指令如下:

     

    操作回答操作后的数组
    1 1 10 N/A 11111111110000000000
    2 6 1 111111​​11110000000000
    2 12 0 11111111110​​00000000
    1 5 12 N/A 11110000001100000000
    2 6 0 111100​​00001100000000
    2 15 0 111100000011000​​00000
    1 6 16 N/A 11110111110011110000
    1 11 17 N/A 11110111111100001000
    2 12 1 111101111111​​00001000
    2 6 1 111101​​11111100001000

    输入格式

    第一行包含两个整数 n,m,表示数组的长度和指令的条数; 以下 m 行,每行的第一个数 t 表示操作的种类: 

    • t=1,则接下来有两个数 L,R,表示区间 [L,R] 的每个数均反转;
    • t=2,则接下来只有一个数i,表示询问的下标。

    输出格式

    每个操作 2 输出一行(非 0 即 1),表示每次操作 2 的回答。

     

    样例

    样例输入

    20 10
    1 1 10
    2 6
    2 12
    1 5 12
    2 6
    2 15
    1 6 16
    1 11 17
    2 12
    2 6

    样例输出

    1
    0
    0
    0
    1
    1
     
     

    数据范围与提示

    对于 50%的数据,1≤n≤10^3,1≤m≤10^4

    对于 100%的数据,1≤n≤10^5,1≤m≤5×10^1 保证l < r对于 100%100\%100% 的数据,1≤n≤105,1≤m≤5×1051le nle 10^5,1le mle 5 imes 10^51n105​​,1m5×105​​,保证 L≤RLle RLR。3​​,1m104​​; 对于 100%100\%100% 的数据,1≤n≤105,1≤m≤5×1051le nle 10^5,1le mle 5 imes 10^51n105​​,1m5×105​​,保证 L≤RLle RLR。

     
    *****树状数组区间修改,单点查询
     1 #include<cstdio>
     2 #include<cstring>
     3 #include<cmath>
     4 #include<algorithm>
     5 using namespace std;
     6 int i,j,n,m,r,l,t,tree[100005] = {0},daan;
     7 int lowbit(int p)
     8 {
     9     return p  & (-p);
    10 }
    11 void add(int p,int x)
    12 {
    13     while(p <= n)
    14     {
    15         tree[p] += x;
    16         p += lowbit(p);
    17     }
    18 }
    19 void zonghe(int l,int r,int x)
    20 {
    21     add(l,x);
    22     add(r + 1,-x);
    23 }
    24 int chaxun(int p)
    25 {
    26     int res = 0;
    27     while(p > 0)
    28     {
    29         res += tree[p];
    30         p -= lowbit(p);
    31     }
    32     return res;
    33 }
    34 int main()
    35 {
    36     scanf("%d %d",&n,&m);
    37     for(i = 1;i <= m;i++)
    38     {
    39         scanf("%d",&t);
    40         if(t == 1)
    41         {
    42             scanf("%d %d",&l,&r);
    43             zonghe(l,r,1);
    44         }
    45         else
    46         {
    47             scanf("%d",&l);
    48             daan = chaxun(l);
    49             if(daan % 2 == 1)
    50             printf("1
    ");
    51             else
    52             printf("0
    ");
    53         }
    54     }
    55     return 0;
    56 }
  • 相关阅读:
    开发者和设计师:为何我们不能好好相处?(转载)
    PHP ACCESS
    来自腾讯的session跨域,跨服代码
    php大括号妙用。
    php mysql 记录集的操作
    开始我的代码笔记
    收藏一个php用的一个页码按钮类
    修改过后的数字英文字符生成图片代码
    搜藏一点php session 常用方法
    php包含漏洞收集程序代码
  • 原文地址:https://www.cnblogs.com/rax-/p/9593393.html
Copyright © 2011-2022 走看看