怎么觉得有dp的意思。。。
// 1e5 1e6 1e7 1e8 1e9 (1e5)
// 1 2 3 4 5 6
//
//#include <bits/stdc++.h>
//
//using namespace std;
//vector<int> v;
//int a[100];
//int main() {
// int n, x;
// cin>>n;
// for(int i=1;i<=n;++i) {
// cin>>a[i]; v.push_back(a[i]);
// }
// sort(v.begin(),v.end());
// auto e = unique(v.begin(), v.end());
// for(int i=1;i<=n;++i) {
// a[i] = lower_bound(v.begin(), e, a[i])-v.begin()+1;
// }
// for(int i=1;i<=n;++i) cout<<a[i]<<" "; cout<<"\n";
//return 0;
//}
// DFS序
//节点
//2 in
//4 in
//7 in
//7 out
//1 in
//1 out
//3 in
//3 out
//4 out
//6 in
//5 in
//5 out
//6 out
//2 out
#include <bits/stdc++.h>
using namespace std;
#define ls o<<1
#define rs o<<1|1
const int MAXN = 2e5+10;
int a[MAXN];
struct node {
int l,r;
int x;
}t[MAXN<<2];
inline void push_up(int o) {
t[o].x = (t[ls].x+t[rs].x);
}
void build(int l,int r,int o) {
t[o].l=l, t[o].r=r;
if(l==r) {t[o].x=a[l]; return;}
int mid=(l+r)>>1;
build(l,mid,ls); build(mid+1,r,rs);
push_up(o);
}
inline void update(int s, int o, int x) {
if(t[o].l==t[o].r && t[o].l==s) {
t[o].x=x;return;
}
int mid=(t[o].l+t[o].r)>>1;
if(s<=mid) update(s,ls,x);
else update(s,rs,x);
push_up(o);
}
inline int query(int l,int r, int o) {
if(t[o].l>=l&&t[o].r<=r) return t[o].x;
int mid=(t[o].l+t[o].r)>>1;
if(r<=mid) return query(l,r,ls);
else if(l>mid) return query(l,r,rs);
else {
return query(l,mid,ls)+query(mid+1,r,rs);
}
}
int main() {
int n; n=5;
//
for(int i = 1;i<=5;++i) a[i]=i;
build(1,n,1);
int q;
cin>>q;
while(q--) {
int op,l,r,x;
cin>>op;
if(op==1) {
cin>>l>>r;
cout<<query(l,r,1)<<endl;
}
if(op==2) {
cin>>l>>x; update(l,1,x);
}
}
return 0;
}