bug全集

寄一下各种各样的离谱问题。

  1. [2024/7/26][杭电多校第11题]
    源代码:
#include<bits/stdc++.h>
namespace Limie{
	#define x first
	#define y second
	#define int long long
	using namespace std;
	typedef long long LL;
	typedef unsigned long long ULL;
	typedef pair<int,int> PII;
}using namespace Limie;
int n;
int a0=-1e18,b0=-1e18,c0=1e18,d0=1e18,a1=-1e18,b1=-1e18,c1=1e18,d1=1e18;
int get(int t)
{
	if(t<0)t=-t;
	return (max(a0,b0+t)-min(c0,d0-t))+(max(a1,b1+t)-min(c1,d1-t));
}
signed main()
{
	cin>>n;
	while(n--){
		int x,y;
		char ch;
		cin>>x>>y>>ch;
		if(ch=='E'){
			a1=max(a1,y);
			c1=min(c1,y);
			b0=max(b0,x);
		}
		if(ch=='W'){
			a1=max(a1,y);
			c1=min(c1,y);
			d0=min(d0,x);
		}
		if(ch=='N'){
			a0=max(a0,x);
			c0=min(c0,x);
			b1=max(b1,y);
		}
		if(ch=='S'){
			a0=max(a0,x);
			c0=min(c0,x);
			d1=min(d1,y);
		}
	}
	int mn=get(0);
	mn=min(mn,get(a0-b0));
	mn = min (mn, get(a0 - c0));
    mn = min (mn, get(b0 - c0));
	mn=min(mn,get(d0-c0));
	mn=min(mn,get(a1-b1));
    mn = min (mn, get(a1 - c1));
    mn = min (mn, get(b1 - c1));
	mn=min(mn,get(d1-c1));
	cout<<mn*2;
}

问题:EWSN中有一个没有出现就寄了,例子:1 1 1 E

代码

#include<bits/stdc++.h>
namespace Limie{
	#define x first
	#define y second
	#define int long long
	using namespace std;
	typedef long long LL;
	typedef unsigned long long ULL;
	typedef pair<int,int> PII;
}using namespace Limie;
int n;
int a0=-1e18,b0=-1e18,c0=1e18,d0=1e18,a1=-1e18,b1=-1e18,c1=1e18,d1=1e18;
int get(int t)
{
	if(t<0)t=-t;
	return (max(a0,b0+t)-min(c0,d0-t))+(max(a1,b1+t)-min(c1,d1-t));
}
signed main()
{
	cin>>n;
	while(n--){
		int x,y;
		char ch;
		cin>>x>>y>>ch;
		if(ch=='E'){
			a1=max(a1,y);
			c1=min(c1,y);
			c0=min(c0,x);
			b0=max(b0,x);
		}
		if(ch=='W'){
			a1=max(a1,y);
			c1=min(c1,y);
			a0=min(a0,x);
			d0=min(d0,x);
		}
		if(ch=='N'){
			a0=max(a0,x);
			c0=min(c0,x);
			c1=min(c1,y);
			b1=max(b1,y);
		}
		if(ch=='S'){
			a0=max(a0,x);
			c0=min(c0,x);
			a1=min(a1,y);
			d1=min(d1,y);
		}
	}
	int mn=get(0);
	mn=min(mn,get(a0-b0));
	mn = min (mn, get(a0 - c0));
    mn = min (mn, get(b0 - c0));
	mn=min(mn,get(d0-c0));
	mn=min(mn,get(a1-b1));
    mn = min (mn, get(a1 - c1));
    mn = min (mn, get(b1 - c1));
	mn=min(mn,get(d1-c1));
	cout<<mn*2;
}

posted @ 2024-07-26 17:19  Limie  阅读(20)  评论(0)    收藏  举报