树状数组基础

关于树状数组的讲解推荐《算法竞赛入门经典训练指南》

一维版本:

洛谷3374

分析:树状数组裸的模板题

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 using namespace std;
 5 const int maxn=500000+10;
 6 int c[maxn];
 7 int n,m;
 8 int lowbit(int x){
 9     return x&(-x);
10 }
11 void add(int x,int d){
12     while(x<=n){
13         c[x]+=d; x+=lowbit(x);
14     }
15 }
16 int sum(int x){
17     int ret=0;
18     while(x>0){
19         ret+=c[x]; x-=lowbit(x);
20     }
21     return ret;
22 }
23 int main()
24 {
25     cin>>n>>m;
26     memset(c,0,sizeof(c));
27     for(int i=1;i<=n;i++){
28         int x;
29         scanf("%d",&x);
30         add(i,x);
31     }
32     while(m--){
33         int num,a,b;
34         scanf("%d%d%d",&num,&a,&b);
35         if(num==1){
36             add(a,b);
37         }else{
38             printf("%d\n",sum(b)-sum(a-1));
39         }
40     }
41     return 0;
42 }
View Code

 二维版本:

vijos1512

分析:二维树状数组的裸题,注意面积的计算

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<string>
 5 #include<cmath>
 6 using namespace std;
 7 const int maxn=2000;
 8 int c[maxn][maxn];
 9 int n,m;
10 int lowbit(int x){
11     return x&(-x);
12 }
13 void add(int x,int y,int d){
14     for(int i=x;i<=n;i+=lowbit(i))
15         for(int j=y;j<=n;j+=lowbit(j))
16             c[i][j]+=d;
17 }
18 int sum(int x,int y){
19     int ret=0;
20     for(int i=x;i>0;i-=lowbit(i))
21         for(int j=y;j>0;j-=lowbit(j))
22             ret+=c[i][j];
23     return ret;
24 }
25 int main()
26 {
27     scanf("%d",&n);
28     memset(c,0,sizeof(c));
29     while(scanf("%d",&m)!=EOF){
30         if(m==3) break;
31         if(m==1){
32             int x,y,k;
33             scanf("%d%d%d",&x,&y,&k);
34             add(x+1,y+1,k);
35         }else{
36             int x1,y1,x2,y2;
37             scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
38             int cnt=sum(x2+1,y2+1)-sum(x1,y2+1)-sum(x2+1,y1)+sum(x1,y1);
39             printf("%d\n",cnt);
40         }
41     }
42     return 0;
43 }
View Code

 

转载于:https://www.cnblogs.com/wolf940509/p/6479178.html

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

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

相关文章

php pdo更新,php - 使用PDO和MySQL更新查询

我试图只用PDO编写更新查询&#xff0c;但我无法执行代码&#xff1f;try {$conn new PDO("mysql:host$hostdb; dbname$namedb", $userdb, $passdb);$conn->exec("SET CHARACTER SET utf8"); // Sets encoding UTF-8$conn->setAttribute(PDO::ATTR_…

jquery.easyui常用示例

消息框$.messager.alert("提示","法规重复标志更新成功&#xff01;");$.messager.confirm(Confirm,Are you sure you want to delete record?,function(r){ if (r){ alert(ok); } }); 翻页//初始化$(#pagination).pagination({total: actResult.Ro…

vue1升级到vue2的问题

router 不能用map方法了&#xff0c;需要改router的结构改为routers [ { // 当没有匹配路由时默认返回的首页 path:/index, component: index, authenticate:true }, { // 当没有匹配路由时默认返回的首页 path: /spa/, component: i…

python寻找字符串中的英文字符,python如何解析字符串中出现的英文人名?

这里有四个例子&#xff0c;结果来自google scholarstr1 "Jakes, William C., and Donald C. Cox. Microwave mobile communications. Wiley-IEEE Press, 1994."str2 "Schlegel, David J., Douglas P. Finkbeiner, and Marc Davis. \"Maps of dust infra…

win2003/XP删除桌面回收站

gpedit.msc 用户配置——管理模板——桌面——从桌面删除回收站——启用刷新桌面即可。

Spring Boot 学习笔记--整合Thymeleaf

1.新建Spring Boot项目 添加spring-boot-starter-thymeleaf依赖 1 <dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-thymeleaf</artifactId> 4 </dependency> 2.添加静态文件 根据…

mongo php update 写法,mongodb update 字符 操作

下面常用的update操作&#xff0c;用mongodb2.6.3版本测试的&#xff0c;官方发布的稳定版本2.4&#xff0c;建议用稳定版。 一&#xff0c;upsert表示如果有数据就不插入&#xff0c;没数据就插入 1&#xff0c;命令行下 db.peoples.update( //查找name等于tank的用户... { na…

js 打印

window.print(); 打印隐藏部分<style type"text/css" media"print">.noprint{display:none;}</style>

oracle 增加一个新分区,oracle 11g 新增分区

oracle 11g新增了间隔分区、虚拟列分区和引用分区。详细的介绍请查看官方文件&#xff1a;1. 间隔分区间隔分区是范围分区的一种扩展。在引入间隔分区之前&#xff0c;DBA 需要显式定义每个分区的值范围&#xff0c;随着分区值的增长可用分区会逐渐减少直到没有可使用的分区为止…

jquery.uploadify flash IE6上传无效

类似$().window&#xff0c;以div方式打开弹窗&#xff0c;弹窗中iframe中就是上传页面&#xff0c;页面加载时就加载上传页面会产生这个问题。解决办法&#xff1a;打开弹窗后再给iframe赋src值。

如何手动修改oracle表空间,ORACLE数据库创建和修改表空间

-建立表空间(oracle中的tablespace(表空间))CREATE TABLESPACE data01DATAFILE D:\oracle\ora92\oradata\db\DATA01.dbf SIZE 200MUNIFORM SIZE 128k;#指定区尺寸为128k,如不指定&#xff0c;区尺寸默认为64k--建立临时表空间CREATE TEMPORARY TABLESPACE temp_dataTEMPFILE D:…

dexpler的使用方法

https://www.abartel.net/dexpler/转载于:https://www.cnblogs.com/yuqt/p/6490848.html

jquery.uploadify参数

uploadify函数的参数为json格式&#xff0c;可以对json对象的key值的修改来进行自定义的设置&#xff0c;如multi设置为true或false来控制是否可以进行多文件上传&#xff0c;下面就来介绍下这些key值的意思&#xff1a; uploader &#xff1a; uploadify.swf 文件的相对路径&a…

Kaggle入门篇

Kaggle入门篇转载于:https://www.cnblogs.com/akrusher/articles/6492096.html

超链接js点击后页面向上滚动问题解决

超链接js点击后页面向上滚动问题解决 <a href"#" οnclick"fun();return false;"></a>

Oracle数据导入要多久,oracle数据库备份导入要注意的几个问题

oracle数据库备份导入要注意的几个问题(1)oracle数据库备份的导入对数据库的版本有要求&#xff0c;也即源数据库(导出产生备份的数据库)的版本要和目标数据库(导入数据库)的版本一致&#xff0c;否则可能导致导入失败。(2)备份中的用户名(数据库导出时所使用的用户)和导入数据…

BZOJ 4241 分块

思路&#xff1a; 考虑分块 f[i][j]表示从第i块开头到j的最大值 cnt[i][j]表示从第i块开始到序列末尾j出现了多少次 边角余料处理一下就好啦~ //By SiriusRen #include <cmath> #include <cstdio> #include <algorithm> using namespace std; const int …

common lisp 学习第一天 初步接触

http://common-lisp.net/project/lispbox/lispbox 集成了Emacs、Slime和CCL。解压后直接运行lispbox.bat即可//(quote x) 返回 x&#xff0c;我们简记为 x> (quote x)x> xx//(atom x) 当 x 是一个原子或者空表时返回原子 t&#xff0c;否则返回NIL。在 Common Lisp 中我们…

oracle数据泵导入分区表,数据泵导入分区表统计信息报错(七)

其实问题的引出是由于出现第一篇文章中描述的问题&#xff0c;不过随着问题的深入研究&#xff0c;挖掘出了一些隐藏的很深的问题&#xff0c;不过问题的研究也慢慢脱离了原本的问题。在解决了表统计信息锁定的问题后&#xff0c;在回过头看看导致第一篇文章中错误的具体原因。…

django ORM创建数据库方法

1、指定连接pymysql(python3.x) 先配置_init_.py import pymysqlpymysql.install_as_MySQLdb() 2、配置连接mysql文件信息 settings.py DATABASES {default: {ENGINE: django.db.backends.mysql, NAME: django_orm, #你的数据库名称USER: root, #你的数据库用户名PASSWOR…