- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
HDU 树状数组 区间更新及点询问.doc
HDU 4031 树状数组 区间更新及点询问
/*******************************************************************************
去年成都赛区网络赛一道题,树状数组在区间更新中的应用。树状数组一般支持的是改点,查区间,但
是这道题要求的是改区间,查点,这就要变通一下,具体可以看代码,另外要考虑的一个问题是,如何统计?
这里的处理方法就是把总共的攻击次数-防御的次数,因为对单个点的询问可能有多次,所以为每个点都设
定一个游标来优化时间~
*******************************************************************************/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#int, s) memcpy((t), (s), sizeof(s))
#define SC(t, s) static_cast(s)
#define LEN(s) static_cast( strlen((s)) )
#define SZ(s) static_cast( (s).size() )
?
typedef double LF;
typedef __int64 LL; //VC
typedef unsigned __int64 ULL;
?
typedef pair PII;
typedef pair PLL;
typedef pair PDD;
?
typedef vector VI;
typedef vector VC;
typedef vector VF;
typedef vector VS;
?
template
T sqa(const T x) {return x * x;}
template
T ll(const T x) {return x template
T rr(const T x) {return x template
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(-);
?
#define ONLINE_JUDGE
?
const int MAXN = 20004;
?
int test, n, q, t;
int tree[MAXN];
int crs[MAXN], def[MAXN];
vector 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 {
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);
();
int ind = 0;
printf(“Case %d:\n”, cas);
while (q--)
{
scanf(“%s”, op);
if (‘A’ == op[0])
{
scanf(“%d %d
文档评论(0)