/*******************************************************************************
去年成都赛区网络赛一道题,树状数组在区间更新中的应用。树状数组一般支持的是改点,查区间,但
是这道题要求的是改区间,查点,这就要变通一下,具体可以看代码,另外要考虑的一个问题是,如何统计?
这里的处理方法就是把总共的攻击次数-防御的次数,因为对单个点的询问可能有多次,所以为每个点都设
定一个游标来优化时间~
*******************************************************************************/
#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
*******************************************************************************/
相关推荐
编写用户帮助/操作手册指南
一个新系统,需要写用户操作手册,该从何下笔?本篇是一篇教你编写用户帮助/操作手册的指南~
[HDU 4031]Attack[树状数组区间更新单点查询]
题目链接:[HDU 4031]Attack[树状数组区间更新单点查询] 题意分析: 『基地』组织又要打美国啦,如今他使用一种武器,可以攻打一个范围内的目标。但是米国有护盾,每个连续段内都有护盾,可以抵挡一次攻击。但是护盾有CD, 一次之后要过t时间才能回复,然而恐怖分子的没有CD,果然反派都是流弊XD。给出多个攻击和查询,每次查询输出该点被成功攻击了几次。 解题思路: 成功攻击次数怎么计
别再手动算重量了!用C++给UG/NX写个自动计算零件质量与质心的插件(附完整源码)
本文详细介绍了如何使用C++为UG/NX开发智能质量分析插件,实现零件质量与质心的自动计算。通过结合NXOpen和UF_MODL API,设计高效的数据结构和批量处理机制,大幅提升机械设计效率。文章包含完整源码和实用技巧,帮助工程师告别手动计算,适用于复杂装配体的自动化工程计算。
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)。实
OPC UA 服务端的模拟工具及客户端工具
详细介绍如何使用 Prosys OPC UA Simulation Server 作为 OPC UA 服务端的模拟工具来生成数据模型,并使用 Softing OPC UA Client 作为客户端工具,直观地查看和验证模拟生成的数据。
(MATLAB)一维信号峰值检测findpeaks
一维信号波峰波谷检测,峰值、峰宽、到达时间计算。MATLAB自带的findpeaks函数能完成这一任务,在这里分享其基本用法与特殊用法。
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
众灵科技24路舵机控制器二次开发实战(1)-STM32串口指令控制详解
本文详细介绍了如何通过STM32单片机对众灵科技24路舵机控制器进行二次开发,实现串口指令控制。文章从硬件连接、通信协议解析到STM32代码实战,手把手指导开发者打通控制链路,并重点讲解了如何调用预设动作组驱动六足机器人,为后续集成传感器、无线遥控等高级功能奠定基础。
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
【PostgreSQL】PostgreSQL数据库函数比对模板(PG通用)
LOOKUP 函数从单行或单列区域 (区域:工作表上的两个或多个单元格。区域中的单元格可以相邻或不相邻。)或数组 (数组:用于建立可生成多个结果或可对在行和列中排列的一组参数进行运算的单个公式。数组区域共用一个公式;数组常量是用作参数的一组常量。LOOKUP 函数具有两种语法形式:向量形式和数组形式。vlookup查找匹配值超过255个字符显示#Value的解决办法。如果值为错误值 #N/A,则返回 TRUE。
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,初始
hdu4031 Atack(树状数组区间更新单点求值)
题意说有一个长为n的防御墙,有n个防御装置,每个防御装置能放单位一的长度范围,且每次成功防御后需要d的时间恢复防御能力,在这之间受到攻击是不具备防御能力的。现在有个武器每秒钟能够发起一次攻击,范围是[a,b]。然后问某个点没能成功防住攻击的次数。 区间与点。。。。 显然求成功防御的次数较简单点,然后由总的被攻击次数减之。 首先需要纪录每秒攻击的范围,然后是点a从上一次攻击后回复防御能力的时间
Golang内存管理:GC调优实战案例
在Golang编程中,内存管理是一个非常重要的方面。良好的内存管理可以提高程序的性能和稳定性,而GC(垃圾回收)调优则是优化内存管理的关键手段。本文的目的就是通过实际案例,深入讲解Golang中GC调优的方法和技巧,让读者能够在实际项目中更好地进行内存管理和性能优化。范围涵盖了从核心概念的解释到具体代码实现和调优过程的详细分析。本文首先会介绍一些相关的术语和核心概念,让读者对Golang内存管理和GC有一个基本的认识。然后通过故事引入的方式,更加形象地解释核心概念及其相互关系。
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...
汉书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 ...
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
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...
hdu 4031 问题分解+线段树+暴力
/*区间有两种情况 如果区间值为1则区间内的数处于同一状态,为0则不属于同一状态,要再分 记录回复好的时间,如果查询时间》=这个时间, 则区间继续属于回复状态,更新父亲节点值 否则ans = ans + (R-L + 1) 这种问题的复杂度不太好估计,最坏情况下要一直分下去, 感觉复杂度没有那么好保障 但是也能做吧 上面想的做法应该不对233 查了网上的做法……好像是N^2的算法啊 不会做的
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):
hdu 4031 树状数组
每个点被成功攻击次数等于
树状数组相关应用之区间更新单点查询问题
区间更新单点查询 树状数组的基本应用是单点更新,区间查询(例如求区间和)。 鉴于树状数组的空间复杂度和时间复杂度都比线段树小 而且代码也短 所以就有大神用强大的脑洞YY出了区间修改+单点查询的树状数组 区间更新原理 差分法 设a数组表示原始的数组; 设d[i]=a[i]-a[i-1] (1<i≤n,d[1]=a[1]); 设f[i]=f[i-1]+d[i] (1<i≤n,f[1]=...
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
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
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
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
3万+



被折叠的 条评论
为什么被折叠?



