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)的更多相关文章

  1. 区间dp模型之括号匹配打印路径 poj(1141)

    题目链接:Brackets Sequence 题目描写叙述:给出一串由'(')'' [ ' ' ] '组成的串,让你输出加入最少括号之后使得括号匹配的串. 分析:是区间dp的经典模型括号匹配.解说:h ...

  2. POJ(2187)用凸包求最远点对

    Beauty Contest http://poj.org/problem?id=2187 题目描述:输入n对整数点,求最距离远的点对,输出他们距离的平方和 算法:拿到这个题,最朴素的想法就是用2层循 ...

  3. POJ(1195)(单点修改,区间查询)(二维)

    题目大意 给定一个N*N的网格,刚开始每个网格的值都是0,接下来会对这些网格进行操作,有一下两种操作: 1."X Y A"对网格C[x][y]增加A 2."L B R T ...

  4. POJ 题目分类(转载)

    Log 2016-3-21 网上找的POJ分类,来源已经不清楚了.百度能百度到一大把.贴一份在博客上,鞭策自己刷题,不能偷懒!! 初期: 一.基本算法: (1)枚举. (poj1753,poj2965 ...

  5. 算法手记 之 数据结构(堆)(POJ 2051)

    一篇读书笔记 书籍简评:<ACM/ICPC 算法训练教程>这本书是余立功主编的,代码来自南京理工大学ACM集训队代码库,所以小编看过之后发现确实很实用,适合集训的时候刷题啊~~,当时是听了 ...

  6. POJ 1251 Jungle Roads (prim)

    D - Jungle Roads Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Su ...

  7. POJ 3669 Meteor Shower(流星雨)

    POJ 3669 Meteor Shower(流星雨) Time Limit: 1000MS    Memory Limit: 65536K Description 题目描述 Bessie hears ...

  8. POJ 1979 Red and Black (红与黑)

    POJ 1979 Red and Black (红与黑) Time Limit: 1000MS    Memory Limit: 30000K Description 题目描述 There is a ...

  9. POJ 2431 Expedition(探险)

    POJ 2431 Expedition(探险) Time Limit: 1000MS   Memory Limit: 65536K [Description] [题目描述] A group of co ...

随机推荐

  1. 相同vlan之间的相互访问

  2. SEL方法选择器

    在Objective-C中,选择器(selector)有两个意思. 一是指在代码中的方法的名称.二是指在编译是用于替换方法名称的唯一的标识符.编译后的选择器的为SEL类型.所有名称相同的方法拥有同一个 ...

  3. android首次点击没反应,第二次才反应

    比如我写了个重置密码确认按钮的animation动画,动画代码都没问题,但等我输入密码,再点击这个确认按钮,动画没反应,第二次才反应 解决办法已经写到我的公众号,二维码在下面,欢迎关注,谢谢. 本人联 ...

  4. hdu2191 悼念512汶川大地震 ——多重背包

    link:http://acm.hdu.edu.cn/showproblem.php?pid=2191 最简单的那种 #include <iostream> #include <cs ...

  5. UVa 679 小球下落

    题意:这道题规律性极强,虽然是二叉树,但是可以用模拟来写. 1<<20 意思是1的二进制左移20位,即2的20次方. 对于二叉树中一个节点 k ,其左节点,右节点的编号分别是2k 和 2k ...

  6. phpstorm内网远程debug

    家里用的是广电的网络,接了无线路由,在192.168.1.1里面配置了端口转发,将9001转发到192.168.1.101 ,然后在php.ini中相应的配置了xdebug, phpstorm 启动监 ...

  7. elasticsearch的marvel

    摘自: http://kibana.logstash.es/content/logstash/plugins/input/syslog.html 一:marvel介绍 marvel 是 Elastic ...

  8. php开发api接口

    做过 API 的人应该了解,其实开发 API 比开发 WEB 更简洁,但可能逻辑更复杂,因为 API 其实就是数据输出,不用呈现页面,所以也就不存在 MVC(API 只有 M 和 C),那么我们来探讨 ...

  9. 虚拟机Ubuntu16,caffe环境搭建

    虚拟机下的Ubuntu16.04+caffe+onlycup 官网的step很重要,要跟着官网,的步骤来:http://caffe.berkeleyvision.org/installation.ht ...

  10. 玩转单元测试之DBUnit

    DBunit 是一种扩展于JUnit的数据库驱动测试框架,它使数据库在测试过程之间处于一种已知状态,如果一个测试用例对数据库造成了破坏性影响,它可以帮助避免造成后面的测试失败或者给出错误结果. 虽然不 ...