hdu 4578 Transformation 线段树
没什么说的裸线段树,注意细节就好了!!!
代码如下:
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<cstring>
#include<vector>
#define ll __int64
#define pi acos(-1.0)
#define MAX 100003
#define M 10007
#define lson i<<1
#define rson i<<1|1
using namespace std;
struct tree
{
int l,r,sum[],add,mul;
void init(int _l,int _r){
l=_l;r=_r;mul=;add=;
}
void Add(int a){
sum[]=(sum[]+a*a%M*a%M*len()%M+*a*sum[]%M+*a*a%M*sum[]%M)%M;
sum[]=(sum[]+a*a%M*len()%M+*a*sum[]%M)%M;
sum[]=(sum[]+a*len()%M)%M;
add=(add+a)%M;
}
void Mul(int a){
sum[]=sum[]*a%M*a%M*a%M;
sum[]=sum[]*a%M*a%M;
sum[]=sum[]*a%M;
add=add*a%M;
mul=mul*a%M;
}
int len(){
return r-l+;
}
int mid(){
return (l+r)>>;
}
}T[MAX*];
void down(int i)
{
T[lson].Mul(T[i].mul);
T[rson].Mul(T[i].mul);
T[lson].Add(T[i].add);
T[rson].Add(T[i].add);
T[i].add=;
T[i].mul=;
}
void updateson(int i)
{
for(int j=;j<;j++)
T[i].sum[j]=(T[lson].sum[j]+T[rson].sum[j])%M;
}
void built(int i,int l,int r)
{
T[i].init(l,r);
memset(T[i].sum,,sizeof(T[i].sum));
if(l==r) return ;
int m=T[i].mid();
built(lson,l,m);
built(rson,m+,r);
}
void update(int i,int l,int r,int mul,int add)
{
if(T[i].l==l&&T[i].r==r){
T[i].Mul(mul);
T[i].Add(add);
return ;
}
down(i);
int m=T[i].mid();
if(r<=m) update(lson,l,r,mul,add);
else if(l>m) update(rson,l,r,mul,add);
else{
update(lson,l,m,mul,add);
update(rson,m+,r,mul,add);
}
updateson(i);
}
int query(int i,int l,int r,int p)
{
if(T[i].l==l&&T[i].r==r) return T[i].sum[p-];
down(i);
int m=T[i].mid();
if(r<=m) return query(lson,l,r,p);
else if(l>m) return query(rson,l,r,p);
else return (query(lson,l,m,p)+query(rson,m+,r,p))%M;
}
int main(){
int m,n,op,x,y,p;
while(scanf("%d%d",&n,&m)&&(m+n)){
built(,,n);
while(m--){
scanf("%d%d%d%d",&op,&x,&y,&p);
if(op==) update(,x,y,,p);
else if(op==) update(,x,y,p,);
else if(op==) update(,x,y,,p);
else printf("%d\n",query(,x,y,p)%M);
}
}
return ;
}
hdu 4578 Transformation 线段树的更多相关文章
- HDU 4578 Transformation --线段树,好题
题意: 给一个序列,初始全为0,然后有4种操作: 1. 给区间[L,R]所有值+c 2.给区间[L,R]所有值乘c 3.设置区间[L,R]所有值为c 4.查询[L,R]的p次方和(1<=p< ...
- hdu 4578 Transformation 线段树多种操作裸题
自己写了一个带结构体的WA了7.8次 但是测了几组小数据都对..感觉问题应该出在模运算那里.写完这波题解去对拍一下. 以后线段树绝不写struct!一般的struct都带上l,r 但是一条线段的长度确 ...
- Transformation HDU - 4578(线段树——懒惰标记的妙用)
Yuanfang is puzzled with the question below: There are n integers, a 1, a 2, …, a n. The initial val ...
- hdu 4031 attack 线段树区间更新
Attack Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Others)Total Subm ...
- hdu 4288 离线线段树+间隔求和
Coder Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Su ...
- hdu 3016 dp+线段树
Man Down Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- HDU 4578 - Transformation - [加强版线段树]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4578 Problem Description Yuanfang is puzzled with the ...
- HDU 4578 Transformation (线段树)
Transformation Time Limit: 15000/8000 MS (Java/Others) Memory Limit: 65535/65536 K (Java/Others)T ...
- HDU 4578——Transformation——————【线段树区间操作、确定操作顺序】
Transformation Time Limit: 15000/8000 MS (Java/Others) Memory Limit: 65535/65536 K (Java/Others)T ...
随机推荐
- Excel多条件筛选、公式填充
接到一个任务,由于数据操作人员不会使用编辑公式进而无法进行相关筛选,所以要我帮忙.好久不碰Excel了,那就试试看吧. 需求是这样子的(这里做了最大化的简化):要求判断条件,男50岁以上,女40岁以上 ...
- c#枚举自定义,用于数据绑定。
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Enum)] public ...
- Apache 2.4 多站点配置记录
基于域名的虚拟主机配置 <VirtualHost *:80> DocumentRoot /var/www/cms ServerName www.example.com RewriteEng ...
- 百度云demo2
- kibana去掉丑陋的basic验证框,用自定义验证代替。
最近在改写kibana,碰到了验证登录的问题.问题是这样子的,nginx设置了basic认证,然后客户端访问kibana的时候总是会弹出登录框,输入用户名和密码,现在要改写这个登陆框,用bootstr ...
- hdu 5451 Best Solver 矩阵循环群+矩阵快速幂
http://acm.hdu.edu.cn/showproblem.php?pid=5451 题意:给定x 求解 思路: 由斐波那契数列的两种表示方法, 之后可以转化为 线性表示 F[n] = ...
- mysqldump 参数说明
mysqldump参数说明 --all-databases , -A 导出全部数据库. mysqldump -uroot -p --all-databases --all-tablespaces , ...
- Arrays.asList的使用及异常问题
将数组转成List问题,通常我们习惯这样写成:List<String> list = Arrays.asList("1","2"); 于是我们这样就 ...
- 从零开始学ios开发(十二):Table Views(上)
这次学习的控件非常重要且非常强大,是ios应用中使用率非常高的一个控件,可以说几乎每个app都会使用到它,它就是功能异常强大的Table Views.可以打开你的iphone中的phone.Messa ...
- html onclick 传参数
<a id="j-im" class="jd-im btn-gray gys-im" href="javascript:(0);" o ...