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 ...
随机推荐
- share memory
header for public argument:shmdata.h #define TEXT_SZ 2048 struct shared_use_st { int written; char t ...
- java lambda filter写法
datas.stream().filter(m->!m.getSerialId().equals(setting.getSerialId())).collect(Collectors.toLis ...
- continuation line under-indented for visual indent
continuation line under-indented for visual indent 问题:使用flake8检验代码规范时报错:continuation line under-inde ...
- nginx填坑补充(nginx根据上下文跳转ip或者域名)
今天有一个需求,要根据上下文调到不同的ip或域名地址,使用上下文做域名跳转的时候,proxy_pass域名后面一定要带‘/’否则会把nginx的上下文自动带入,这样就行. location ^~ /d ...
- Openstack组件部署 — Nova overview
目录 目录 前文列表 前言 Compute service overview Nova 的组件 nova-api service nova-api-metadata service nova-comp ...
- 调试口:JTAG与SW-Debug Port
- Redis和SpringBoot整合RedisUtils类
一.引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...
- <Git>git学习
1.安装 分布式版本控制:工作电脑保存完整的代码,中央服务器挂了也可以使用 集中式版本控制:中央服务器挂了就凉凉 sudo apt-get install git git安装 检测安装成功 git 2 ...
- 51-Ubuntu-打包压缩-1-打包压缩简介
打包压缩是日常工作中备份文件的一种方式 在不同操作系统中,常用的打包压缩方式是不同的 Windows 常用 rar Mac 常用 zip Linux 常用 tar.gz
- 1、如何在列表,字典,集合种根据条件筛选数据?2、如何为元组中的每个元素命名,提高程序的可读性3、如何统计出序列中元素出现的频度4、如何根据字典中value的大小,对字典的key进行排序
一.数据筛选: 处理方式: 1.filter函数在py3,返回的是个生成式. from random import randint data = [randint(-100,100) for i in ...