hdu4027 Can you answer these queries?
来源:互联网 发布:数据库2000支持w7吗 编辑:程序博客网 时间:2024/05/20 04:12
这个题乍一看没思路啊,但后来发现每个数小于2^63,开方至多6次就变成1了,然后就不用开方了,只有这么暴力了。
(似乎我的代码里有一些没用的东西= =)
#include<algorithm>#include<cstdio>#include<cmath>using namespace std;typedef long long LL;const int MAXN = 100000;int n;LL A[MAXN + 10];struct seg { int l, r; LL sum; inline int length() { return r - l + 1; } void update(seg &lch, seg &rch) { if(l < r) sum = lch.sum + rch.sum; }} Tree[MAXN * 4 + 10];void Build(int u, int l, int r) { seg &cur = Tree[u]; cur.l = l, cur.r = r; if(l >= r) cur.sum = A[l]; else { int mid = (l + r) / 2; Build(u * 2, l, mid); Build(u * 2 + 1, mid + 1, r); cur.update(Tree[u * 2], Tree[u * 2 + 1]); }}void Ins(int u, int l, int r) { seg &cur = Tree[u], &lch = Tree[u * 2], &rch = Tree[u * 2 + 1]; if(cur.r < l || cur.l > r) return ; else { if(l <= cur.l && cur.r <= r && cur.length() == cur.sum) return ; else if(cur.l >= cur.r) cur.sum = sqrt(cur.sum + 0.5); else Ins(u * 2, l, r), Ins(u * 2 + 1, l, r); } cur.update(lch, rch);}LL Query(int u, int l, int r) { seg &cur = Tree[u]; if(cur.r < l || cur.l > r) return 0; else if(l <= cur.l && cur.r <= r) return cur.sum; else return Query(u * 2, l, r) + Query(u * 2 + 1, l, r);}int main() { int kase = 0; while(scanf("%d", &n) == 1 && n) { for(int i = 1; i <= n; i++) scanf("%I64d", &A[i]); Build(1, 1, n); int ops, opt, l, r; scanf("%d", &ops); printf("Case #%d:\n", ++kase); for(int i = 1; i <= ops; i++) { scanf("%d%d%d", &opt, &l, &r); if(l > r) swap(l, r); if(opt) printf("%I64d\n", Query(1, l, r)); else Ins(1, l, r); } puts(""); } return 0;}
0 0
- hdu4027 Can you answer these queries?
- hdu4027----Can you answer these queries?
- hdu4027 Can you answer these queries?
- hdu4027 Can you answer these queries?
- HDU4027-Can you answer these queries?
- HDU4027 Can you answer these queries? (线段树)
- hdu4027 Can you answer these queries? 线段树
- HDU4027 Can you answer these queries?(Segment Tree)
- HDU4027:Can you answer these queries?(线段树单点更新)
- hdu4027 Can you answer these queries? (区间修改,区间查询)
- hdu4027-Can you answer these queries?(线段树)
- hdu4027 Can you answer these queries?(线段树)
- hdu4027 Can you answer these queries?(成段更新)
- HDU4027-Can you answer these queries?(线段树+思路)
- 线段树--hdu4027 Can you answer these queries?
- hdu4027 Can you answer these queries?(线段树)
- HDU4027 Can you answer these queries? (线段树)
- Can you answer these queries?
- 黑马程序员——Java之面向对象(一)
- CSDN Markdown简明教程5-快速上手
- sql server “动态pivot行转列”理解
- 快速修改win7等系统的hosts文件
- 进程间线程间的同步锁原理和种类
- hdu4027 Can you answer these queries?
- swift基本语法04 字典
- Ubantu Gerrit 安装详解
- POJ 1861 Network (Kruskal求MST模板题)
- 【设计模式】单例设计模式的N中Java实现方法
- 【测试工具】Linux下查看指定进程的内存总和
- 二分图最佳匹配(网络流)
- 收获--大马、小马、非一句话木马、等相关hack工具、VPN
- pomelo 常见术语