Hihocoder 1077

xiaoxiao2021-02-28  35

Hihocoder 1077

题意

​ 中文题。

解题思路

​ 线段树裸题。

代码

#include<bits/stdc++.h> using namespace std; const int maxn = 1000005; int tree[maxn<<2]; void pushup(int rt) { tree[rt]=min(tree[rt<<1],tree[rt<<1|1]); } void biuld(int l,int r,int rt) { if(l==r) { scanf("%d",&tree[rt]); return; } int m=(l+r)>>1; biuld(l,m,rt<<1); biuld(m+1,r,rt<<1|1); pushup(rt); } void update(int L,int c,int l,int r,int rt) { if(l==r) { tree[rt]=c; return; } int m=(l+r)>>1; if(L<=m) update(L,c,l,m,rt<<1); else update(L,c,m+1,r,rt<<1|1); pushup(rt); } int query(int L,int R,int l,int r,int rt) { if(L<=l&&R>=r) { return tree[rt]; } int m=(l+r)>>1; int ans=0x3f3f3f3f; if(L<=m) ans=min(ans,query(L,R,l,m,rt<<1)); if(R> m) ans=min(ans,query(L,R,m+1,r,rt<<1|1)); return ans; } int main() { // freopen("in.txt","r",stdin); int n; scanf("%d",&n); biuld(1,n,1); int q; scanf("%d",&q); while(q--) { int l,r,o; scanf("%d%d%d",&o,&l,&r); if(!o) printf("%d\n",query(l,r,1,n,1)); else update(l,r,1,n,1); } return 0; }
转载请注明原文地址: https://www.6miu.com/read-2800159.html

最新回复(0)