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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

zhangningclb + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档