爱篮球爱IT 2015-10-21 02:26 采纳率: 0%
浏览 535

为什么这个程序会Time Limit Exceeded——题目是hdu1754

#include
#include
using namespace std;
int sum[200000*3];
void build(int L,int R,int rt)
{
if(L==R)
{
scanf("%d",&sum[rt]);
return;
}
else
{
int mid=(L+R)>>1;
build(L,mid,rt< build(mid+1,R,(rt sum[rt]=sum[rtsum[(rt<<1)+1]?sum[rt<<1]:sum[(rt<<1)+1];
}

}
int qmax(int ql,int qr,int L,int R,int rt)
{
if(ql<=L&&R<=qr)
return sum[rt];
else
{
int mid=(L+R)>>1;
int ret=0;
if(ql<=mid)
ret=qmax(ql,qr,L,mid,rt<ret?qmax(ql,qr,L,mid,rt< if(qr>mid)
ret=qmax(ql,qr,mid+1,R,(rt<ret?qmax(ql,qr,mid+1,R,(rt< return ret;
}
}
void update(int p,int q,int l,int r,int rt)
{
if(l==r)
{
sum[rt]=q;
return;
}
int m=(l+r)>>1;
if(p<=m)
update(p,q,l,m,rt< else
update(p,q,m+1,r,(rt sum[rt]=sum[rtsum[(rt<<1)+1]?sum[rt<<1]:sum[(rt<<1)+1];
}

int main()
{
int N,M;
int a,b;
while(~scanf("%d%d",&N,&M))
{
for(int i=0;i<M;i++)
{
build(1,N,1);
char c;
scanf("%s",&c);
scanf("%d%d",&a,&b);
if(c=='Q')
{
printf("%d\n",qmax(a,b,1,N,1));
}
if(c=='U')
{
update(a,b,1,N,1);
}

}
}


return 0;

}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥30 这是哪个作者做的宝宝起名网站
    • ¥60 版本过低apk如何修改可以兼容新的安卓系统
    • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
    • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
    • ¥50 有数据,怎么用matlab求全要素生产率
    • ¥15 TI的insta-spin例程
    • ¥15 完成下列问题完成下列问题
    • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
    • ¥15 YoloV5 第三方库的版本对照问题
    • ¥15 请完成下列相关问题!