求助环境问题
查看原帖
求助环境问题
105833
樱洛CHANGE楼主2021/9/11 16:04

这份代码:

#include<bits/stdc++.h>
#define awa 2147483647
#define zhale exit(0)
#define re register
#define int long long
#define rint re int

using namespace std;
/*Shioiri Kukuri*/

typedef long long ll;
typedef unsigned long long ull;
typedef double qwq;
typedef pair<int,int> P;
typedef pair<ll,ll> llP;
#define rll re ll
#define rqwq re qwq

/*Otho Ai*/

template<class T>
void Swap(T &x,T &y)
{
	T z=x;
	x=y;
	y=z;
}

//#define PairOP
#ifdef PairOP
template<class T1,class T2>
inline const pair<T1,T2> operator + (const pair<T1,T2> &p1,const pair<T1,T2> &p2){
	return pair<T1,T2>(p1.first+p2.first,p1.second+p2.second);
}

template<class T1,class T2>
inline const pair<T1,T2> operator - (const pair<T1,T2> &p1,const pair<T1,T2> &p2){
	return pair<T1,T2>(p1.first-p2.first,p1.second-p2.second);
}
#endif

//#define FastIO
#ifdef FastIO
	char buf[1<<21],*p1,*p2;
	#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
#endif

template<class T>
T Read()
{
	T x=0,f=1;
	char ch=getchar();
	while(ch<'0'||ch>'9')
	{
		if(ch=='-')
		f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9')
	{
		x=(x<<1)+(x<<3)+(ch^'0');
		ch=getchar();
	}
	return x*f;
}
//int (*read)()=Read<int>;
ll (*readll)()=Read<ll>;
#define read Read<int>

const int N=1e6+5;
int n,m,cnta,cntb;
class Point{
	public:
		int x,y;
		Point(){}
		Point(rint _x,rint _y):x(_x),y(_y){}
		inline friend bool operator < (const Point &a,const Point &b){
			return a.x==b.x?a.y<b.y:a.x<b.x;
		}
		inline void In(){
			cin>>x>>y;
		}
}a[N],b[N],p[N];

inline void Init()
{
	sort(a+1,a+1+n),sort(b+1,b+1+m);
	vector<Point> tmp;a[0].y=awa;
	for(rint i=1,last=0;i<=n;++i)
	if(a[i].y<a[last].y) tmp.push_back(Point(a[i].x,a[i].y)),last=i;
	cnta=tmp.size(),memset(a,0,sizeof(a));
	for(rint i=1;i<=cnta;++i) a[i]=tmp[i];
	reverse(b+1,b+1+m),p[++cntb]=b[1];
	for(rint i=2;i<=m;++i) if(p[cntb].y<b[i].y) p[++cntb]=b[i];
	reverse(p+1,p+1+cntb),memset(b,0,sizeof(b));
	for(rint i=1;i<=cntb;++i) b[i]=p[i];
}

ll ans;

inline ll Val(Point a,Point b)
{
	return (b.y-a.y)*(b.x-a.x);
}

inline void Solve(rint la,rint ra,rint lb,rint rb)
{
	#define midb (lb+((rb-lb)>>1))
	if(la>ra||lb>rb) return ;
	ll maxans=-1e18,mida=0;
	for(rint i=la;i<=ra;++i) 
	if((b[midb].x>a[i].x||b[midb].y>a[i].y)&&Val(a[i],b[midb])>maxans) maxans=Val(a[i],b[midb]),mida=i;
	if(mida) Solve(la,mida,lb,midb-1),Solve(mida,ra,midb+1,rb),ans=max(ans,maxans);
}

inline int True()
{
//#define Freopen
#ifdef Freopen
	freopen(".in","r",stdin);
	freopen(".out","w",stdout);
#endif

//#define Clock
#ifdef Clock
	rint STR=clock();
#endif

    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
	cin>>n>>m;
	for(rint i=1;i<=n;++i) a[i].In();
	for(rint i=1;i<=m;++i) b[i].In();
	Init(),Solve(1,cnta,1,cntb);
    cout<<ans;

#ifdef Clock
	rint END=clock();
	printf("Time:%dms\n",int((END-STR)/(qwq)CLOCKS_PER_SEC*1000));
	printf("Time:%ds\n",int((END-STR)/(qwq)CLOCKS_PER_SEC));
#endif
	return (0-0);//q(0-0)p q(>-<)p
}

int Love=True();

signed main(){;}

这份数据

正确答案:7462

本地devc++跑的答案是7462

luogu在线ide和loj给出的答案都是8930

很疑惑,求大神解答原因

2021/9/11 16:04
加载中...