题目链接:https://www.nowcoder.com/acm/contest/105/H

题意:两个操作,一个在[l,r]区间放颜色为c的球,一个统计在[l,r]里有多少不同颜色的球。

题解:哎,线段树嘛。板子嘛、把求和操作改一改嘛。当时没用lazy操作T了嘛。谢谢大佬的板子。小萌新知道lazy是个啥玩意儿了。emmm..最后统计一下1的个数就是答案啦。

 #include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
#define ll long long
struct data{
int l,r;
ll add;
ll sum;
}data[]; void build(int l,int r,int k){
data[k].l=l;
data[k].r=r;
data[k].add=;
data[k].sum=;
if(l==r){
return ;
}
int mid=(data[k].l+data[k].r) >> ;
build(l,mid,k*);
build(mid+,r,k*+);
} void pushdown(int k){
if(data[k].add==) return ;
data[k*].sum |= data[k].add;
data[k*+].sum |= data[k].add;
data[k*].add |= data[k].add;
data[k*+].add |=data[k].add;
data[k].add=;
} void update(int l,int r,int x,int k){
if(data[k].l==l&&data[k].r==r){
data[k].sum|=(ll)(1LL<<x);
data[k].add|=(ll)(1LL<<x);
return ;
}
pushdown(k);
int mid=(data[k].l + data[k].r)/;
if(r <= mid){
update(l,r,x,k*);
}else if(l > mid){
update(l,r,x,k*+);
}else{
update(l,mid,x,k*);
update(mid+,r,x,k*+);
}
data[k].sum=data[k*].sum | data[k*+].sum;
} ll query(int l,int r,int k){
if(data[k].l==l&&data[k].r==r){
return data[k].sum;
}
pushdown(k);
int mid=(data[k].l + data[k].r) / ;
if(r <= mid){
return query(l,r,k*);
}else if(l > mid){
return query(l,r,k*+);
}else{
return query(l,mid,k*) | query(mid+,r,k*+);
}
} int main(){
int n,m;
scanf("%d %d",&n,&m);
build(,n,);
while(m--){
int flag;
scanf("%d",&flag);
if(flag==){
int x,y,k;
scanf("%d%d%d",&x,&y,&k);
update(x,y,k,);
}else{
int x,y;
scanf("%d%d",&x,&y);
int ans = query(x,y,);
int cnt = ;
while(ans){
if(ans&)
cnt++;
ans = ans >> ;
}
cout<<cnt<<endl;
}
}
return ;
}

2018湘潭大学程序设计竞赛【H】的更多相关文章

  1. 2018年湘潭大学程序设计竞赛 H统计颜色

    链接:https://www.nowcoder.com/acm/contest/105/H来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  2. 2018湘潭大学程序设计竞赛【B】

    题目链接: https://www.nowcoder.com/acm/contest/105/B 题意: 给你一个字母矩阵,和测试组数,让你统计字符串的字符累计出现的次数,然后让你找出需要找的字符,这 ...

  3. 2018湘潭大学程序设计竞赛【E】

    题目链接:https://www.nowcoder.com/acm/contest/105/E 题意:给你美食种类和查询次数,告诉你美味度和价格,给你固定钱数,问你最多能吃到多少美味度的食物.(X真是 ...

  4. 2018湘潭大学程序设计竞赛【A】

    题目链接:https://www.nowcoder.com/acm/contest/105/A 题意:给你起始和结束的天时分,让你算总秒数. 题解:输入格式.注意long long.签到题. #inc ...

  5. 2018湘潭大学程序设计竞赛【D】

    题目链接:https://www.nowcoder.com/acm/contest/105/D 题意:就是数的fib表示方法.按权展开,又按二进制算出结果输出. 题解:贪心和数论吧.找到跟数最接近的f ...

  6. 2018湘潭大学程序设计竞赛【C】

    题目链接:https://www.nowcoder.com/acm/contest/105/C 题意:给你几个矩形的左上角和右下角的坐标,让你算有几个矩形相交. 题解: 每次都暴力标记一下炸弹区域里的 ...

  7. 2018年湘潭大学程序设计竞赛G又见斐波那契

    链接:https://www.nowcoder.com/acm/contest/105/G来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  8. 2018年湘潭大学程序设计竞赛 F - maze

    把点抽出来 跑个最短路就好啦. #include<bits/stdc++.h> #define LL long long #define pii pair<int,int> # ...

  9. 2018年湘潭大学程序设计竞赛 G- 又见斐波那契

    推一推矩阵直接快速幂. #include<bits/stdc++.h> #define LL long long #define pii pair<int,int> #defi ...

随机推荐

  1. JAVA学习之环境搭建

    了解到JAVA语言的跨平台性的原理是通过在不同的操作系统中安装对应版本的的JAVA虚拟机(JVM)实现 开发JAVA前必须先搭建JAVA环境: 1.JAVA开发工具包JDK(JAVA DEVELOPM ...

  2. adb devices unauthorized的解决办法

        Hi, trying to launch adb but get: daemon not running. starting it now on port * daemon started s ...

  3. 2019牛客多校第三场J-LRU management(map+双向链表)

    LRU management 题目传送门 解题思路 用map索引对应地址,用双向链表维护序列. 代码如下 #include <bits/stdc++.h> #define INF 0x3f ...

  4. 剑指offer——43数据流中的中位数

    题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值.我们 ...

  5. 调用API接口,查询手机号码归属地(2)

    使用pymysql pip install pymysql 创建mysql测试表 CREATE TABLE `userinfo` ( `id` int(20) NOT NULL AUTO_INCREM ...

  6. Alice's Classified Message HDU - 5558 后缀自动机求某个后缀出现的最早位置

    题意: 给定一个长度不超过 10W 的只包含小写字母的字符串,从下标 0 到 n−1.从下标 0 开始操作, 每次对于下标 pos查找下标 pos 开始的子串中最长的在其他地方出现过的长度,其他出现的 ...

  7. 在vue中获取不到canvas对象? 两种解决办法。

    1. mounted 钩子函数 初次肯定获取到id 2. 如果canvas父级用到了v-if 请改成v-show ,vue Dom节点 重新渲染导致methods 方法获取不到对象.

  8. 框架集 frameset

    框架集和内联框架的作用类似,都用于在一个页面中引入其他的外部的页面 框架集可以同时引入多个页面,而内联框架引入一个, 在h5标准中,推荐使用框架集,而不使用内联框架 使用 frameset 来创建一个 ...

  9. .Net平台调用の初识

    前言 工作过程中难免遇到混合编程,现在我们要谈的是C#和c++语言的编程.C#要调用C++的库目前可选主要有两种方式:Com技术和平台调用(P/Invoke).现在我们要谈的是P/Invoke技术. ...

  10. 批量Ping执行Bash脚本

    #!/bin/bash # Ping Batch Script # 连接超时时间 TMOUT= # 最大线程数 MAX_THREAD= # 保留内存大小 MIN_MEM= # 默认ip配置,可通过 - ...