2018湘潭大学程序设计竞赛【H】
题目链接: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】的更多相关文章
- 2018年湘潭大学程序设计竞赛 H统计颜色
链接:https://www.nowcoder.com/acm/contest/105/H来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...
- 2018湘潭大学程序设计竞赛【B】
题目链接: https://www.nowcoder.com/acm/contest/105/B 题意: 给你一个字母矩阵,和测试组数,让你统计字符串的字符累计出现的次数,然后让你找出需要找的字符,这 ...
- 2018湘潭大学程序设计竞赛【E】
题目链接:https://www.nowcoder.com/acm/contest/105/E 题意:给你美食种类和查询次数,告诉你美味度和价格,给你固定钱数,问你最多能吃到多少美味度的食物.(X真是 ...
- 2018湘潭大学程序设计竞赛【A】
题目链接:https://www.nowcoder.com/acm/contest/105/A 题意:给你起始和结束的天时分,让你算总秒数. 题解:输入格式.注意long long.签到题. #inc ...
- 2018湘潭大学程序设计竞赛【D】
题目链接:https://www.nowcoder.com/acm/contest/105/D 题意:就是数的fib表示方法.按权展开,又按二进制算出结果输出. 题解:贪心和数论吧.找到跟数最接近的f ...
- 2018湘潭大学程序设计竞赛【C】
题目链接:https://www.nowcoder.com/acm/contest/105/C 题意:给你几个矩形的左上角和右下角的坐标,让你算有几个矩形相交. 题解: 每次都暴力标记一下炸弹区域里的 ...
- 2018年湘潭大学程序设计竞赛G又见斐波那契
链接:https://www.nowcoder.com/acm/contest/105/G来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...
- 2018年湘潭大学程序设计竞赛 F - maze
把点抽出来 跑个最短路就好啦. #include<bits/stdc++.h> #define LL long long #define pii pair<int,int> # ...
- 2018年湘潭大学程序设计竞赛 G- 又见斐波那契
推一推矩阵直接快速幂. #include<bits/stdc++.h> #define LL long long #define pii pair<int,int> #defi ...
随机推荐
- Java-Class-@I:io.swagger.annotation.ApiOperation
ylbtech-Java-Class-@I:io.swagger.annotation.ApiOperation 1.返回顶部 2.返回顶部 1. package com.ylbtech.api. ...
- Naive RNN vs LSTM vs GRU、attention基础
原文地址:https://www.jianshu.com/p/b8653f8b5b2b 一.Recurrent Neural Network 二.Naive RNN Naive RNN更新参数时易出现 ...
- POJ3630-Phone List-Trie字典树模板题
Given a list of phone numbers, determine if it is consistent in the sense that no number is the pref ...
- Spring Boot多数据库配置
#datasourcespring.datasource.url=jdbc:mysql://120.26.246.185:3306/gaea?&useSSL=falsespring.datas ...
- docker container 的操作
删除所有退出的容器 docker container rm $(docker ps -aq)
- JSON数组对象和JSON字符串的转化,map和JSON对象之间的转化
这种用法包括前端和后端: 前端: 1. 转化为JSON对象方便操作 var jsonObj = JSON.parse(str); 得到的是一个json数组对象,可以通过 for (var p in j ...
- 牛客网多校训练第八场A All one Matrix
题目链接:https://ac.nowcoder.com/acm/contest/888/A 题意:求出有多少个不被包含的全1子矩阵 解题思路:首先对列做处理,维护每个位置向上1的个数,然后我们从最后 ...
- Level DB 小调研
一. 概况: 1. 背景: 随着信息技术的高速发展,数据存储量和流量呈现爆炸式增长.目前百度统计日 PV(日点击量)已超过 75 亿次,中国网民在百度上进行50 亿次的搜索请求,百度贴吧日 PV 十亿 ...
- 2018-2-13-win10-edge扩展
title author date CreateTime categories win10 edge扩展 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17:23 ...
- 组合,模板,bolck块
如果前面和后面的变量名相同,则后面的变量名会覆盖前面的变量名 模板可以多次使用,只需要将is指定template的name,就可以重复使用该模板,只需要将不同的item值赋值给data就可以实现. 可 ...