POJ(3468)
A Simple Problem with Integers
http://poj.org/problem?id=3468
#include <stdio.h>
struct node
{
int l,r;
__int64 sum;
__int64 add;
}tree[*];
void build(int left,int right,int root)
{
int mid=(left+right)/;
if(left==right)
{
tree[root].l=left;
tree[root].r=right;
tree[root].add=;
scanf("%I64d",&tree[root].sum);
return ;
}
tree[root].l=left;
tree[root].r=right;
tree[root].add=;
build(left,mid,*root);
build(mid+,right,*root+);
tree[root].sum=tree[*root].sum+tree[*root+].sum;
}
void modify(int left,int right,__int64 add,int root)
{
int mid=(tree[root].l+tree[root].r)/;
if(tree[root].l==left&&tree[root].r==right)
{
tree[root].sum+=add*(tree[root].r-tree[root].l+);
tree[root].add+=add;
return;
}
if(tree[root].add)
{
tree[*root].add+=tree[root].add;
tree[*root+].add+=tree[root].add;
tree[*root].sum+=tree[root].add*(tree[*root].r-tree[*root].l+);
tree[*root+].sum+=tree[root].add*(tree[*root+].r-tree[*root+].l+);
tree[root].add=;
}
if(right<=mid)
modify(left,right,add,*root);
else if(left>=mid+)
modify(left,right,add,*root+);
else
{
modify(left,mid,add,*root);
modify(mid+,right,add,*root+);
}
tree[root].sum=tree[*root].sum+tree[*root+].sum;
}
__int64 search(int left,int right,int root)
{
int mid=(tree[root].l+tree[root].r)/;
__int64 sum;
if(left==tree[root].l&&right==tree[root].r)
return sum=tree[root].sum;
if(tree[root].add)
{
tree[*root].add+=tree[root].add;
tree[*root+].add+=tree[root].add;
tree[*root].sum+=tree[root].add*(tree[*root].r-tree[*root].l+);
tree[*root+].sum+=tree[root].add*(tree[*root+].r-tree[*root+].l+);
tree[root].add=;
}
if(right<=mid)
return sum=search(left,right,*root);
else if(left>=mid+)
return sum=search(left,right,*root+);
else
return sum=search(left,mid,*root)+search(mid+,right,*root+);
}
int main()
{
int n,q,i;
char str[];
int a,b;
__int64 c;
scanf("%d%d",&n,&q);
build(,n,);
for(i=;i<=q;i++)
{
scanf("%s%d%d",str,&a,&b);
if(str[]=='Q')
{
printf("%I64d\n",search(a,b,));
}
else
{
scanf("%I64d",&c);
modify(a,b,c,);
}
}
return ;
}
POJ(3468)的更多相关文章
- 区间dp模型之括号匹配打印路径 poj(1141)
题目链接:Brackets Sequence 题目描写叙述:给出一串由'(')'' [ ' ' ] '组成的串,让你输出加入最少括号之后使得括号匹配的串. 分析:是区间dp的经典模型括号匹配.解说:h ...
- POJ(2187)用凸包求最远点对
Beauty Contest http://poj.org/problem?id=2187 题目描述:输入n对整数点,求最距离远的点对,输出他们距离的平方和 算法:拿到这个题,最朴素的想法就是用2层循 ...
- POJ(1195)(单点修改,区间查询)(二维)
题目大意 给定一个N*N的网格,刚开始每个网格的值都是0,接下来会对这些网格进行操作,有一下两种操作: 1."X Y A"对网格C[x][y]增加A 2."L B R T ...
- POJ 题目分类(转载)
Log 2016-3-21 网上找的POJ分类,来源已经不清楚了.百度能百度到一大把.贴一份在博客上,鞭策自己刷题,不能偷懒!! 初期: 一.基本算法: (1)枚举. (poj1753,poj2965 ...
- 算法手记 之 数据结构(堆)(POJ 2051)
一篇读书笔记 书籍简评:<ACM/ICPC 算法训练教程>这本书是余立功主编的,代码来自南京理工大学ACM集训队代码库,所以小编看过之后发现确实很实用,适合集训的时候刷题啊~~,当时是听了 ...
- POJ 1251 Jungle Roads (prim)
D - Jungle Roads Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Su ...
- POJ 3669 Meteor Shower(流星雨)
POJ 3669 Meteor Shower(流星雨) Time Limit: 1000MS Memory Limit: 65536K Description 题目描述 Bessie hears ...
- POJ 1979 Red and Black (红与黑)
POJ 1979 Red and Black (红与黑) Time Limit: 1000MS Memory Limit: 30000K Description 题目描述 There is a ...
- POJ 2431 Expedition(探险)
POJ 2431 Expedition(探险) Time Limit: 1000MS Memory Limit: 65536K [Description] [题目描述] A group of co ...
随机推荐
- 相同vlan之间的相互访问
- SEL方法选择器
在Objective-C中,选择器(selector)有两个意思. 一是指在代码中的方法的名称.二是指在编译是用于替换方法名称的唯一的标识符.编译后的选择器的为SEL类型.所有名称相同的方法拥有同一个 ...
- android首次点击没反应,第二次才反应
比如我写了个重置密码确认按钮的animation动画,动画代码都没问题,但等我输入密码,再点击这个确认按钮,动画没反应,第二次才反应 解决办法已经写到我的公众号,二维码在下面,欢迎关注,谢谢. 本人联 ...
- hdu2191 悼念512汶川大地震 ——多重背包
link:http://acm.hdu.edu.cn/showproblem.php?pid=2191 最简单的那种 #include <iostream> #include <cs ...
- UVa 679 小球下落
题意:这道题规律性极强,虽然是二叉树,但是可以用模拟来写. 1<<20 意思是1的二进制左移20位,即2的20次方. 对于二叉树中一个节点 k ,其左节点,右节点的编号分别是2k 和 2k ...
- phpstorm内网远程debug
家里用的是广电的网络,接了无线路由,在192.168.1.1里面配置了端口转发,将9001转发到192.168.1.101 ,然后在php.ini中相应的配置了xdebug, phpstorm 启动监 ...
- elasticsearch的marvel
摘自: http://kibana.logstash.es/content/logstash/plugins/input/syslog.html 一:marvel介绍 marvel 是 Elastic ...
- php开发api接口
做过 API 的人应该了解,其实开发 API 比开发 WEB 更简洁,但可能逻辑更复杂,因为 API 其实就是数据输出,不用呈现页面,所以也就不存在 MVC(API 只有 M 和 C),那么我们来探讨 ...
- 虚拟机Ubuntu16,caffe环境搭建
虚拟机下的Ubuntu16.04+caffe+onlycup 官网的step很重要,要跟着官网,的步骤来:http://caffe.berkeleyvision.org/installation.ht ...
- 玩转单元测试之DBUnit
DBunit 是一种扩展于JUnit的数据库驱动测试框架,它使数据库在测试过程之间处于一种已知状态,如果一个测试用例对数据库造成了破坏性影响,它可以帮助避免造成后面的测试失败或者给出错误结果. 虽然不 ...