HDU 4046 树状数组

Ubuntu22.04安装ROS1 代表使用 2 线程进行编译,可以根据 CPU 适当调整。如果出现小乌龟窗口,说明安装成功 🎉!启动成功,则打开另一个终端,测试。需要解决一些兼容性问题,因为。由于 Ubuntu 22.04。过程,确保成功安装。 阅读详情
/*******************************************************************************
   WA了N多次。。。结果是忘记初始化st数组了。。。悲剧得1B。。。
   解法就是考虑修改位置id的字符,观察左右"wbw"是否被更改,如果被更改了,那么就更新下,这个地方要
特别小心。。。具体可以见代码~
*******************************************************************************/
#include <iostream>
#include <functional>
#include <algorithm>
#include <complex>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <iomanip>
#include <sstream>
#include <utility>
#include <bitset>
#include <cctype>
#include <cstdio>
#include <limits>
#include <memory>
#include <string>
#include <vector>
#include <cmath>
#include <ctime>
#include <queue>
#include <stack>
#include <list>
#include <map>
#include <set>
using namespace std;

#define LOWBIT(x) ( (x) & ( (x) ^ ( (x) - 1 ) ) )
#define CLR(x, k) memset((x), (k), sizeof(x))
#define CPY(t, s) memcpy((t), (s), sizeof(s))
#define SC(t, s) static_cast<t>(s)
#define LEN(s) static_cast<int>( strlen((s)) )
#define SZ(s) static_cast<int>( (s).size() )

typedef double LF;
typedef __int64 LL;		//VC
typedef unsigned __int64 ULL;

typedef pair<int, int> PII;
typedef pair<LL, LL> PLL;
typedef pair<double, double> PDD;

typedef vector<int> VI;
typedef vector<char> VC;
typedef vector<double> VF;
typedef vector<string> VS;

template <typename T>
T sqa(const T & x)
{
	return x * x;
}
template <typename T>
T gcd(T a, T b)
{
	if (!a || !b)
	{
		return max(a, b);
	}
	T t;
	while (t = a % b)
	{
		a = b;
		b = t;
	}
	return b;
};

const int INF_INT = 0x3f3f3f3f;
const LL INF_LL = 0x7fffffffffffffffLL;		//15f
const double oo = 10e9;
const double eps = 10e-7;
const double PI = acos(-1.0);

#define  ONLINE_JUDGE

const int MAXN = 50004 << 1;

int test, n, m;
char ch[MAXN];
int st[MAXN];

bool judge(int ind)	//判断ind是为"wbw"中的b位置
{
	if (1 <= ind && ind < n - 1)	//显然ind=0和ind=n-1的时候是不存在"wbw"的
	{
		if ('b' == ch[ind] && 'w' == ch[ind - 1] && 'w' == ch[ind + 1])
		{
			return true;
		}
	}
	return false;
}
void update(int x, int inc)
{
	for (int i = x; i < MAXN; i += LOWBIT(i))
	{
		st[i] += inc;
	}
	return ;
}
int query(int x)
{
	int res = 0;
	for (int i = x; i > 0; i -= LOWBIT(i))
	{
		res += st[i];
	}
	return res;
}
void ace()
{
	int cas = 1;
	int op, x, y;
	char cc[4];
	for (scanf("%d", &test); test--; ++cas)
	{
		scanf("%d %d%*c%s", &n, &m, ch);
		//printf("ch: %s\n", ch);
		CLR(st, 0);
		for (int i = 1; i < n - 1; ++i)	//超级杯具的初始化。。。
		{
			if (judge(i))
			{
				update(i, 1);
			}
		}
		printf("Case %d:\n", cas);
		while (m--)
		{
			scanf("%d %d", &op, &x);
			if (0 == op)
			{
				scanf("%d", &y);
				if (x > y)
				{
					swap(x, y);
				}
				if (y - x + 1 < 3)
				{
					puts("0");
					continue ;
				}
				printf("%d\n", query(y - 1) - query(x));
			}
			else
			{
				scanf("%s", cc);
				if (cc[0] == ch[x])
				{
					continue ;
				}
				if ('w' == cc[0])	//以下全是坑
				{
					if (judge(x))
					{
						update(x, -1);
					}
					ch[x] = 'w';
					if (judge(x - 1))
					{
						update(x - 1, 1);
					}
					if (judge(x + 1))
					{
						update(x + 1, 1);
					}
				}
				else
				{
					if (judge(x - 1))
					{
						update(x - 1, -1);
					}
					if (judge(x + 1))
					{
						update(x + 1, -1);
					}
					ch[x] = 'b';
					if (judge(x))
					{
						update(x, 1);
					}
				}
			}
		}
	}
	return ;
}
int main()
{
#ifndef ONLINE_JUDGE
	freopen("in.txt", "r", stdin);
	freopen("out.txt", "w", stdout);
#endif
	ace();
	return 0;
}
/*******************************************************************************
Test Data...
4

5 2
bwbwb
0 0 4
0 1 3

5 5
wbwbw
0 0 4
0 0 2
0 2 4
1 2 b
0 0 4

11 11
wbwbbwbwbwb
0 0 10
0 0 1
0 0 2
0 1 2
0 1 3
0 1 5
0 1 6
0 1 7
0 2 6
0 2 7
0 2 10

9 10
bwbbwbwbw
0 2 6
0 2 5
0 2 7
*******************************************************************************/

从叶片之舞到数据之眼:净空雷达如何重塑风电安全与效率的边界 净空雷达通过激光或毫米波技术实现风机叶片与塔筒间距离的毫米级实时监测,极大提升了风电场在极端天气下的安全性与运营效率。这项技术不仅预防扫塔事故,还通过数据可视化与智能分析赋能叶片健康管理和发电优化,成为风电数字化运维的核心基础设施。 阅读详情

相关推荐

2D Nesting Defining a CSV File of Part Data

若。

qq_36560674的博客 1849

HDU-4046 Panda 树状数组解法

/ 如果修改前没有爱, 判断一下修改后有没有爱, 有的话就维护树状数组。// 如果修改前是 bwb, 那么现在是bbb, 维护树状数组。// 维护树状数组和爱判断数组。bool judge(int p){ // 爱判断 函数。

wepco的博客 219

TCP协议中ARQ自动重传的三种实现方式对比(含SACK详解)

本文深入解析TCP协议中ARQ自动重传的三种实现方式,包括停止-等待、回退N步和选择重传协议,特别详细介绍了SACK机制的工作原理和优势。通过对比分析各协议的效率、复杂度和适用场景,为网络通信中的可靠性传输提供了实用的选型指南。

weixin_30776273的博客 462

hdu_4046_Panda(树状数组)

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4046 题意:一大堆篇幅介绍,跳过直奔主题,让你寻找给定区间的“wbw”的个数。 题解:直接上树状数组,改变字符后对应改变3个值就行,注意的是询问 [l,r],应该对应输出的是[l+1,r]。因为sum[l+1]记录了a[l-1],a[l],a[l+1]。 #include<cstd...

weixin_30879169的博客 138

Nacos2.X 源码分析:为订阅方推送、服务健康检查、集群数据同步、grpc客户端服务端初始化

而Nacos2.X 从http请求改为了grpc请求的方式了,在健康检查这方面就是基于长连接来实现的。客户端发送心跳是在构建grpc连接时会有一个线程每隔5s发送一次,NacosClient端发送心跳的代码在。我们能大致猜测:当一个服务的实例进行了更新,那么是不是应该推送给所有订阅了该服务的客户端?当我订阅了某个服务,是不是应该将该服务信息推送给我?在服务实例检查检查流程中,如果出现了要注销的服务实例就会发布。在服务发现时,进行订阅服务的最后会发布一个。服务注册与服务订阅流程中发布的事件最终会被。

qq_44027353的博客 1594

Sigrity XtractIM实战:5步搞定IC封装宽带模型提取(附BGA案例)

本文通过一个典型BGA封装案例,详细介绍了使用Cadence Sigrity XtractIM工具进行IC封装宽带模型提取的五步实战流程。内容涵盖从环境准备、参数设置、结果验证到模型导出的完整操作,重点阐述了如何利用XtractIM生成高精度、紧凑的宽带SPICE模型,以解决高速电路设计中因封装模型不准导致的信号与电源完整性问题,助力工程师提升仿真精度与设计效率。

a1b2c的博客 320

HDU 4046 Panda 树状数组

题意:给你一个字符串,由'w' 和 'b' 组成,对该字符串有俩个操作, 当输入为0 a, b时,询问区间[a,b] 内有多少个串 为 "wbw"; 当输入为1,k,,ch时,将下标为k的字符改为字符ch; #include #include using namespace std; int n, m; int c[60000]; char str[60000]

1509

单细胞基因可视化之热图的根本改造2

我们前面已经说过了单细胞marker/或者其他任意基因的热图的简单修饰(单细胞基因可视化之热图改造修饰1),仅仅是基于颜色和DoHeatmap函数的参数修饰。那么要对热图进行根本的改造,关键点在于提取表达矩阵,然后对分组进行注释,就可以使用heatmap或者ComplexHeatmap来做图了。 首先计算marker基因,然后选择自己需要展示的基因。 library(Seurat) library(stringr) library(dplyr) all.markers <- Find

qq_42090739的博客 6676

hdu 4046 Panda 线段树 单点修改 求区间010个数

Problem Description When I wrote down this letter, you may have been on the airplane to U.S. We have known for 15 years, which has excee

kongming_acm的专栏 813

【OpenClaw企业级智能体实战】第16篇:电商“龙虾”掘金记:用OpenClaw实现小红书/抖音/淘宝全自动矩阵运营(2026实测版)

2026年,OpenClaw(小龙虾)已成为电商运营的核心效率工具——从公众号文案3分钟生成到TikTok爆款视频1小时复刻,从多平台内容同步到自动比价加购,彻底重构了电商运营的工作模式。本文基于真实商业案例(元岳科技、TikTok跨境卖家、淘宝MCP工具),系统拆解电商智能体的落地路径:先详解OpenClaw在电商场景的核心原理与变现模式(代部署、模板售卖、轻定制、内容套利),再提供阿里云/本地双部署方案,完整实现小红书/抖音/淘宝的自动化运营(热点抓取、内容生成、多平台分发、数据分析)。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2294

模型实战(16)之StrongSort (OSNET)配合YOLOv5、v7、v8 实现多目标跟踪详解

StrongSort (OSNET)配合YOLOv5、v7、v8 实现多目标跟踪详解

yohnyang的博客 1770

hdu 4046(树状数组)

题意:有一个字符串,由字母w和b构成,然后有q次询问,0 a b 表示下标a到b出现了多少个wbw,重叠也算,1 a c 表示把下标a处的字母变为c。0操作每次都有输出。 题解:树状数组类型题,主要输出注意边界Sum(r - 1) - Sum(l),因为c[i]是包含str[i - 1]、str[i]、str[i +1]三个字符得到的,所以当询问[l , r]的答案时,应该右边界是r - 1,左边

俯瞰风景 686

在 RAP 里把编号这件事做得既优雅又合规:Early Numbering 与 Late Numbering 的落地指南

本文探讨了 SAP RAP 框架中的三种主键编号策略及其适用场景。文章首先指出传统 ABAP 应用中主键处理的局限性,详细分析了早期编号(外部/内部)和延迟编号的差异,强调延迟编号在避免业务断号方面的优势。通过 Partner 业务对象案例,文章演示了延迟编号的实现方法,包括行为定义配置、保存类实现和编号分配逻辑。同时指出测试中常见的校验陷阱,并提醒生产环境应避免简单的 MAX+1 方案,建议采用原子取号机制确保并发安全。全文从业务合规性和技术实现两个维度,为 RAP 应用的编号策略选择提供了实用指导。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1847

hdu 4046 树状数组

View Code #include#includestring.h>int c[50010];char str[50010];int n,m;int lowbit(int x){ return x&(-x);}void update(int x,int d){ while(x { c[x]+=d; x+=lowbit(x); }}int

努力奋斗才能梦想成真 641

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

hdu4046panda

http://acm.hdu.edu.cn/showproblem.php?pid=4046 单点更新,区间求和,可以用树状数组,存wbw字符的组合#include <iostream> #include <cstdio> #include <cstring> using namespace std;const int maxn=50005; int c[maxn]; int n; char le

skymeteorite 446

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

HDU 4046【树状数组】

题目:Panda 题意: 长长一篇情书纯是忽悠选手们的。给一连串由wb组成的字符中,从中找出"wbw"子串个数,有两种操作,操作0,L,R,询问L~R子串内包含"wbw"的个数。操作1,k,ch,将第k个字符更换为ch。 解题思路: 带着绵绵情意看完了整个题目后就崩出树状数组了,很明显啊,动态更改值,动态个数。sum(i)表示1-i字符串内包含"wbw"子串个数,则对第...

weixin_30588827的博客 97

HDU 4046 Panda (树状数组)

题意:给定一个长度为5W的字符串,只包含字母w或者b,现在有1W个操作,0,l,r表示每次询问l,r区间内有多少连续的“wbw”;  1,i,c表示将第i个位置上的字符修改成字符c 分析: 树状数组的单点更新:求区间内有多少连续的"wbw",可以找出所有的“wbw”,用三个数组pre,mid,suc分别标记好,第i个位置的字符能否作为前缀w,中间的b或者后缀w,字符b所在的位置值更新+1

Paradiser 1038

HDU(4046)树状数组入门题

ACM练习

sagiri77iloveu的博客 421

hdu 4046 树状数组

#include #include #define N  51000 char s[N]; int a[N],n; int number(int x) { return x&-x; } void creat(int x,int k) { int i; for(i=x;i    a[i]+=k; } int sum(int x) { int su=0,i; for(i=

晴朗的博客 574

hdu4046(树状数组)

Panda Time Limit: 10000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3904    Accepted Submission(s): 1231 Problem Description When I wrote down t

yypurpose的博客 313

HDU4046--Panda(树状数组)

Panda Time Limit: 10000/4000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3343Accepted Submission(s): 1075 Problem Description When I wrote dow...

ddqb3235的博客 159

HDU 4046 Panda [树状数组]【数据结构】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4046—————————————————————.PandaTime Limit: 10000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3439 Accepted

Tabris的博客 420

HDU 4046 Panda(树状数组)

Panda Time Limit: 10000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2838    Accepted Submission(s): 945 Problem Description When I wrote d...

weixin_34183910的博客 124

Panda HDU - 4046【树状数组】【一道需要极度细心的题】

  很多博主说这不过是一道树状数组或者线段树的水题,可我并不这么认为,这道题让我更好的理解了关于树状数组的更新函数「uppdate ( )」,所以我觉得这是一道很不错的题,至少在了解树状数组这一块确实如此。 先发一下这题的题面吧(题面有点小清新——如果翻译成中文的话):直接跳转到题目的传送门 (我比较的懒,所以不去看英文,直接上翻译后的文本) 问题描述 当我写下这封信时,你可能已经乘飞机去...

既然弱小,就只顾变强就是了 288

hdu 4046 Panda 解题报告

hdu  4046  Panda    解题报告 题目大意,输出入一行字符串,用两种字符b,w;  如果连续三个字符是wbw,那么就代表我爱你,问一行字符串中能有多少个我爱你!   注:wbwbw视为两个! 然后又询问和修改!    数据规模:字符串长度n=5W,询问1W; 典型的树状数组或者用线段树就可以做!  注意一个字符的修改会影响到他自身或者右边相邻的两位,用树状数组时,getsu

站稳脚跟学做人! 1015
上一篇: Linux文件解压命令汇总(持续更新)
下一篇: HDU 4034 图论 Floyd
codeforces_sphinx
博客等级 码龄15年 32粉丝 75原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值