E求调
  • 板块学术版
  • 楼主Hughpig
  • 当前回复2
  • 已保存回复4
  • 发布时间2023/12/2 22:04
  • 上次更新2023/12/3 09:14:18
查看原帖
E求调
646208
Hughpig楼主2023/12/2 22:04

RT,就wa一个点,寄

/*
*Author: Hughpig
*made in China
*/

#include<bits/stdc++.h>
using namespace std;
int n,m,l,ans,a[100007],b[100007],c[100007],d[100007],st[100007][30];

void prework(){
	for(int i=1;i<=m;i++)st[i][0]=b[i];
	for(int j=1;j<=log2(m);j++){
		for(int i=1;i+(1<<j)-1<=n;i++){
			st[i][j]=max(st[i][j-1],st[i+(1<<(j-1))][j-1]);
		}
	}
}

int query(int l,int r){
	if(l>r)return 0;
	int k=log2(r-l+1);
	return max(st[l][k],st[r-(1<<k)+1][k]);
}
vector<int> v[100007];

int main()
{
	//ios::sync_with_stdio(false);
    //cin.tie(0),cout.tie(0);
	cin>>n>>m>>l;
	for(int i=1;i<=n;i++)cin>>a[i];
	for(int i=1;i<=m;i++)cin>>b[i];
	prework();
	for(int i=1;i<=l;i++){
		cin>>c[i]>>d[i];
		v[c[i]].push_back(d[i]);
		//cout<<i;
	}
	for(int i=1;i<=n;i++)sort(v[i].begin(),v[i].end()),v[i].push_back(0);
	//for(int i=0;i<v[2].size();i++)cout<<v[2][i]<<' ';
	for(int i=1;i<=n;i++){
		//cout<<ans<<' ';
		if(v[i].size()==1){
			ans=max(ans,a[i]+query(1,m));
		}
		ans=max(ans,a[i]+query(1,v[i][0]-1));
		for(int j=0;j<v[i].size()-1;j++)ans=max(ans,a[i]+query(v[i][j]+1,v[i][j+1]-1));
		//cout<<i<<' '<<ans<<' ';
	}
	cout<<ans;
	return 0;
}
2023/12/2 22:04
加载中...