筱玛爱线段树 (树状数组)
https://ac.nowcoder.com/acm/contest/946/
对操作顺序执行的话,会出现递归调用的情况,这样的话复杂度起码是m^2了,所以考虑把操作离线,然后逆序执行,这样的话已经执行过的就不会再执行了,然后利用数状数组维护每个操作执行的总次数的差分数组,这样的话每执行到一个操作的时候后面的操作调用该操作的次数就可以求出来了,相当于是把每个操作的总次数先算出来,然后再执行。
千万要注意: (A-B)%MOD这样写不行,因为会有负数情况,要+个MOD再% , (A-B+MOD)%MOD,对所有有%的数都要这样处理。
#include<bits/stdc++.h>
using namespace std;
#define ls rt<<1
#define rs (rt<<1)+1
#define ll long long
#define fuck(x) cout<<#x<<" "<<x<<endl;
typedef pair<int,int> pii;
const int maxn=1e5+10;
const int mod=1e9+7;
int d[4][2]={1,0,-1,0,0,1,0,-1};
ll c[maxn],bit[maxn];
int n,m;;
struct node
{int opt,l,r;
}op[maxn];
int lowbit(int x){return x&-x;}
ll query(int x)
{ll ans=0;while(x>=1)ans+=bit[x],ans%=mod,x-=lowbit(x);return ans;
}
void add(int x,ll v)
{while(x<=m)bit[x]=(bit[x]+v+mod)%mod,x+=lowbit(x);
}
int main(){scanf("%d%d",&n,&m);for(int i=1;i<=m;i++) scanf("%d%d%d",&op[i].opt,&op[i].l,&op[i].r);for(int i=m;i>=1;i--){ll tmp=(1LL+query(i))%mod;if(op[i].opt==1)c[op[i].l]=(c[op[i].l]+tmp)%mod,c[op[i].r+1]=(c[op[i].r+1]-tmp+mod)%mod;elseadd(op[i].l,tmp),add(op[i].r+1,-tmp);}for(int i=1;i<=n;i++){c[i]=(c[i]%mod+c[i-1]%mod)%mod;printf("%lld ",c[i]);}return 0;
}
筱玛爱线段树 (树状数组)相关推荐
- 筱玛爱游戏——线性基
链接:https://ac.nowcoder.com/acm/contest/946/E 来源:牛客网------------------------------------------------- ...
- HDU 4417 Super Mario(离线线段树or树状数组)
Problem Description Mario is world-famous plumber. His "burly" figure and amazing jumping ...
- 【XSY2569】火神的鱼(线段树+树状数组)
题面 Description 火神最爱的就是吃鱼了,所以某一天他来到了一个池塘边捕鱼.池塘可以看成一个二维的平面,而他的渔网可以看成一个与坐标轴平行的矩形. 池塘里的鱼不停地在水中游动,可以看成一些点 ...
- 树套树 ----- P1975 [国家集训队]排队(树状数组套权值线段树求动态逆序对)
解题思路: 首先我们知道交换两个数a[l]和a[r]a[l]和a[r]a[l]和a[r]影响到的区间是[l+1,r−1][l+1,r-1][l+1,r−1] 对于a[l]a[l]a[l],我们要减去[ ...
- 树套树 ---- 树状数组套权值线段树模板题 P2617 Dynamic Rankings 动态第K大
题目链接 题目大意: 给你一个数组aaa,aaa有两个操作 询问aaa中[l,r][l,r][l,r]区间里面第kkk小的数是哪个? 修改axa_xax为yyy 解题思路: 首先我们知道权值线段树是 ...
- poj 2352 Stars 线段树(先建后查/边建边查)/树状数组三种方法思路详解,带你深入了解线段树难度⭐⭐⭐★
poj 2352 Stars 目录 poj 2352 Stars 1.树状数组 2.线段树,先建树后查找 3.线段树,边建树边查找 Description Astronomers often exam ...
- 8.8线段树和树状数组
题目链接 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=28619#overview 密码 acmore 还是感觉不怎么会线段树,还是 ...
- 线段树/树状数组问题 | 问题集合
写在前面 线段树代码实在冗长,于是乎能用树状数组直接搞的就懒得打线段树了(:溜 1.P2620[QZYZ] 校门外的树 描述 Description 校门外有很多树,有苹果树,香蕉树,有会扔石头的,有 ...
- 花神游历各国 题解(小清新线段树/树状数组+并查集)
题面 众所周知,这是一道小清新线段树 然而可以用树状数组水过去且跑得飞快 看到区间开方第一反应肯定是线段树懒标记区间修改之类的,但是这个东西似乎确凿不可维护 所以考虑暴力循环单点修改->T飞 于 ...
最新文章
- 如何安全地吃掉悬崖边上的苹果?DeepMindOpenAI给出3D版安全强化学习答案
- 论文阅读 R-FCN: Object Detection via Region-based Fully Convolutional Networks
- java 数据溢出和编译错误的差别
- php代码的健壮性,代码健壮性的几点思考 - 逍遥客 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
- Web Service 移除 xmlns
- matlab通用程序,三次样条差值-matlab通用程序
- python抓取疫情数据_python 爬取疫情数据
- 12月27日课程笔记 su、sudo命令及限制root远程登陆
- css中的@符号的用处
- “做教练”之硬笔书法
- 2019正睿Day1题解
- 不间断:即使被刺破,新的软电子设备也不会损坏
- 安卓音视频开发!为了跳槽强刷1000道Android真题,大厂直通车!
- Android 客户端与服务器端时间校准
- docker单独挂盘步骤
- 算法学习-素数与合数小结
- c语言第七章函数实验总结,第六章 实验报告 (函数与宏定义)
- 我国供应链安全具体需要怎样进行一步一步建设
- 基于墨刀实现的音乐播放app-Sound From The Soul
- HDFS小文件的危害