Codeforces 707E 二维树状数组

水文地质人必备:用Origin Pro 2023手把手教你搞定Piper三线图(附数据模板) 本文详细介绍了如何使用Origin Pro 2023绘制专业级Piper三线图,适用于水文地质数据分析。从数据准备、百分比计算到图表参数设置,提供全流程指导,并附赠数据模板和样式预设文件,帮助用户快速掌握这一水文地球化学分析的核心工具。 阅读详情

给定n行m列的棋盘,棋盘上有k个连续的灯串,每个灯串的每个灯都有一个值,开启的时候获取这个值,关闭的时候是0,每个灯串的所有灯要么一起关,要么一起开。

m个询问,switch k,调整序号为k的灯串的开关状态,ask x,y,n,m,询问以(x,y)和(n,m)为对角顶点的矩形的值之和。

可以用二维的树状数组来维护这个棋盘,每个树状数组维护一行,计算的时候我们只需暴力求和。

对于switch操作,我们是不必每次都更新到我们的树状数组上的,因为switch完后未必查询,并且状态是摇摆的,也就是说可能有switch switch ask的情况,两次swicth等于没有,所以我们只需要在查询的时候更新树状数组,因此我们需要last数组维护上一次查询的时候的灯串状态,now数组维护现在的状态,查询的时候只要他们不同,就更新即可。

理论上最坏时间复杂度应该是修改一次查询一次交替进行,并且每次查询都包括所有行(不一定所有列,因为树状数组维护的是行,时间消耗主要在行数上),每次修改的灯串是装满棋盘的一个灯串。最坏时间复杂度应该是m/2*n*m*logn+m/2*n,也就是修改次数*元素个数(行数*列数)*单点修改时间logn+行树状数组查询时间(每行是O(1),那么总和就是m/2*n),算下来应该是1e10阶级的,但是cf能过,应该是数据不够强大。

#include<bits/stdc++.h>
#define ll long long
#define fr first
#define se second
#define x1 x_
#define x2 x__
#define y1 y_
#define y2 y__
using namespace std;

int lowbit(int x){return -x&x;}

struct tree_array
{
	ll tree[2005];
	ll getsum(int i)
	{
		ll ret=0;
		while(i)
		{
			ret+=tree[i];
			i-=lowbit(i);
		}
		return ret;
	}
	ll query_sum(int l,int r){return getsum(r)-getsum(l-1);}
	void add(int i,int k)
	{
		while(i<=2000)
		{
			tree[i]+=k;
			i+=lowbit(i);
		}
	}
}a[2005];

int n,m,k,cnt[2005],v[2005][2005];
bool now[2005],last[2005];
pair<int,int>pos[2005][2005];//pos[i][j]->第i条的第j个元素

void solve(int k)
{
	int base;
	if(last[k]) base=-1;
	else base=1;
	for(int i=1;i<=cnt[k];i++)
	{
		a[pos[k][i].fr].add(pos[k][i].se,base*v[pos[k][i].fr][pos[k][i].se]);
	}
}

ll query(int x1,int y1,int x2,int y2)
{
	ll ret=0;
	for(int i=x1;i<=x2;i++) ret+=a[i].query_sum(y1,y2);
	return ret;
}

int main()
{
	ios::sync_with_stdio(false);
	cin>>n>>m>>k;
	for(int i=1;i<=k;i++)
	{
		last[i]=now[i]=true;
		int t;cin>>t;
		while(t--)
		{
			int x,y;cin>>x>>y;
			pos[i][++cnt[i]]=make_pair(x,y);
			cin>>v[x][y];
			a[x].add(y,v[x][y]);
		}
	}
	int q;cin>>q;
	vector<int>v1(5);
	while(q--)
	{
		string s;cin>>s;
		if(s=="SWITCH")
		{
			int x;cin>>x;
			now[x]=!now[x];
		}
		else
		{
			for(int i=1;i<=k;i++)
			{
				if(now[i]!=last[i])
				{
					solve(i);
					last[i]=now[i];
				}
			}
			for(int i=1;i<=4;i++) cin>>v1[i];
			printf("%lld\n",query(v1[1],v1[2],v1[3],v1[4]));
		}
	}
 	return 0;
}

Halcon频域滤波实战:5分钟搞定傅里叶变换与功率谱分析(附完整代码) 本文提供Halcon频域滤波的实战指南,重点讲解如何利用傅里叶变换与功率谱分析快速解决图像处理难题。通过核心算子fft_image和power_real,演示了从空间域转换到频域、分析功率谱以定位周期性噪声,并构造滤波器进行精准去除的完整流程,附有可直接运行的代码示例。 阅读详情

相关推荐

浅谈“无人机通感一体化(ISAC)”

总的来说,通信和感知一体化是一个循序渐进的过程,是未来一个比较有潜力的发展场景,当然,需要研究的内容有很多,面临的挑战也有很多,但是它值得我们去探索和学习!

m0_69182322的博客 4200

Codeforces 1405E 二分套树状数组 + 树状数组

       给定一个序列,当 ai=ia_i=iai​=i,也就是对应位置的数字等于下标时,可以删除这个数。然后该数之后的数全体前移一位。        于是我们很容易可以得到结论,令 fif_ifi​ 为前 iii 个数可以删的个数。当前数可以删除当且仅当 i−ai≤fii-a_i\le f_ii−ai​≤fi​,且总能找到一个方法删掉它(简单证明,当同时存在 ai

weixin_43485513的博客 223

HighScore3.0实战指南:XRD物相分析从入门到精通(持续更新版)

本文提供HighScore3.0软件进行XRD物相分析的完整实战指南。从软件设置、数据导入、背景扣除、寻峰等预处理步骤,到核心的Search & Match物相搜索匹配、Rietveld精修定量,以及结果输出与常见问题排查,系统讲解了从入门到精通的全流程操作与核心技巧,帮助用户高效完成材料物相鉴定与分析工作。

weixin_29310605的博客 1043

codeforces--707E. Garlands(二维树状数组)

cf 707E题解参考题解#include <bits/stdc++.h> using namespace std;const double eps = 1E-8; const int dx[4] = {1, 0, 0, -1}; const int dy[4] = {0, -1, 1, 0}; const int inf = 0x3f3f3f3f; const int N = 1E5 + 7; #

许少y 1084

NHANES数据库实战:数据合并与加权分析技巧

本文详细解析了NHANES数据库实战中的核心技巧,重点阐述了数据合并与加权分析的正确方法。通过两个具体案例,手把手指导如何从数据下载、合并、权重计算到使用R语言survey包进行加权统计分析,避免因忽略复杂抽样设计而导致的研究偏倚,确保分析结果的准确性与可发表性。

weixin_29057065的博客 585

《雷达入门课 》系列文章(5)线性调频连续波雷达基本原理(第1讲)

S=B/Tc,是调频斜率。这里的混频公式推导过程比较简单,具体的混频过程如果感兴趣可以看下面粗略的推导,混频的本质就是频谱搬移,分为上变频和下变频,一般我们用下变频,即差频信号,因此需要一个低通滤波器即可滤出我们所需要的信号。答案就是因为中频信号能够映射出目标的距离信息,换句话说就是目标的距离不一样,返回的时间τ也就不一样,因此中频信号的频率大小也就不一样,可以说距离和中频信号是成映射关系的。中频只是表示信号频段的程度词,不是表示信号的状态词,意思就是说中频是指信号的频率不是很高,正好处于中间的地位。

【调皮连续波】雷达技术领域知识博主 6022

[二维树状数组] codeforces 707E. Garlands

E. Garlands题意:一个n∗m(<=2000∗2000)n*m(<=2000*2000)的矩阵上,给出k(<=2000)k(<=2000)条链,每条链长度len(<=2000)len(<=2000),保证相邻两个的四边有一边相临,链上有个开关,初始所有链为开,开的时候链上每个点有权值,关的时候权值为00。 然后有q(<=106)q(<=10^6)个操作,分两种: SWITCH i,按第i条

穹妹的家 1441

[RK3568 Android11] 教程之原厂SDK源码适配AIO-3568J板子跑起来

目录 一、前提 二、修改dts设备树 三、适配板子的dts 四、编译系统烧入固件验证 一、前提 因源码是直接使用原厂的SDK,没有使用firefly配套的SDK源码,所以手上这块firefly aio-3568j板子在硬件设计上与原厂使用的板子会有些差异;就是因为这些差异会导致新固件烧入后,debug串口打印许多错误信息,可能的话,系统还会崩溃掉,跑不起来; 主要差异在哪里呢?比如: ● DDR类型和品牌多样性; ...

~未来可期~ 1744

codeforces 707E Garlands (离线、二维树状数组)

目录 E. Garlands 题意: 解题过程: AC代码: E. Garlands 题意: 给出你一个n*m矩阵,矩阵中有一些灯泡,这些灯泡连成了k条互不重叠的链。每个灯泡都有一定的权值w,但是只有当灯泡打开的时候,才会产生贡献,刚开始所有的灯泡都是开着的...

dieyi9889的博客 236

如何选择深度强化学习算法:MuZero/SAC/PPO/TD3/DDPG/DQN/等算法

如何选择深度强化学习算法:MuZero/SAC/PPO/TD3/DDPG/DQN/等算法

丨汀、的博客 5222

9.1 机器人动力学建模

目录9.1 机器人动力学建模一、机器人动力学的基本概念1. 什么是机器人动力学?2. 动力学方程二、机器人动力学建模方法1. 拉格朗日方法2. 牛顿-欧拉方法三、Simulink 中的机器人动力学建模1. 使用 Simscape Multibody 建模示例:构建一个两连杆机械臂的动力学模型。步骤:2. 使用 Robotics System Toolbox 建模示例:构建一个六自由度工业机器人的动力学模型。步骤:四、示例:两连杆机械臂的动力学建模目标:步骤:五、结果分析1. 动态响应2. 参数敏感性六、总结

xiaoheshang_123的博客 626

树状数组(Garlands,codeforces 707e)

看了别人的代码写的。 不是官方解法。 所以速度比较慢。 把STL和结构体都去掉后才勉强过。 而且还钻了题目的空子。 在多达10^5个询问中,ASK却不会超过2000个。 因此这种解法才可行。 否则空间都开不下。 但比官方解法编程难度低。 离线算法。 用了二维树状数组。 #include #define maxn 2010 #define maxq 100001

xl2015190026的博客 592

ADAMS软件二次开发:ADAMS软件API接口详解

API(Application Programming Interface,应用程序编程接口)是一种允许不同软件应用程序之间进行交互的接口。在ADAMS软件中,API提供了与软件内部功能直接交互的能力,使用户能够通过编写自定义代码来扩展软件的功能,实现自动化操作或集成到其他系统中。ADAMS软件的API主要基于C++和Python,允许用户通过这些编程语言来访问和控制ADAMS的模型、仿真和分析功能。API接口的使用,需要对编程语言有一定的了解,同时也需要熟悉ADAMS软件的基本操作和模型结构。

kkchenjj的博客 1862

Codeforces 707E Garlands(二维树状数组)

给你n∗m的矩阵,然后k个花环,每个有leni个灯,然后一开始都是开的给你n*m的矩阵,然后k个花环 ,每个有len_i个灯,然后一开始都是开的 10W次操作,可以把这个花环的所有灯都变一个状态,然后求子矩阵内有多少亮的10W次操作,可以把这个花环的所有灯都变一个状态,然后求子矩阵内有多少亮的 求和的操作就2000次求和的操作就2000次 想了个20003的暴力肯定不行想了个2000^3的暴力

Miracle_ma的专栏 993

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

CodeForces707E.Garlands(二维树状数组)

E. Garlands time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standard output Like a...

Amove 360

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Codeforces 707 E. Garlands (二维树状数组)

题目链接:http://codeforces.com/problemset/problem/707/E 给你nxm的网格,有k条链,每条链上有len个节点,每个节点有一个值。 有q个操作,操作ask问你一个子矩阵的和是多少,操作switch将第i条链上的值0变原来的数or原来的数变0。 比较明显的二维数组数组暴力,注意的是ask操作不会超过2000,所以在switch操作的时候不能进行upd...

weixin_30716725的博客 136

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【codeforces 707E】Garlands

【题目链接】:http://codeforces.com/contest/707/problem/E 【题意】 给你一个n*m的方阵; 里面有k个联通块; 这k个联通块,每个连通块里面都是灯; 给你q个操作; 有以下两种类型 ①将第i个连通块里面灯取反 ②询问你(x1,y1)(x2,y2)这个矩形区域内灯的权值的和; 【题解】 要用到二维...

AWCXV 150

Codeforces 707E Garlands

Garlands 我怎么感觉好水啊。 因为询问只有2000组, 离线询问, 枚举联通块再枚举询问, 二维树状数组更新答案。 #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_pair #define PLL pair<L...

weixin_30624825的博客 97

HZNU 2019 Summer training 3

A - Brain's Photos CodeForces - 707A 题意:判断是不是彩色 题解:判断是否含有除 B W G 以外的英文字母即可 #include <iostream> #include <cstdio> #include <cmath> #include <cstring> #include <a...

weixin_30569153的博客 100

Codeforces Round #368 (Div. 2) E. Garlands 二维树状数组 暴力

E. Garlands 题目连接: http://www.codeforces.com/contest/707/problem/E Description Like all children, Alesha loves New Year celebration. During the celebration he and his whole family dress up the fir-tree...

weixin_34114823的博客 113

CodeForces 390E Inna and Large Sweet Matrix(树状数组改段求段)

树状数组仅仅能实现线段树区间改动和区间查询的功能,能够取代不须要lazy tag的线段树。且代码量和常数较小 首先定义一个数组 int c[N]; 并清空 memset(c, 0, sizeof c); 1、单点改动 : c[x] += y; 相应的函数是 change(x, y); 2、求前缀和 :  相应的函数是 int sum(x) 两种操作的复杂度都...

weixin_33877092的博客 125

2022.07.07 暑假集训 个人排位赛(二)

做出的题目多了,但是排名还是那样。对于题目的特殊样例情况没有完全顾及到,所以有一题错了很多发,有一题一直做不对,就卡一个点,后面心态爆炸不想做了。继续加油,过题状态比昨天好很多。...

Chaos蒟蒻的博客 187

RA8D2以太网GWCA模块:硬件错误计数器与中断寄存器深度解析

在嵌入式网络通信系统中,以太网控制器是连接微控制器与物理网络的核心外设,负责数据包的DMA传输与链路管理。其工作原理是通过描述符队列机制,实现CPU与网络硬件之间的高效数据搬运。为了确保通信的可靠性,现代以太网控制器普遍集成了硬件错误检测与中断管理单元,这对于诊断复杂的网络故障、提升系统可维护性具有关键价值。这些机制在诸如工业控制、车载网络等高实时性应用场景中尤为重要。本文以瑞萨RA8D2微控制器的以太网CPU代理(GWCA)模块为例,深入剖析其硬件错误计数器与中断寄存器的设计原理。通过解读TXDNEN(发

417

codeforces341D Iahub and Xors 二维树状数组

https://codeforces.com/problemset/problem/341/D 先考虑一维如何维护区间异或和和修改区间异或,要把每个值A[i]变成,然后a[i]=A[1] xor....A[i],于是区间异或[x,y]可以变成a[x]^val和a[y+1]^val ,那么如果要求区间异或和的话,就要考虑奇偶问题了,如果在奇数位i位置异或一个值,那么如果求[x,y]的异或和,x<=i<=y,y是偶数位的话,这个val相当于会被异或偶数次=0,如果y是奇数位的话,那么才会为val。

binarycopycode 275

Codeforces 1635 F. Closest Pair —— 树状数组,思维,有一丶丶东西

This way 题意: 给你长度为n的数组x(x[i]<x[i+1])和w,对于一对i,j,定义他们的val为∣xi−xj∣∗(wi+wj)|x_i-x_j|*(w_i+w_j)∣xi​−xj​∣∗(wi​+wj​)。 每次给你l,r,问你[l,r]中val最小为多少 题解: 第一次挑战28的题目,说实话还是不够难,感觉只有25左右难度。 一开始我想到的是笛卡尔树,但是不太对劲,因为它并不是区间这种东西。 接下来我想到的是斜率优化,然后我就开始写式子…然后就写不下去了。 由于点i一定会找w比它小的

天翼之城的博客 1544
上一篇: 树上启发式合并 洛谷U41492
下一篇: Codeforces 707C 数学
stdforces
博客等级 码龄4年 9粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值