爱篮球爱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条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
    • ¥15 这种微信登录授权 谁可以做啊
    • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
    • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
    • ¥15 网络设备配置与管理这个该怎么弄
    • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
    • ¥20 西门子S7-Graph,S7-300,梯形图
    • ¥50 用易语言http 访问不了网页
    • ¥50 safari浏览器fetch提交数据后数据丢失问题
    • ¥15 matlab不知道怎么改,求解答!!