标签:blog os io for 2014 ar amp size
HDU 1754 单点更新,区间查询最大值,水题……
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#include<queue>
#include<set>
#include<cmath>
#include<bitset>
#define mem(a,b) memset(a,b,sizeof(a))
#define lson i<<1,l,mid
#define rson i<<1|1,mid+1,r
#define INF 1000000
#define maxn 1000010
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
int Max[maxn],a[200005],n,m,i;
void pushup(int i)
{
Max[i]=max(Max[i<<1],Max[i<<1|1]);
}
void build(int i,int l,int r)
{
if(l==r)
{
Max[i]=a[l];
return ;
}
int mid=(l+r)>>1;
build(lson);build(rson);
pushup(i);
}
void update(int i,int l,int r,int x,int v)
{
if(l==r&&l==x)
{
Max[i]=v;
return ;
}
int mid=(l+r)>>1;
if(x<=mid) update(lson,x,v);
else update(rson,x,v);
pushup(i);
}
int query(int i,int l,int r,int L,int R)
{
if(L<=l&&r<=R) return Max[i];
int mid=(l+r)>>1,ans=0;
if(L<=mid) ans=max(ans,query(lson,L,R));
if(R>mid) ans=max(ans,query(rson,L,R));
return ans;
}
int main()
{
while(~scanf("%d%d",&n,&m))
{
for(i=1;i<=n;i++)
scanf("%d",a+i);
build(1,1,n);
int x,y;
char str[3];
while(m--)
{
scanf("%s%d%d",str,&x,&y);
if(str[0]=='Q')
printf("%d\n",query(1,1,n,x,y));
else update(1,1,n,x,y);
}
}
return 0;
}
HDU 1698 区间更新,区间查询,lazy标记种类,水……
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#include<queue>
#include<set>
#include<cmath>
#include<bitset>
#define mem(a,b) memset(a,b,sizeof(a))
#define lson i<<1,l,mid
#define rson i<<1|1,mid+1,r
#define INF 1000000
#define maxn 400010
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
int sum[maxn],lazy[maxn],n,q;
void pushup(int i)
{
sum[i]=sum[i<<1]+sum[i<<1|1];
}
void pushdown(int i,int l,int r)
{
if(lazy[i])
{
int mid=(l+r)>>1;
lazy[i<<1]=lazy[i<<1|1]=lazy[i];
sum[i<<1]=(mid-l+1)*lazy[i<<1];
sum[i<<1|1]=(r-mid)*lazy[i<<1|1];
lazy[i]=0;
}
}
void update(int i,int l,int r,int L,int R,int v)
{
if(l==L&&r==R)
{
sum[i]=(r-l+1)*v;
lazy[i]=v;
return ;
}
int mid=(l+r)>>1;
pushdown(i,l,r);
if(R<=mid) update(lson,L,R,v);
else if(L>mid) update(rson,L,R,v);
else
{
update(lson,L,mid,v);
update(rson,mid+1,R,v);
}
pushup(i);
}
void build(int i,int l,int r)
{
if(l==r)
{
sum[i]=1;
lazy[i]=1;
return ;
}
sum[i]=lazy[i]=0;
int mid=(l+r)>>1;
build(lson);build(rson);
pushup(i);
}
int main()
{
int t;
cin>>t;
for(int i=1;i<=t;i++)
{
scanf("%d%d",&n,&q);
build(1,1,n);
int l,r,v;
while(q--)
{
scanf("%d%d%d",&l,&r,&v);
update(1,1,n,l,r,v);
}
printf("Case %d: The total value of the hook is %d.\n",i,sum[1]);
}
return 0;
}
标签:blog os io for 2014 ar amp size
原文地址:http://blog.csdn.net/u011466175/article/details/38294513