HDU 4031 树状数组 区间更新及点询问

【020】基于51单片机智能路灯系统Proteus仿真与实物设计 阅读详情
/*******************************************************************************
    去年成都赛区网络赛一道题,树状数组在区间更新中的应用。树状数组一般支持的是改点,查区间,但
是这道题要求的是改区间,查点,这就要变通一下,具体可以看代码,另外要考虑的一个问题是,如何统计?
这里的处理方法就是把总共的攻击次数-防御的次数,因为对单个点的询问可能有多次,所以为每个点都设
定一个游标来优化时间~
*******************************************************************************/
#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 ll(const T & x) {return x << 1;}
template <typename T>
T rr(const T & x) {return x << 1 | 1;}
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 = 20004;

int test, n, q, t;
int tree[MAXN];
int crs[MAXN], def[MAXN];
vector<PII> vp;

void updateBIT(int x, int inc)
{
	for (int i = x; i > 0; i -= LOWBIT(i))
	{
		tree[i] += inc;
	}
	return ;
}
void updateSeg(int l, int r, int inc)
{
	updateBIT(l - 1, -inc);
	updateBIT(r, inc);
	return ;
}
int queryBIT(int x)
{
	int sum = 0;
	for (int i = x; i <= n; i += LOWBIT(i))
	{
		sum += tree[i];
	}
	return sum;
}
void ace()
{
	int cas = 1;
	char op[10];
	int l, r, p;
	for (scanf("%d", &test); test--; ++cas)
	{
		scanf("%d %d %d", &n, &q, &t);
		CLR(tree, 0);
		CLR(crs, 0);
		CLR(def, 0);
		vp.clear();
		int ind = 0;
		printf("Case %d:\n", cas);
		while (q--)
		{
			scanf("%s", op);
			if ('A' == op[0])
			{
				scanf("%d %d", &l, &r);
				if (l > r)
				{
					swap(l, r);
				}
				//l = max(l, 1);
				//r = min(r, n);
				updateSeg(l, r, 1);
				vp.push_back(PII(l, r));
				++ind;
			}
			else
			{
				scanf("%d", &p);
				if (1 == t)
				{
					puts("0");
					continue ;
				}
				int token = 0;
				while (crs[p] < ind)
				{
					if (vp[ crs[p] ].first <= p && p <= vp[ crs[p] ].second)
					{
						if (0 == token % t)
						{
							crs[p] += t - 1;
							++def[p];
							token = t - 1;
						}
						++token;
					}
					++crs[p];
				}
				printf("%d\n", queryBIT(p) - def[p]);
			}
		}
	}
	return ;
}
int main()
{
#ifndef ONLINE_JUDGE
	freopen("in.txt", "r", stdin);
	freopen("out.txt", "w", stdout);
#endif
	ace();
	return 0;
}
/*******************************************************************************
Test Data...
2
3 7 2
Attack 1 2
Query 2
Attack 2 3
Query 2
Attack 1 3
Query 1
Query 3
9 7 3
Attack 5 5
Attack 4 6
Attack 3 7
Attack 2 8
Attack 1 9
Query 5
Query 3
*******************************************************************************/

51单片机 驱动有源/无源蜂鸣器+Proteus仿真 51单片机 驱动有源/无源蜂鸣器+Proteus仿真 相关篇《51单片机 Proteus仿真有源蜂鸣器始终不响原因及解决方法》 电路搭建 采用NPN管驱动有源蜂鸣器电路 采用PNP管驱动有源蜂鸣器电路 采用PNP管驱动无源蜂鸣器 采用NPN管驱动无源蜂鸣器 Proteus元器件列表 实例代码 /************************************************************************************* * 实验现象:下载程序 阅读详情

相关推荐

编写用户帮助/操作手册指南

一个新系统,需要写用户操作手册,该从何下笔?本篇是一篇教你编写用户帮助/操作手册的指南~

pytester的博客 3万+

[HDU 4031]Attack[树状数组区间更新单点查询]

题目链接:[HDU 4031]Attack[树状数组区间更新单点查询] 题意分析: 『基地』组织又要打美国啦,如今他使用一种武器,可以攻打一个范围内的目标。但是米国有护盾,每个连续段内都有护盾,可以抵挡一次攻击。但是护盾有CD, 一次之后要过t时间才能回复,然而恐怖分子的没有CD,果然反派都是流弊XD。给出多个攻击和查询,每次查询输出该点被成功攻击了几次。 解题思路: 成功攻击次数怎么计

闲停 668

别再手动算重量了!用C++给UG/NX写个自动计算零件质量与质心的插件(附完整源码)

本文详细介绍了如何使用C++为UG/NX开发智能质量分析插件,实现零件质量与质心的自动计算。通过结合NXOpen和UF_MODL API,设计高效的数据结构和批量处理机制,大幅提升机械设计效率。文章包含完整源码和实用技巧,帮助工程师告别手动计算,适用于复杂装配体的自动化工程计算。

weixin_30247307的博客 133

hdu 4031 Attack(树状数组)

题目链接:hdu 4031 Attack 题目大意:有一个长为n的长城,进行q次操作,d为防护罩的冷却时间,Attack表示区间a-b的墙将在1秒后受到攻击, 询问表示计算第a块墙受到攻击的次数,被防护罩抵消的不算。 解题思路:树状数组,更新区间查询点,每次攻击区间a-b时,只要进行add(a,1); add(b+1, -1);然后第i堵墙受到的总攻击次数即为sum(i)。实

不慌不忙、不急不躁 1681

OPC UA 服务端的模拟工具及客户端工具

详细介绍如何使用 Prosys OPC UA Simulation Server 作为 OPC UA 服务端的模拟工具来生成数据模型,并使用 Softing OPC UA Client 作为客户端工具,直观地查看和验证模拟生成的数据。

weixin_44462773的博客 9878

(MATLAB)一维信号峰值检测findpeaks

一维信号波峰波谷检测,峰值、峰宽、到达时间计算。MATLAB自带的findpeaks函数能完成这一任务,在这里分享其基本用法与特殊用法。

HPC_ZY 2万+

HDU 4031 Attack(树状数组修改区间查询点)

Problem Description Today is the 10th Annual of “September 11 attacks”, the Al Qaeda is about to attack American again. However, American is protected by a high wall this time, which can be treatin

Remilia's 1498

众灵科技24路舵机控制器二次开发实战(1)-STM32串口指令控制详解

本文详细介绍了如何通过STM32单片机对众灵科技24路舵机控制器进行二次开发,实现串口指令控制。文章从硬件连接、通信协议解析到STM32代码实战,手把手指导开发者打通控制链路,并重点讲解了如何调用预设动作组驱动六足机器人,为后续集成传感器、无线遥控等高级功能奠定基础。

weixin_29188997的博客 484

hdu 4031 Attack

hdu 4031 Attack         童鞋说用树状数组做, 知识点是 区间改,单点查。 #include #include #define MAX 20001 struct AttackBound { int left, right; }; int attackNum[MAX]; int lowbit(int x) { return x & (-x); } void

happen_zhang 824

【PostgreSQL】PostgreSQL数据库函数比对模板(PG通用)

LOOKUP 函数从单行或单列区域 (区域:工作表上的两个或多个单元格。区域中的单元格可以相邻或不相邻。)或数组 (数组:用于建立可生成多个结果或可对在行和列中排列的一组参数进行运算的单个公式。数组区域共用一个公式;数组常量是用作参数的一组常量。LOOKUP 函数具有两种语法形式:向量形式和数组形式。vlookup查找匹配值超过255个字符显示#Value的解决办法。如果值为错误值 #N/A,则返回 TRUE。

tttzzzqqq2018的博客 1494

ESP32-C3入门教程 WiFi篇①——WiFi Scan 扫描附近AP无线热点 | 堵塞等待扫描结果,回调事件通知扫描结果

文章目录一、快速运行二、运行效果三、程序流畅四、关键函数4.1 扫描所有有效的AP4.2 获取上次扫描中找到的AP列表4.3 获取上次扫描中找到的AP数 一、快速运行 示例项目中,选择WiFi—>scan menuconfig配置ESP32C3-Specific—>Rec 0 芯片选择ESP32-C3(Built-in USB JTAG) 快速运行ESP-IDF Build, Flash and Monitor(左下角) 二、运行效果 三、程序流畅 esp_netif_init,初始

5417

hdu4031 Atack(树状数组区间更新单点求值)

题意说有一个长为n的防御墙,有n个防御装置,每个防御装置能放单位一的长度范围,且每次成功防御后需要d的时间恢复防御能力,在这之间受到攻击是不具备防御能力的。现在有个武器每秒钟能够发起一次攻击,范围是[a,b]。然后问某个点没能成功防住攻击的次数。 区间与点。。。。 显然求成功防御的次数较简单点,然后由总的被攻击次数减之。 首先需要纪录每秒攻击的范围,然后是点a从上一次攻击后回复防御能力的时间

KIJamesQi的博客 678

Golang内存管理:GC调优实战案例

在Golang编程中,内存管理是一个非常重要的方面。良好的内存管理可以提高程序的性能和稳定性,而GC(垃圾回收)调优则是优化内存管理的关键手段。本文的目的就是通过实际案例,深入讲解Golang中GC调优的方法和技巧,让读者能够在实际项目中更好地进行内存管理和性能优化。范围涵盖了从核心概念的解释到具体代码实现和调优过程的详细分析。本文首先会介绍一些相关的术语和核心概念,让读者对Golang内存管理和GC有一个基本的认识。然后通过故事引入的方式,更加形象地解释核心概念及其相互关系。

AI Agent Harness Engineering 1118

HDU 4031 Attack(线段树/树状数组区间更新单点查询+暴力)

Attack Time Limit: 5000/3000 MS (Java/Others)Memory Limit: 65768/65768 K (Java/Others) Total Submission(s): 2523Accepted Submission(s): 805 Problem Description Today is th...

weixin_30307267的博客 108

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

IEM模型,地表粗糙度模拟

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

HDU 4031

1 /* 2 http://acm.hdu.edu.cn/showproblem.php?pid=4031 3 */ 4 #include<iostream> 5 #include<cstdio> 6 #include<cstring> 7 #include<algorithm> 8 using namespace ...

weixin_30709635的博客 88

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

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

树状数组区间更新 hdu4031

AttackProblem DescriptionToday is the 10th Annual of “September 11 attacks”, the Al Qaeda is about to attack American again. However, American is protected by a high wall this time, which can be treati

龙崎的专栏 403

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

HDU ACM 4031 Attack (树状数组--单点查询+区间更新)

http://acm.hdu.edu.cn/showproblem.php?pid=4031 用了树状数组的区间更新 单点查找(一般为单点更新 区间查找) 例如 区间(2,4)加1 则Updata(2,1) Updata(4+1,-1) 实现了更新(2,4)的值而不改变其他值 求Sum时即可得到某一点的值 View Code #inclu...

weixin_30900589的博客 130

hdu 4031 问题分解+线段树+暴力

/*区间有两种情况 如果区间值为1则区间内的数处于同一状态,为0则不属于同一状态,要再分 记录回复好的时间,如果查询时间》=这个时间, 则区间继续属于回复状态,更新父亲节点值 否则ans = ans + (R-L + 1) 这种问题的复杂度不太好估计,最坏情况下要一直分下去, 感觉复杂度没有那么好保障 但是也能做吧 上面想的做法应该不对233 查了网上的做法……好像是N^2的算法啊 不会做的

qq_21704477的博客 331

hdu 4031(树状数组+辅助数组)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4031 Attack Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others) Total Submission(s): 1890    Accepted Submission(s):

T_T 941

hdu 4031 树状数组

每个点被成功攻击次数等于

马德里小铁匠的铁匠铺 653

树状数组相关应用之区间更新单点查询问题

区间更新单点查询 树状数组的基本应用是单点更新,区间查询(例如求区间和)。 鉴于树状数组的空间复杂度和时间复杂度都比线段树小 而且代码也短 所以就有大神用强大的脑洞YY出了区间修改+单点查询的树状数组 区间更新原理 差分法 设a数组表示原始的数组; 设d[i]=a[i]-a[i-1] (1&lt;i≤n,d[1]=a[1]); 设f[i]=f[i-1]+d[i] (1&lt;i≤n,f[1]=...

qq_40432881的博客 490

hdu4031之树状数组

Attack Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others) Total Submission(s): 1618    Accepted Submission(s): 469 Problem Description Today is the 10th An

Stephen 1216

hdu 4031 Attack(树状数组区间更新单点求值&暴力)

Attack Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others) Total Submission(s): 1890    Accepted Submission(s): 554 Problem Description Today is the 10th Annual

记录成长的点点滴滴. . . . . 1347

HDU 4031 Attack

Attack Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others) Total Submission(s): 1904    Accepted Submission(s): 560 Problem Description Today is the 10th An

hqu_fritz的专栏 992

Hdu4031【树状数组】

/*Attack Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Others) Total Submission(s): 1947 Accepted Submission(s): 566 Problem Description Today is the 10th Annual of

乐着过一辈子的专栏 374
上一篇: Fedora 16 无法关机(屏幕显示"System halted")的处理方法
下一篇: HDU 3644 计算几何 模拟退火
codeforces_sphinx
博客等级 码龄15年 32粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值