全WA求助
  • 板块P1531 I Hate It
  • 楼主aliah
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/5/29 12:54
  • 上次更新2024/5/29 13:50:51
查看原帖
全WA求助
1095195
aliah楼主2024/5/29 12:54

样例过了,1号测试点下载下来了,错了一个数据 答案是: 32766 32744 32764 32766 32764 32766 32765 32766 32766 32766 32766 32766 32766 32764 32766 32766 32768 32764 32766 32745 32758 我的程序结果是: 32766 32744 32764 32766 32764 32766 32764 32766 32766 32766 32766 32766 32766 32764 32766 32766 32768 32764 32766 32745 32744 实在找不到问题所在了,求助

#include<bits/stdc++.h>
using namespace std;
struct lt
{
	int a,l,r;
	lt *lc,*rc;
};
int a[200001];
void fun(lt *h)
{
	int t;
	if(h->l==h->r)
	{
		h->a=a[h->l];
		return ;
	}
	t=((h->l+h->r)/2);
	h->lc=new lt;
	h->lc->l=h->l;
	h->lc->lc=0;
	h->lc->r=t;
	h->lc->rc=0;
	fun(h->lc);
	h->rc=new lt;
	h->rc->lc=0;
	h->rc->l=t+1;
	h->rc->rc=0;
	h->rc->r=h->r;
	fun(h->rc);
	h->a=0x80000000; 
	if(h->lc && h->lc->a>h->a)
		h->a=h->lc->a;
	if(h->rc && h->rc->a>h->a)
		h->a=h->rc->a;
}
int Q(lt *h,int x,int y)
{
	int ans=0,t;
	if(h->l>=x && h->r<=y)
		return h->a;
	if(h->lc->l>=x && h->lc->r<=y && h->lc->a>ans)
		ans=h->lc->a;
	if(h->lc->l<=y && h->lc->r>=x)
	{
		t=Q(h->lc,x,y);
		if(t>ans)
			ans=t;
	}
	if(h->rc->l>=x && h->rc->r<=y && h->lc->a>ans)
		ans=h->rc->a;
	if(h->rc->l<=y && h->rc->r>=x)
	{
		t=Q(h->rc,x,y);
		if(t>ans)
			ans=t;
	}
	return ans;
}
void U(lt *h,int x,int y)
{
	if(h->a<y)
		h->a=y;
	if(h->r>h->l)
	{
		if(h->lc->r>=x)
			U(h->lc,x,y);
		else
			U(h->rc,x,y);
	}
}
void f(lt *h)
{
	cout<<h->l<<"  "<<h->r<<"  "<<h->a;
	getchar();
	if(h->lc)
		f(h->lc);
	if(h->rc)
		f(h->rc);
}
int main()
{
	//freopen("abc.txt","w",stdout);
	int n,m,i,x,y;
	char c;
	lt *h;
	cin>>n>>m;
	for(i=0;i<n;i++)
		cin>>a[i];
	h=new lt;
	h->a=0;
	h->l=0;
	h->r=n-1;
	h->lc=0;
	h->rc=0;
	fun(h);
	for(i=0;i<m;i++)
	{
	f(h);
		cin>>c>>x>>y;
		if(c=='Q')
			cout<<Q(h,x-1,y-1)<<endl;
		else
			U(h,x-1,y);
	}
	return 0; 
}
2024/5/29 12:54
加载中...