hdu 4267
一个很不错的题;
刚刚看到这个题目就感觉要用线段树或者树状数组,但是有感觉有点不同;
敲了一发简单的线段树之后果断的T了;
网上一搜题解,发现要用55颗线段树或者树状数组;
一共有k种树,然后每种树根据他们%k的余数的不同又分成好几颗;
然后最后统计的时候只要对每个节点统计这k种树种的信息就行;
#include<cstdio>
#include<cstring>
#define maxn 50005
using namespace std; int d[][maxn],num[maxn];
int n,q;
void insert(int k,int p,int v)
{
while(p<=n)
{
d[k][p]+=v;
p+=p&-p;
}
} int query(int p)
{
int ret=;
for(int i=; i<; i++)
{
int k=i*+p%(i+);
for(int j=p; j>; j-=j&-j)ret+=d[k][j];
}
return num[p]+ret;
} int main()
{
int cmd,a,b,k,c;
while(scanf("%d",&n)!=EOF)
{
memset(d,,sizeof d);
for(int i=; i<=n; i++)scanf("%d",&num[i]);
scanf("%d",&q);
for(int i=; i<q; i++)
{
scanf("%d",&cmd);
if(cmd==)
{
scanf("%d%d%d%d",&a,&b,&k,&c);
b-=(b-a)%k;
int p=(k-)*+a%k;
insert(p,a,c);
insert(p,b+,-c);
}
else
{
scanf("%d",&a);
printf("%d\n",query(a));
}
}
}
return ;
}
hdu 4267的更多相关文章
- hdu 4267 线段树间隔更新
A Simple Problem with Integers Time Limit: 5000/1500 MS (Java/Others) Memory Limit: 32768/32768 K ...
- 【树状数组区间修改单点查询+分组】HDU 4267 A Simple Problem with Integers
http://acm.hdu.edu.cn/showproblem.php?pid=4267 [思路] 树状数组的区间修改:在区间[a, b]内更新+x就在a的位置+x. 然后在b+1的位置-x 树状 ...
- HDU 4267 A Simple Problem with Integers --树状数组
题意:给一个序列,操作1:给区间[a,b]中(i-a)%k==0的位置 i 的值都加上val 操作2:查询 i 位置的值 解法:树状数组记录更新值. 由 (i-a)%k == 0 得知 i%k == ...
- hdu 4267 多维树状数组
题意:有一个序列 "1 a b k c" means adding c to each of Ai which satisfies a <= i <= b and (i ...
- A Simple Problem with Integers 多树状数组分割,区间修改,单点求职。 hdu 4267
A Simple Problem with Integers Time Limit: 5000/1500 MS (Java/Others) Memory Limit: 32768/32768 K ...
- HDU 4267 A Simple Problem with Integers
A Simple Problem with Integers Time Limit: 5000/1500 MS (Java/Others) Memory Limit: 32768/32768 K ...
- hdu 4267 树形DP
思路:先dfs一下,找出1,n间的路径长度和价值,回溯时将该路径长度和价值清零.那么对剩下的图就可以直接树形dp求解了. #include<iostream> #include<al ...
- Kia's Calculation(HDU 4267)
Problem Description Doctor Ghee is teaching Kia how to calculate the sum of two integers. But Kia is ...
- HDU 4267 线段树 离散点区间更新, 自叶子节点至根单点查询
题意: n个数字 下面n个数字表示数列 2个操作 1 [u, v] k add [u,v ]区间 (u点要计算)每隔k个位置,该数字+add 2 pos 询问 pos下标的值(下标从1开始) 思路 ...
随机推荐
- Genymontion安装
Genymontion是什么 它提供的是Android的虚拟环境,和sdk的模拟器类似,能够支持windows,liunx,mac等操作系统,他比我们SDK的模拟器快很多,所以也是为什么很多开发人员会 ...
- php实现比较两个字符串日期大小的方法
<?php function dateBDate($date1, $date2) { // 日期1是否大于日期2 $month1 = date("m", strtotime ...
- xml约束DTD演示
此演示xml和DTD在一个文件中 book.xml <?xml version="1.0" encoding="utf-8"?> <!DOCT ...
- 按照行拆分textarea
网上查到方法 textarta=request("textarea") '获取数据 linestr=split(textarea,vbcrlf) '按回车将数据拆分成以行为单位的数 ...
- Delphi推出Delphi XE4支持IOS开发
Delphi 新推出 Delphi XE4 ,这是一个支持 iOS 应用开发的新版本.Delphi XE4 带来 Embarcadero 全新的 ARM 编译器 下载地址
- idl生成.h .c文件
1.从命令行执行 设置INCLUDE.LIB等,可先运行vsvars32.bat(C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\ ...
- Ext.Net学习笔记19:Ext.Net FormPanel 简单用法
Ext.Net学习笔记19:Ext.Net FormPanel 简单用法 FormPanel是一个常用的控件,Ext.Net中的FormPanel控件同样具有非常丰富的功能,在接下来的笔记中我们将一起 ...
- Flexbox介绍
CSS3 弹性盒( Flexible Box 或 flexbox),是一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有恰当的行为的布局方式.对于很多应用来讲,弹性盒改进了盒模型,既不使用浮动 ...
- 计算 unique word numbers
计算不重复单词的个数 参考: 1.Unique words count
- springmvc学习(三)
第一点---------使用 @RequestMapping 映射请求• Ant 风格资源地址支持 3 种匹配符:?:匹配文件名中的一个字符 *:匹配文件名中的任意字符 **:** 匹配多层路径 @R ...