HDU 1166 敌兵布阵【树状数组】
用树状数组很简单,太晚了,贴下代码睡觉去。。。
另,研究线段树的时候,发现网上流传着有几种不同的线段树,最正宗的是以单位区间为单位,只能处理线段;另外还有几种叶子结点是点的,这种也可以用来处理点,所以这题是可以用这种线段树做的。还搞不太清楚它们之间的关系。mark一下,明天再说。。。
代码
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
inline int Rint() {int x; scanf("%d", &x); return x;}
#define FF(x1, x2) for(int i=x1; i<x2; i++)
#define LOWBIT(x) x&(-x)#define MAXN 50002 //点数int c[MAXN];int getSum(int x)
{int sum=0;while(x>0){sum+=c[x];x-=LOWBIT(x);}return sum;
}void add(int i, int j)
{while(i<MAXN){c[i]+=j;i+=LOWBIT(i);}
}void sub(int i, int j)
{while(i<MAXN){c[i]-=j;i+=LOWBIT(i);}
}int query(int i, int j)
{return getSum(j)-getSum(i-1); //i-1
}void clear() {memset(c, 0, sizeof(c));}int main()
{int t = Rint();FF(1, t+1){clear(); //① 清空树状数组printf("Case %d:\n", i);int n = Rint();FF(1, n+1) //正整数N、正整数ai{int j = Rint();add(i, j);}char opt[10];while(scanf("%s", opt) && opt[0]!='E'){int i=Rint(); int j=Rint();switch(opt[0]){case 'Q': printf("%d\n", query(i, j)); break;case 'A': add(i, j); break;case 'S': sub(i, j); break;}}}
}
转载于:https://www.cnblogs.com/tclh123/archive/2011/08/05/6171762.html
HDU 1166 敌兵布阵【树状数组】相关推荐
- hdu 1166 敌兵布阵 树状数组
敌兵布阵 Time Limit: 2000/1000 ...
- hdu 1166 敌兵布阵 树状数组 模板题
这题是树状数组入门的一模板题,非常基础,被小白成为"赤裸裸"的入门题,哈哈,一个plus,一个sum全部搞定 #include<stdio.h> #include< ...
- HDU 1166 敌兵布阵 树状数组小结(更新)
树状数组(Binary Indexed Tree(BIT), Fenwick Tree) 是一个查询和修改复杂度都为log(n)的数据结构.主要用于查询任意两位之间的所有 元素之和,但是每次只能修改一 ...
- 【 HDU 1166】 敌兵布阵 树状数组从0到1
如果给你一个数组,让你求某个区间的和,你很自然会想到遍历一遍数组,复杂度是O(n),但是如果有多次询问呢,你也许会想到用前缀数组,通过O(n)的预处理,达到O(1)的查询,但是如果要更新某个元素的值呢 ...
- hdu1166敌兵布阵 树状数组裸题
树状数组裸题 动态更新区间内的点,动态查询区间和 敌兵布阵 ac代码 #include<iostream> #include<algorithm> #include<cs ...
- 杭电OJ 敌兵布阵 树状数组
是一道简单的树状数组的题,,是一道简单题.....题目: C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Der ...
- 树状数组板子题之一:hdu 1166 敌兵布阵
树状数组板子题之一:hdu 1166 敌兵布阵 题目链接:hdu 1166 敌兵布阵 Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手 ...
- HDU 1166 敌兵布阵(线段树:点更新,区间求和)
HDU 1166 敌兵布阵(线段树:点更新,区间求和) http://acm.hdu.edu.cn/showproblem.php?pid=1166 题意: 给你n个整数,然后给你多条命令,每条命令如 ...
- hdu 1166 敌兵布阵(单点更新)
hdu 1166 敌兵布阵(基本操作) 有三种操作:询问区间总和,增加某个兵营的兵的数目,减少某个兵营的兵的数目.实际上也只有两个. 在更新的时候,每到一个区间就把当前区间的sum增加对应的数目,到达 ...
- 【树状数组】HDU 1166 敌兵布阵
敌兵布阵 日常题目胡乱总结 是个裸的树状数组qwq 区间查询+单点修改 字符判断相等那个地方我开始用的单引号 ' ' 直接不通过编译QAQ 第一遍交没有在一组数据结束后清空c数组 WA的让我很懵逼 ...
最新文章
- EJB学习(四)——Enterprise Bean(企业Bean)和Entity Bean(实体Bean)
- SAFE: Similarity-Aware Multi-Modal Fake News Detection-学习笔记
- linux安装mysql出错( file /usr/share/mysql/czech/errmsg.sys from install of MySQL-server-5.5.31-2.el6.i6)
- 华为服务器如何用pe重装系统,教你华为u盘重装win10系统详细图文
- 虚拟机系列 | JVM运行时数据区
- oracle连接中出现错误ORA-12541,ORA-12514,ORA-01017的解决方法
- 大数据_Flink_Java版_数据处理_流处理API_Transform(3)_Reduce聚合算子---Flink工作笔记0031
- sstream用法(后续更新)
- java整人代码大全_给大家分享个整人代码。很实用
- 联想年报有看头:供应链展现韧性,PC迎来新机遇
- linux系统手机助手,手机助手Linux版下载
- 2022年对于李一男是关键的一年,这也将决定他的社会地位
- 七、VUE基础——悦听音乐播放器案例(vue+axios)
- 41家大公司年度福利比较 大公司福利档案揭秘
- PS从入门到精通第4节——祖传抠图技法
- 【uniapp基础篇】上传图片
- 西门子低代码平台通过Database Connector 连接Mysql 实现增删改查
- GCM与CCM的的规格和加解密过程
- flac是什么格式,flac转mp3怎么高效实现
- 【API爬虫】30分钟百万条新浪新闻信息爬取。python得极速之旅
热门文章
- 硬核浪漫还看焊武大帝
- 第十五届全国大学生智能车竞赛山东赛区比赛成绩和奖项
- view for easyui 后台模板html_Thinkphp6模板引擎循环标签(五)
- wxpython输入框_基于wxPython的GUI实现输入对话框(1)
- c语言节点导入数据编程,编程小白。用C语言计算SR E2E ARQ模式下节点的数据分析...
- java joptionpanel_JOptionPane用法--java
- mysql 5.7.16默认密码_(转)Ubuntu16安装mysql5.7未提示输入密码,安装后修改mysql默认密码...
- java架构升级_java架构之路(多线程)synchronized详解以及锁的膨胀升级过程
- 服务器php环境一键配置,phpstudy一键配置服务器环境教程
- vbsedit无法创建空文档_vue文档里你没捡起来的宝藏