0
已解决
陆麟瑞
资深天翼
资深天翼
【模板】线段树 2
30分,WA7个点。
#include <iostream>
using namespace std;
#define it long long
struct xianduan{
it l,r,sum,sum2;
};
xianduan tree[1000001];
it a[1000001],f[1000001];
it tree2[1000001],tree3[1000001];
int mod;
void build(it x,it l,it r)
{
tree[x].l=l;
tree[x].r=r;
tree3[x]=1;
if(l==r)
{
tree[x].sum=a[l];
tree[x].sum%=mod;
return;
}
build(x*2,l,(l+r)>>1);
build(x*2+1,1+((l+r)>>1),r);
tree[x].sum=tree[x*2].sum+tree[x*2+1].sum;
tree[x].sum%=mod;
}
void pushdown(it x)
{
it mid=(tree[x].l+tree[x].r)/2;
tree[x*2].sum=(tree[x*2].sum*tree3[x]+tree2[x]*(mid-tree[x].l+1))%mod;
tree[x*2+1].sum=(tree[x*2+1].sum*tree3[x]+tree2[x]*(tree[x].r-mid))%mod;
tree3[x*2]=(tree3[x*2]*tree3[x])%mod;
tree3[x*2+1]=(tree3[x*2+1]*tree3[x])%mod;
tree2[x*2]=(tree2[x*2]*tree3[x]+tree2[x])%mod;
tree2[x*2+1]=(tree2[x*2+1]*tree3[x]+tree2[x])%mod;
tree3[x]=1;
tree2[x]=0;
}
void update(it x,it l,it r,it k)
{
if(tree[x].l>=l&&tree[x].r<=r)
{
tree[x].sum=(tree[x].sum+(tree[x].r-tree[x].l+1)*k)%mod;
tree2[x]=(tree2[x]+k)%mod;
return;
}
if(tree[x].l>r||tree[x].r<l)
return;
it mid=(tree[x].r+tree[x].l)/2;
pushdown(x);
update(x*2,l,r,k);
update(x*2+1,l,r,k);
tree[x].sum=(tree[x*2].sum+tree[x*2+1].sum)%mod;
}
void update1(it x,it l,it r,it k)
{
if(tree[x].l>=l&&tree[x].r<=r)
{
tree[x].sum=(tree[x].sum*k)%mod;
tree3[x]=(tree3[x]*k)%mod;
tree2[x]=(tree2[x]*k)%mod;
return;
}
if(tree[x].l>r||tree[x].r<l)
return;
it mid=(tree[x].r+tree[x].l)/2;
pushdown(x);
update1(x*2,l,r,k);
update1(x*2+1,l,r,k);
tree[x].sum=(tree[x*2].sum+tree[x*2+1].sum)%mod;
}
it query(it x,it l,it r)
{
if(tree[x].l>=l&&tree[x].r<=r)
return tree[x].sum;
if(tree[x].l>r||tree[x].r<l)
return 0;
if(tree2[x])pushdown(x);
return (query(x*2,l,r)+query(x*2+1,l,r))%mod;
}
int main()
{
it n,m;
cin>>n>>m>>mod;
for(it i=1;i<=n;i++)
cin>>a[i];
build(1,1,n);
for(int i=1;i<=m;i++)
{
it a,b,c;
int t;
cin>>t>>a>>b;
if(t==2)
{
cin>>c;
update(1,a,b,c);
}
else if(t==3) cout<<query(1,a,b)%mod<<endl;
else
{
cin>>c;
update1(1,a,b,c);
}
}
return 0;
}
现在弱到连线段树板子都不会了
1
已采纳
赵逸凡
初级启示者
初级启示者
吊打我这个贪心都不牢的蒟蒻呀
赵逸凡在2018-10-07 17:22:00追加了内容
贪心配不上陆大佬的眼光,在他眼里贪心就是hello,world一样不值一提,他已经开始从"贪"和"心"这2个字中开始深入算法了,并不是简单的局部最优推导全局最优了,而是从局部最优与另外n一个局部最优来推导出局部中的暂时最优,再筛选每个局部暂时最优中的联通性,然后分别用深搜和广搜来分出局部暂时最优的最优解,再从深搜广搜中筛出两者之间的局部永恒最优,将另外几个局部暂时最优进行筛选局部永恒第二最优,将其与局部永恒最优建成连通性,用深搜考虑联通的局部暂时最优中最优的,将其作为参考值,参考每个局部暂时最优的联通性,然后用广搜匹配好每个局部暂时最优与参考值的顺序,同时思考局部暂时最优与全局最优解的连通性,最后用分而冶之的策略双双匹配,用背包思路检索没问题后,用广搜估算出全局最优,进行n次估算,最后用快排得到全局最优。
4
毕小曼
初级光能
初级光能
陆大佬,请容我说句大实话。
我都不太想理你,那是因为你经常说自己太弱,伤我自尊。
萌新一次不适合形容你
毕小曼在2018-10-01 22:02:39追加了内容
毕小曼在2018-10-01 22:04:31追加了内容
(希望大家不要举报,这是我憋了好久的话,一不小心说了出来)
2
0
0
0
0
0
0
0
0
栾峻岩
初级天翼
初级天翼
您好,您为什么要强调您是一位刚学OI的萌新呢?(又是一个“刚学OI”的巨佬)
在洛谷AC790题,随随便便切紫题,蓝题的巨佬,吊打酷町堂众多祖国的花朵的巨佬您根本不可能是萌新!
巨佬装弱要严惩!(自洛谷众多巨佬“刚学OI”后,陆巨佬也加入了“刚学OI”团队……)
栾峻岩在2018-10-02 11:49:38追加了内容
您问的问题只能问葛老师,杨老师等……(包括洛谷超级超级巨佬)
您错在哪……反正我看“线段树”就一脸懵逼。
0
0
0
0