64,654
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
#include<algorithm>
#include<set>
using namespace std;
typedef long long ll;
ll n;
struct Point{
ll x;
ll y;
Point(){
}
Point(ll xx,ll yy):x(xx),y(yy){
}
bool operator==(const Point other) const
{
if(x==other.x&&y==other.y)
return true;
else
return false;
}
bool operator<(const Point other) const
{
return x<other.x;
}
};
set<Point> p_set1,p_set2;//用来记录交点
//检查y=x的交点,并记录下来
int check1(Point p1,Point p2)
{
if(p1.x>=p1.y&&p1.x<=p2.y)
p_set1.insert(Point(p1.x,p1.x));
if(p2.x>=p1.y&&p2.x<=p2.y)
p_set1.insert(Point(p2.x,p2.x));
if(p1.y>=p1.x&&p1.y<=p2.x)
p_set1.insert(Point(p1.y,p1.y));
if(p2.y>=p1.x&&p2.y<=p2.x)
p_set1.insert(Point(p2.y,p2.y));
return p_set1.size();
}
//检查y=n-1-x,并将交点记录下来
int check2(Point p1,Point p2)
{
ll y=n-1-p1.x;
if(y>=p1.y&&y<=p2.y)
p_set2.insert(Point(p1.x,y));
y=n-1-p2.x;
if(y>=p1.y&&y<=p2.y)
p_set2.insert(Point(p2.x,y));
ll x=n-1-p1.y;
if(x>=p1.x&&x<=p2.x)
p_set2.insert(Point(x,p1.y));
x=n-1-p2.y;
if(x>=p1.x&&x<=p2.x)
p_set2.insert(Point(x,p2.y));
return p_set2.size();
}
int main()
{
cin>>n;
int q;
cin>>q;
while(q--)
{
Point p1,p2;
cin>>p1.y>>p1.x;
cin>>p2.y>>p2.x;
p_set1.clear();
p_set2.clear();
ll len1=0,len2=0;
if(check1(p1,p2)==2)
{
set<Point>::iterator it=p_set1.begin();
it++;
len1=(*it).x-p_set1.begin()->x+1;
}
else
len1=p_set1.size();
if(check2(p1,p2)==2)
{
set<Point>::iterator it=p_set2.begin();
it++;
len2=(*it).x-p_set2.begin()->x+1;
}
else
len2=p_set2.size();
//若是奇数去除中心点
if(n%2==1)
{
ll c=(n-1)/2;
if(p_set1.count(Point(c,c)))
len1--;
}
cout<<len1+len2<<endl;
}
return 0;
}
#include <iostream>
#include<iostream>
using namespace std;
int main(){
long long n,q,a,b,c,d,count;
cin>>n>>q;
for(int i=0;i<q;i++){
count=0;
cin>>a>>b>>c>>d;
for(int j=a;j<=c;j++){
if(b<=j&&j<=d)
count++;
if(b<=n-j-1&&n-j-1<=d)
count++;
}
cout<<count<<endl;
}
}
#include<iostream>
using namespace std;
int main() {
long long n, q, a, b, c, d, count;
cin >> n >> q;
for (int i = 0; i < q; i++) {
count = n % 2 ? -1 : 0;
cin >> a >> b >> c >> d;
for (int j = a; j <= c; j++) {
if (b <= j && j <= d)
count++;
if (b <= n - j - 1 && n - j - 1 <= d)
count++;
}
cout << count << endl;
}
return 0;
}