hdu4267 A Simple Problem with Integers
A Simple Problem with Integers
Time Limit: 5000/1500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2571 Accepted Submission(s): 837
The first line contains an integer N. (1 <= N <= 50000)
The second line contains N numbers which are the initial values of A1, A2, ... , AN. (-10,000,000 <= the initial value of Ai <= 10,000,000)
The third line contains an integer Q. (1 <= Q <= 50000)
Each of the following Q lines represents an operation.
"1 a b k c" means adding c to each of Ai which satisfies a <= i <= b and (i - a) % k == 0. (1 <= a <= b <= N, 1 <= k <= 10, -1,000 <= c <= 1,000)
"2 a" means querying the value of Aa. (1 <= a <= N)
1 1 1 1
14
2 1
2 2
2 3
2 4
1 2 3 1 2
2 1
2 2
2 3
2 4
1 1 4 2 1
2 1
2 2
2 3
2 4
1
1
1
1
3
3
1
2
3
4
1
#include <string.h>
#include <iostream>
#include <stdio.h>
using namespace std;
#define MAXN 50005
#define lnum num<<1
#define rnum num<<1|1 struct node
{
int color,prime,listadd[55];
}tree[4*MAXN];
#define inf 0
int modleft[11][11];
void build(int num ,int l,int r)
{
memset(tree[num].listadd,0,sizeof(tree[num].listadd));
tree[num].color=0;
int mid=(l+r)>>1;
if(l>=r)
{
scanf("%d",&tree[num].prime);
return ;
}
build(lnum,l,mid);
build(rnum,mid+1,r);
}
void pushdown(int num)
{
int i;
if(tree[num].color!=inf)
{ tree[lnum].color=tree[num].color;
tree[rnum].color=tree[num].color;
tree[num].color=inf;//还原标记 for(i=0;i<55;i++)
{ tree[lnum].listadd[i]+=tree[num].listadd[i];
tree[rnum].listadd[i]+=tree[num].listadd[i];
tree[num].listadd[i]=0; }
}
}
void update(int s,int e,int a,int b,int num,int amk,int k,int c )
{
int i; if(a<=s&&b>=e)
{
tree[num].color=k;//需要更新
tree[num].listadd[modleft[k][amk]]+=c;
return ;
}
pushdown(num);
int mid=(s+e)>>1;
if(mid>=a)
update(s,mid,a,b,lnum,amk,k,c);
if(mid<b)
update(mid+1,e,a,b,rnum,amk,k,c);
}
int query(int s,int e,int num,int x)//充分利用这个延时标记
{
int i; if(s>=e)
{
int temp=tree[num].prime;
for(i=1;i<=10;i++)
{
temp+=tree[num].listadd[modleft[i][x%i]];
tree[num].listadd[modleft[i][x%i]]=0;
}
tree[num].prime=temp;//更新为新的值
return temp;
}
pushdown(num);
int mid=(s+e)>>1;
if(x>mid)
return query(mid+1,e,rnum,x);
else
{
return query(s,mid,lnum,x);
}
}
int main()
{
int asknum,num12,x,a,b,n,k,c;
int i,j,cnt=0;
for(i=1;i<=10;i++)
for(j=0;j<i;j++)
{
modleft[i][j]=cnt++;//省了一半的空间
}
while(scanf("%d",&n)!=EOF)
{
build(1,1,n); scanf("%d",&asknum);
while(asknum--)
{ scanf("%d",&num12);
if(num12==1)
{
scanf("%d%d%d%d",&a,&b,&k,&c); update(1,n,a,b,1,a%k,k,c);
}
else{
scanf("%d",&x);
printf("%d\n",query(1,n,1,x));
} }
}
return 0;
}
hdu4267 A Simple Problem with Integers的更多相关文章
- A Simple Problem with Integers(树状数组HDU4267)
A Simple Problem with Integers Time Limit: 5000/1500 MS (Java/Others) Memory Limit: 32768/32768 K (J ...
- POJ 3468 A Simple Problem with Integers(线段树 成段增减+区间求和)
A Simple Problem with Integers [题目链接]A Simple Problem with Integers [题目类型]线段树 成段增减+区间求和 &题解: 线段树 ...
- POJ 3468 A Simple Problem with Integers(线段树/区间更新)
题目链接: 传送门 A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Description Yo ...
- poj 3468:A Simple Problem with Integers(线段树,区间修改求和)
A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 58269 ...
- ACM: A Simple Problem with Integers 解题报告-线段树
A Simple Problem with Integers Time Limit:5000MS Memory Limit:131072KB 64bit IO Format:%lld & %l ...
- poj3468 A Simple Problem with Integers (线段树区间最大值)
A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 92127 ...
- POJ3648 A Simple Problem with Integers(线段树之成段更新。入门题)
A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 53169 Acc ...
- BZOJ-3212 Pku3468 A Simple Problem with Integers 裸线段树区间维护查询
3212: Pku3468 A Simple Problem with Integers Time Limit: 1 Sec Memory Limit: 128 MB Submit: 1278 Sol ...
- POJ 3468 A Simple Problem with Integers(线段树区间更新区间查询)
A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 92632 ...
随机推荐
- MySql索引原理与使用大全
林炳文Evankaka原创作品. 转载请注明出处http://blog.csdn.net/evankaka 一.索引介绍 索引是对数据库表中一列或多列的值进行排序的一种结构.在关系数据库中,索引是一种 ...
- IOS详解TableView——选项抽屉(天猫商品列表)
在之前的有篇文章讲述了利用HeaderView来写类似QQ好友列表的表视图. 这里写的天猫抽屉其实也可以用该方法实现,具体到细节每个人也有所不同.这里采用的是点击cell对cell进行运动处理以展开“ ...
- 将excel的.xlsx文件转成数据库文件.db的方法
1.下载好工具SQLite Expert Professional 3 ,晚上有很多,自行百度. 2.打开.xls文件,将文件另存为.csv文件.说明一下: 可以将xls文件看作是数据库里的一个表.所 ...
- web.config中的profile
aspnet_regsql命令创建需要的表结构 public class UserProfile:ProfileBase { [SettingsAllowAnonymous(true)] //默认匿名 ...
- Objective-C 字符串
#import <UIKit/UIKit.h> #import "AppDelegate.h" int main(int argc, char * argv[]) { ...
- hdu5323 Solve this interesting problem(爆搜)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Solve this interesting problem Time Limit ...
- MFC中使用ADO方式连接数据库
文章转自:http://blog.sina.com.cn/s/blog_a43aba5601014z8h.html 一.数据库操作准备 1.导入ADO动态链接库 在工程的stdafx.h中加入如下语句 ...
- 将HTML格式的String转化为HTMLElement
代码如下: <meta charset="UTF-8"> <title>Insert title here</title> </head& ...
- File类详解
一.File类: File类时io包中唯一代表磁盘文件本身的对象.File类定义了一些与平台无关的方法来操作文件,可以通过调用File类中的方法,实现创建.删除.重命名文件等. File类的对象主要用 ...
- myeclipse中java文件头注释格式设置
转载:http://www.blogjava.net/yxhxj2006/archive/2014/01/14/408940.html myeclipse中java文件头注释格式设置 windows ...