P3372 【模板】线段树 1 树状数组

news2024/12/25 9:22:02

题目

在这里插入图片描述

思路

第一眼:树状数组暴力,区间和直接用前缀和做
好,70分
看来需要用数学推亿推了
树状数组的区间查询:查分
c 1 = a 1 , c 2 = a 2 − a 1 , c 3 = a 3 − a 2 . . . c i = a i − a i − 1 c_1=a_1,c_2=a_2-a_1,c_3=a_3-a_2...c_i=a_i-a_{i-1} c1=a1,c2=a2a1,c3=a3a2...ci=aiai1
特别地, a 0 = 0 a_0=0 a0=0
如果用c表示出a来,那么可以发现
a i = ∑ j = 1 i c j a_i=\sum_{j=1}^ic_j ai=j=1icj
所以得出前缀和
s u m i = ∑ j = 1 i ∑ k = 1 k c k sum_i=\sum_{j=1}^i\sum_{k=1}^kc_k sumi=j=1ik=1kck
= ( c 1 ) + ( c 1 + c 2 ) + . . . + ( c 1 + c 2 + . . . + c i ) =(c_1)+(c_1+c_2)+...+(c_1+c_2+...+c_i) =(c1)+(c1+c2)+...+(c1+c2+...+ci)
= i ∗ c 1 + ( i − 1 ) ∗ c 2 + . . . + 1 ∗ c i =i*c_1+(i-1)*c_2+...+1*c_i =ic1+(i1)c2+...+1ci
= i ∗ ( c 1 + c 2 + . . . + c i ) − ( 0 ∗ c 1 + 1 ∗ c 2 + . . . ( i − 1 ) ∗ c i ) =i*(c_1+c_2+...+c_i)-(0*c_1+1*c_2+...(i-1)*c_i) =i(c1+c2+...+ci)(0c1+1c2+...(i1)ci)
= i ∗ ∑ j = 1 i − i ∗ ∑ j = 1 i ( j − 1 ) ∗ c j =i*\sum_{j=1}^i-i*\sum_{j=1}^i(j-1)*c_j =ij=1iij=1i(j1)cj
然后分别用T1,T2存这两项
理论存在,实践开始

代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define lowbit(x) (x)&(-(x))
int n,m;
struct BIT{
	static const int M=1e5+5;
	int c[M];
	void add(int x,int k) { while(x<=n) c[x]+=k,x+=lowbit(x); }
	int query(int x) { int sum=0;while(x>0) sum+=c[x],x-=lowbit(x);return sum; }
}T1,T2;
signed main()
{
	cin>>n>>m;
	int a,c=0;
	for(int i=1;i<=n;i++){
		cin>>a;
		c=a-c;
		T1.add(i,c),T2.add(i,(i-1)*c);
		c=a;
	}
	while(m--){
		int if_case;
		cin>>if_case;
		int x,y,k;
		switch (if_case){
			case 1:cin>>x>>y>>k;T1.add(x,k),T1.add(y+1,-k),T2.add(x,k*(x-1)),T2.add(y+1,-k*(y+1-1));break;
			case 2:cin>>x>>y;int sq=y*T1.query(y)-(x-1)*T1.query(x-1);int sh=T2.query(y)-T2.query(x-1);cout<<sq-sh<<endl;break;
		}
	}
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/827784.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

echart常用图表配置

echart常用图表配置 柱状图3D柱状图效果代码 排行榜柱状图效果代码 排行榜反转柱状图效果代码 柱状图 3D柱状图 效果 代码 import { graphic } from echartsconst VALUE Array.from({ length: 24 }, () > Math.floor(Math.random() * (5000 - 1000)) 1000)const CubeLe…

Python:列表(list)与元组(tuple)

列表与元组 列表&#xff1a;list元组&#xff1a;tuple 比较直观的区分&#xff1a;列表是中括号"[ ]“&#xff0c;元组是小括号”( )"元组可以看成列表的只读形式 # 列表 list1 [hello, world] list2 [1, 2, 3, 4, 5] list3 ["a", "b", &…

面试必考精华版Leetcode2130.链表最大孪生和

题目&#xff1a; 代码&#xff08;首刷看解析 day22&#xff09;&#xff1a; class Solution { public:int pairSum(ListNode* head) {ListNode* slowhead;ListNode* fasthead->next;while(fast->next!nullptr){slowslow->next;fastfast->next->next;}//反转…

二、韦伯定律

二、韦伯定律 定义&#xff1a;即感觉的差别阈限跟随原来刺激量的变化而变化&#xff0c;而且变现为一定的规律性&#xff0c;用公式来表示&#xff0c;就是就是△Φ/ΦC&#xff0c;其中Φ为原刺激量&#xff0c;△Φ为此时的差别阈限&#xff0c;C为常数&#xff0c;又称为韦…

C语言的转义字符

转义字符也叫转移序列&#xff0c;包含如下&#xff1a; 转移序列 \0oo 和 \xhh 是 ASCII 码的特殊表示。 八进制数示例&#xff1a; 代码&#xff1a; #include<stdio.h> int main(void) {char beep\007;printf("%c\n",beep);return 0; }结果&#xff1a; …

腾讯云-宝塔Linux面板首次登陆操作 (精简教程)

购买服务器这里就略过了... 1. 腾讯云-服务器 2. 找到你的服务器, 点击进去 3. 概要 4. 应用管理 1. 面板首页地址 http://ip:面板端口/tencentcloud2. 面板端口 默认为8888&#xff0c;您可以在登录面板后修改面板端口( 提示&#xff1a;请前往防火墙页面放行面板端口)3. 用户…

“数智新应用”不再是口号,看汽车、医药、制造企业如何突出重围?

近日&#xff0c;以“释放数智生产力”为主题的 Kyligence 用户大会在上海前滩香格里拉大酒店成功举行。大会包含上午的主论坛和下午的 4 场平行论坛&#xff0c;并举办了闭门会议、Open Day 等活动。来自金融、零售、制造、医药等行业的客户及合作伙伴带来了超过 23 场主题演讲…

SpringCloud Gateway获取请求响应body大小

前提 本文获取请求、响应body大小方法的前提 : 网关只做转发逻辑&#xff0c;不修改请求、相应的body内容。 SpringCloud Gateway内部的机制类似下图&#xff0c;HttpServer&#xff08;也就是NettyServer&#xff09;接收外部的请求&#xff0c;在Gateway内部请求将会通过Htt…

【第一阶段】kotlin语言引用数据类型

Java语言中有两种数据类型 第一种&#xff1a;基本数据类型 如int double等 第二种&#xff1a;引用数据类型。如String kotlin只有一种数据类型&#xff0c;看起来都是引用数据类型&#xff0c;实际上编译器会在Java字节码中&#xff0c;修改成基本类型 //Java语言中有两种数…

Mr. Cappuccino的第56杯咖啡——Mybatis拦截器

Mybatis拦截器 概述应用场景项目结构实现分页查询其它拦截器的使用 概述 Mybatis允许使用者在映射语句执行过程中的某一些指定的节点进行拦截调用&#xff0c;通过织入拦截器&#xff0c;在不同节点修改一些执行过程中的关键属性&#xff0c;从而影响SQL的生成、执行和返回结果…

6.s081(Fall 2022)Lab2: system calls

文章目录 前言其他篇章参考链接0. 前置准备1. System call tracing (moderate)简单分析Hint 1Hint 2Hint 3Hint 4Hint 5测试 2. Sysinfo (moderate) 前言 好像没啥前言 其他篇章 环境搭建 Lab1:Utilities 参考链接 官网链接 xv6手册链接&#xff0c;这个挺重要的&#xff…

第2集丨Vue 江湖 —— Vue中的一些必备概念

目录 一、Object.defineProperty()1.1 属性描述符1.2 共享属性1.2.1 configurable1.2.2 enumerable 1.3 数据描述符属性1.3.1 value1.3.2 writable 1.4 访问器描述符属性1.4.1 get1.4.2 set1.4.3 注意点 1.5 案例1.5.1 数据描述符1.5.2 访问器描述符 二、Vue 模板语法2.1 插值语…

作为面试官,有些事想吐槽一下

作者&#xff1a;拭心 前段时间组里有岗位招人&#xff0c;花了些时间面试&#xff0c;趁着周末把过程中的感悟和槽点总结成文和大家讲讲。 简历书写和自我介绍 1.今年的竞争很激烈&#xff1a;找工作的人数量比去年多、平均质量比去年高。裸辞的慎重&#xff0c;要做好和好学…

npm发布包

1.npm 登录 在控制台输入命令 npm login 按提示输入用户名&#xff0c;密码&#xff0c;邮箱后登录 如果出现如下提示 需要将淘宝镜像源切换为npm源&#xff0c;删除或注释以下内容就行 2.发布 进入准备发布的代码的根目录下&#xff0c;输入命令 npm publish 3.删除已发…

《TCP IP 网络编程》第十五章

第 15 章 套接字和标准I/O 15.1 标准 I/O 的优点 标准 I/O 函数的两个优点&#xff1a; 除了使用 read 和 write 函数收发数据外&#xff0c;还能使用标准 I/O 函数收发数据。下面是标准 I/O 函数的两个优点&#xff1a; 标准 I/O 函数具有良好的移植性标准 I/O 函数可以利用…

Python入门二

目录&#xff1a; python封装与property装饰器python继承与类型检查python多态与superpython 模块与包错误与异常Debug 调试与分析python类型注解python数据类dataclasspython内置装饰器python装饰器学生信息管理系统 1.python封装与property装饰器 封装的概念 封装&#x…

深度学习各层负责什么内容?

1、深度学习——神经网络简介 深度学习(Deep Learning)(也称为深度结构学习【Deep Structured Learning】、层次学习【Hierarchical Learning】或者是深度机器学习【Deep Machine Learning】)是一类算法集合&#xff0c;是机器学习的一个分支。 深度学习方法近年来&#xff0c…

Expectation (Easy Version) 2023“钉耙编程”中国大学生算法设计超级联赛(5)hdu7330

Problem - 7330 题目大意&#xff1a;有n次游戏&#xff0c;每次游戏有a/b的概率获胜&#xff0c;且相互独立&#xff0c;如果当前赢了cnt次游戏&#xff0c;那么这次游戏会赢得的分数&#xff0c;问最后得分的期望 1<n<1e6;1<m,a<b<998244353 思路&#xff…

windows10 设置代理

场景&#xff1a;同一个办公室&#xff0c;只有A的电脑有权限访问网站 http://10.129.129.129:5601&#xff0c; 那办公室其他B,C同学想访问 http://10.129.129.129:5601&#xff0c;需要怎么处理&#xff1f; A 同学电脑安装代理软件&#xff1a; 1. 下载wproxy IMFirewall, …

d3dx9_30.dll如何修复,分享几种一键修复方法

d3dx9_30.dll是DirectX 的一个动态链接库文件&#xff0c;它包含了一些用于图形和游戏的函数和资源。在了解d3dx9_30.dll的解决方法和丢失原因之前&#xff0c;我们先来了解一下DirectX。DirectX是一套由微软开发的多媒体和游戏编程接口&#xff08;API&#xff09;集合。它提供…