A Corrupt Mayor's Performance Art (线段树+二进制压缩)

DolphinScheduler工作流中ChunJun任务保存失败的深度解析与实战修复 本文深度解析了在DolphinScheduler工作流中创建ChunJun任务时遭遇“parameter invalid”保存失败的普遍问题。其根源在于前端表单的`customConfig`参数默认值与后端校验逻辑不匹配。文章提供了两种实战修复方案:一是修改前端源码并重新编译,二是热更新已部署的JS文件,并对比了其适用场景与风险,帮助用户彻底解决此集成障碍。 阅读详情

 A Corrupt Mayor's Performance Art


Corrupt governors always find ways to get dirty money. Paint something, then sell the worthless painting at a high price to someone who wants to bribe him/her on an auction, this seemed a safe way for mayor X to make money.

Because a lot of people praised mayor X's painting(of course, X was a mayor), mayor X believed more and more that he was a very talented painter. Soon mayor X was not satisfied with only making money. He wanted to be a famous painter. So he joined the local painting associates. Other painters had to elect him as the chairman of the associates. Then his painting sold at better price.

The local middle school from which mayor X graduated, wanted to beat mayor X's horse fart(In Chinese English, beating one's horse fart means flattering one hard). They built a wall, and invited mayor X to paint on it. Mayor X was very happy. But he really had no idea about what to paint because he could only paint very abstract paintings which nobody really understand. Mayor X's secretary suggested that he could make this thing not only a painting, but also a performance art work.

This was the secretary's idea:

The wall was divided into N segments and the width of each segment was one cun(cun is a Chinese length unit). All segments were numbered from 1 to N, from left to right. There were 30 kinds of colors mayor X could use to paint the wall. They named those colors as color 1, color 2 .... color 30. The wall's original color was color 2. Every time mayor X would paint some consecutive segments with a certain kind of color, and he did this for many times. Trying to make his performance art fancy, mayor X declared that at any moment, if someone asked how many kind of colors were there on any consecutive segments, he could give the number immediately without counting.

But mayor X didn't know how to give the right answer. Your friend, Mr. W was an secret officer of anti-corruption bureau, he helped mayor X on this problem and gained his trust. Do you know how Mr. Q did this?

Input
There are several test cases.

For each test case:

The first line contains two integers, N and M ,meaning that the wall is divided into N segments and there are M operations(0 < N <= 1,000,000; 0<M<=100,000)

Then M lines follow, each representing an operation. There are two kinds of operations, as described below:

1) P a b c
a, b and c are integers. This operation means that mayor X painted all segments from segment a to segment b with color c ( 0 < a<=b <= N, 0 < c <= 30).

2) Q a b
a and b are integers. This is a query operation. It means that someone asked that how many kinds of colors were there from segment a to segment b ( 0 < a<=b <= N).

Please note that the operations are given in time sequence.

The input ends with M = 0 and N = 0.
Output
For each query operation, print all kinds of color on the queried segments. For color 1, print 1, for color 2, print 2 ... etc. And this color sequence must be in ascending order.
Sample Input
5 10
P 1 2 3
P 2 3 4
Q 2 3
Q 1 3
P 3 5 4
P 1 2 7
Q 1 3
Q 3 4
P 5 5 8
Q 1 5
0 0
Sample Output
4
3 4
4 7
4
4 7 8

题意:给出1-n个墙,初始的墙颜色都是2号颜色,然后两个操作,一个是给出一个区间[a,b],和颜色c把这个区间颜色给改成c,另一个是给出区间[a,b],把这个区间里包含的颜色打印出来

思路:思路很容易想到是线段树,但是怎么储存这个颜色是个问题,还得是按递增顺序的,一开始想用数组存,最后返回指针,但是最后写乱了,指针满天飞,就崩了,后来知道了用二级制压缩,什么意思呢,说白了就是用二进制表示形式00001010100101(举个栗子),来替代数组,到时候通过左移位<<或者右移位>>来实现c号颜色的更改

举个栗子:0    0   0  00000001010……1010001(二进制)

                  30 29 28……                       7654321(颜色的号码)

即从左往右数的

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
#define maxn 1000100
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
typedef long long ll;
ll tre[maxn<<2],lazy[maxn<<2];//线段树的数组,懒惰标记数组
int n,m;
void Build(int l,int r,int rt){//建树 
	if(l==r){//到了叶子节点 
		tre[rt] = 2;//根据题意初始值为2 
		return;
	}
	int mid = l+r>>1;
	Build(lson);//左右进行递归建立左右子树 
	Build(rson);
	tre[rt] = tre[rt<<1] | tre[rt<<1|1];//返回给父亲两个儿子的信息,两个按位或就可以,这样两个儿子的信息就汇总在一起了 
}

void pushDown(int l,int r,int rt){//懒惰标记向下调整函数 
	lazy[rt<<1] = lazy[rt<<1|1] = lazy[rt];//把两个儿子懒惰标记上 
	tre[rt<<1] = lazy[rt];
	tre[rt<<1|1] = lazy[rt];//直接颜色覆盖,所以直接复制就可以 
	lazy[rt] = 0;//已经向下传递了,就可以取消父亲的懒惰标记了 
}

void Update(int a,int b,int c,int l,int r,int rt){//更新 
	if(a<=l&&r<=b){
		tre[rt] = 1<<(c-1);//更新的时候c号颜色,就是1从一号颜色左移c-1位到c号位置变成1 
		lazy[rt] = 1<<(c-1);//同理懒惰标记 
		return;
	}
	if(lazy[rt])pushDown(l,r,rt);//有懒惰标记向下传递 
	int mid = l+r>>1;
	if(a<=mid)Update(a,b,c,lson);//如果左子树有要查找的片段递归左子树 
	if(b>mid)Update(a,b,c,rson);//同理右边有要查找的找右子树 
	tre[rt] = tre[rt<<1] | tre[rt<<1|1];//修改完成汇总给父亲儿子信息 
}

int Query(int a,int b,int l,int r,int rt){
	if(a<=l&&r<=b){
		return tre[rt];//查询的时候找到相应区间直接返回值就可以 
	}
	if(lazy[rt])pushDown(l,r,rt);
	int mid = l+r>>1;
	ll ret = 0;
	if(a<=mid) ret |= Query(a,b,lson);//在查找返回的过程中直接汇总了信息|=等价于ret = ret | Query(); 
	if(b>mid) ret |= Query(a,b,rson);
	return ret;
}
int main(){
	int i;
	while(~scanf("%d%d",&n,&m)){
		if(n==0&&m==0)break;
		memset(tre,0,sizeof(tre));
		memset(lazy,0,sizeof(lazy));//数组初始化
		Build(1,n,1);//建树
		while(m--){
			int a,b,c;
			char op[2];//这里用个数组便于输入 
			scanf("%s",op);
			if(op[0]=='P'){
				scanf("%d%d%d",&a,&b,&c);
				Update(a,b,c,1,n,1);
			}
			else{
				ll ans;
				scanf("%d%d",&a,&b);
				ans = Query(a,b,1,n,1);
				int flag=0;
				for(i = 1; i <= 30; i++){//返回一个值后,然后按位进行一位一位的比较是1的话看看在几号位置就是存在几号颜色 
					if(((ans>>(i-1))&1)&&flag==0){
						printf("%d",i);
						flag = 1;
					}
					else if((ans>>(i-1))&1){
					    printf(" %d",i);
					}
				}
				puts("");
			}
		}
	}
	return 0;
}


多模态脑区细分图谱 HCP-MMP v1.0, Glasser et al. 2016 皮层和皮下区域,简写和全称对应关系 人类连接组计划多模态脑区细分图谱(HCP-MMP)提供了对人类大脑皮层区域的非常有用的细分(Glasser et al. 2016a, b)。图谱是多模态的,因为每个区域都是根据四个标准的组合定义的,包括结构(T1加权/T2加权髓鞘含量和皮层厚度图)、静息态功能连接、基于任务的激活和拓扑地形组织。HCP-MMP v1.0图谱包含每个半球180个皮层区域,基于210名参与者的分析。 阅读详情

相关推荐

fMRI脑影像特征提取——Pearson相关与低阶功能连接LOFC(dpabi+nilearn)

一个连接由节点和连接强度(边)组成。功能连接中的节点可以是单个体素,也可以是由脑图谱定义的脑区ROI。通常的做法是将脑图谱中多个或者全部ROI作为节点,或者是将脑图谱中单个ROI与全脑体素作为节点。定义连接强度(边),最常用的方式是Pearson相关,两个节点之间可能没有物理连接,但如果他们的BOLD信号同步性很强,则它们之间可能存在很强的功能上的协作,即很强的功能连接,这是一个很好的表征两个节点间关系的特征。

意疏的学习笔记 2万+

HDU 5023 A Corrupt Mayor's Performance Art (线段树)

Problem Description Corrupt governors always find ways to get dirty money. Paint something, then sell the worthless painting at a high price to someone who wants to bribe him/her on an auction, this

左眼皮跳跳 1854

Xilinx ZYNQ 7000学习笔记二(FSBL代码分析启动-汇编代码)

Xilinx ZYNQ 7000学习笔记

u011116085的博客 4246

HDU-A Corrupt Mayor's Performance Art【线段树+位运算】

A Corrupt Mayor’s Performance Art

Linoy 926

ConvLSTM时空预测实战代码详解

ConvLSTM代码复现

JaysonWong的博客 1万+

【2022KaliLinux】openvas/gvm 没有scan configs 或者是 scan config error “XXXXXXXXXXX”

gvm/openvas的configuration的scan config为空

zbossz的学习小分队 3604

[luogu1558][POJ2777]Count Color(线段树+二进制操作)

这道题很有意思

薇小薇 336

晶闸管选型参数,结构原理,工艺与注意问题总结

闸管(Thyristor)是一种半导体开关器件,也被称为可控硅整流器(SCR, Silicon Controlled Rectifier)。它可以在高电压和大电流条件下工作,常被用于交流电的控制和整流。本文对晶闸管的工作原理,结构特点,工艺流程,选型参数及设计注意事项进行总结。

fydar的博客 1281

B - A Corrupt Mayor's Performance Art HDU - 5023

题意:一组数列,有区间修改和区间询问两种操作 算法:线段树+状态压缩+区间更新 很明显区间更新的线段树,每次询问的不是颜色的个数,而是有哪些颜色,所以如何记录颜色就成了问题,首先确定的是颜色的种类数比较小,我开始想到的是每一个节点开一个30的bool数组但是担心会爆内存,实际上也不好实现,所以另外寻找了状态压缩的方法,把三十个颜色状态压缩成一个long long的数,因为 2 ^ 30 = 1...

Zephyr的博客 308

检索增强生成(RAG)、微调(Fine-tuning)与知识蒸馏(Knowledge Distillation):核心差异与技术选型指南

在自然语言处理(NLP)领域,大型预训练语言模型(如GPT、BERT系列)的崛起彻底改变了技术生态。面对实际业务场景中模型效果优化与资源效率平衡的永恒命题,开发者主要依赖三大技术路径:检索增强生成(Retrieval-Augmented Generation, RAG)、模型微调(Fine-tuning)和知识蒸馏(Knowledge Distillation)。本文将通过技术原理拆解、典型应用场景对比和实战选型策略三个维度,深入解析这三种技术的本质差异。

fudaihb的博客 1826

AgentScope 实战训练营-构建元规划智能体(Meta Planner Agent)—— 从 0 到 1 完整实现

本文介绍了基于AgentScope框架开发的元规划智能体(Meta Planner Agent)系统。该系统通过任务拆解和子代理编排机制,实现复杂任务的自动化处理。核心架构分为用户层、规划器层和子代理层,其中规划器作为"项目经理"负责任务分解、创建子代理并协调执行流程。关键技术包括AgentScope多智能体框架、DashScope大语言模型、PlanNotebook计划管理工具等。

program哲学 355

B - A Corrupt Mayor's Performance Art

题目描述:B - A Corrupt Mayor’s Performance Art Time Limit:1000MS Memory Limit:100000KB 64bit IO Format:%I64d & %I64u SubmitStatusPracticeHDU 5023 Appoint description: Description Corrupt gove

ruclion的专栏 401

通过WorkVisual连接KUKA机器人的具体方法

通过WorkVisual连接KUKA机器人的具体方法

Robot_PLC_HMI_Automation 6842

HDU 5023 A Corrupt Mayor's Performance Art (线段树区间更新,入门详解)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5023 题面: A Corrupt Mayor's Performance Art Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 100000/100000 K (Java/Others) Total Submis

David_Jett 836

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

HDU5023(A Corrupt Mayor‘s Performance Art)

A Corrupt Mayor's Performance Art Problem Description Corrupt governors always find ways to get dirty money. Paint something, then sell the worthless painting at a high price to someone who wants to bribe him/her on an auction, this seemed a safe way for m

weixin_43808717的博客 210

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

CSU 1855: Shut the Box 二进制状态压缩

Description Shut the Box is a one-player game that begins with a set of N pieces labeled from 1 to N. All pieces are initially “unmarked” (in the picture at right, the unmarked pieces are those in an

lifelike 434

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

HDU 5023 A Corrupt Mayor's Performance Art (线段树)

A Corrupt Mayor's Performance Art Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 100000/100000 K (Java/Others) Total Submission(s): 255    Accepted Submission(s): 114 Problem Descrip

u012150279的专栏 1106

HDU 5023 A Corrupt Mayor's Performance Art (线段树 位运算)

题意:长度为n的数组,每个点的颜色开始都是2,然后q次操作,操作1是把[L,R] 区间的颜色变成某个值C, 第二种是查询[L,R] 区间存在哪些颜色,并把颜色的编号输出( 按照字典序).(N 思路:因为C 代码: #include using namespace std; const int maxn = 1e6+5; int tree[maxn*4], lazy[maxn*

CillyB的博客 416

HDU 5023 A Corrupt Mayor's Performance Art(线段树+优美的位运算)

HDU 5023 A Corrupt Mayor's Performance Art(线段树+优美的位运算)

3542

HDU5023:A Corrupt Mayor's Performance Art(线段树区域更新+二进制)

http://acm.hdu.edu.cn/showproblem.php?pid=5023 Problem Description Corrupt governors always find ways to get dirty money. Paint something, then sell the worthless painting at a high price to someone...

weixin_33850890的博客 173

[HDU5023]A Corrupt Mayor's Performance Art

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 100000/100000 K (Java/Others) Problem Description Corrupt governors always find ways to get dirty money. Paint something, then sell the worthless p...

dxyinme-Zz 286

二进制状态压缩

1、取出nnn在二进制表示下的第kkk位(n&gt;&gt;k)&amp;1 2、取出nnn在二进制表示下的第0∼k−10∼k−10\sim k-1位(后kkk位)n&amp;((1&lt;&lt;k)-1) 3、第kkk位取反n^(1&lt;&lt;k) 4、第kkk位赋一n|(1&lt;&lt;k) 5、第kkk位赋零n&amp;(~(1&lt;&lt;k)) 数学技巧∀k∈[0,3...

algzjh的博客 586

Picture POJ - 1177(线段树+扫描线入门)

Picture POJ - 1177 A number of rectangular posters, photographs and other pictures of the same shape are pasted on a wall. Their sides are all vertical or horizontal. Each rectangle can be partiall...

codeswarrior的博客 2498

Atlantis HDU - 1542(线段树+扫描线入门)

Atlantis HDU - 1542 There are several ancient Greek texts that contain descriptions of the fabled island Atlantis. Some of these texts even include maps of parts of the island. But unfortunately, t...

codeswarrior的博客 1301

覆盖的面积 HDU - 1255(线段树+扫描线求二次重叠面积)

覆盖的面积 HDU - 1255 给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积.   Input 输入数据的第一行是一个正整数T(1&lt;=T&lt;=100),代表测试数据的数量.每个测试数据的第一行是一个正整数N(1&lt;=N&lt;=1000),代表矩形的数量,然后是N行数据,每一行包含四个浮点数,代表平面上的一个矩形的左上角坐标和右下角坐标,矩形的上下边...

codeswarrior的博客 700

Just a Hook(线段树)

Just a Hook In the game of DotA, Pudge’s meat hook is actually the most horrible thing for most of the heroes. The hook is made up of several consecutive metallic sticks which are of the same lengt

codeswarrior的博客 486
上一篇: Just a Hook(线段树)
下一篇: map结构体作为key值的使用
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值