【求找错】关于一道题目的check函数
  • 板块学术版
  • 楼主Dreamsuzki
  • 当前回复1
  • 已保存回复1
  • 发布时间2020/6/8 17:44
  • 上次更新2023/11/7 00:59:14
查看原帖
【求找错】关于一道题目的check函数
216438
Dreamsuzki楼主2020/6/8 17:44

给出 nn 个矩形的长和宽,求有多少对(i,j,k)(i,j,k)满足:

  • 1i,j,kn1\le i,j,k\le n,且i,j,ki,j,k互不相同
  • ii号矩形能放得下jj号和kk号矩形在里面,并且j,kj,k号矩形,并且j,kj,k号矩形不重叠而且不能斜着放
  • 矩形的边可以重叠。
  • 允许矩形旋转 9090 度后放入矩形中。

代码:

#include<bits/stdc++.h>
#define ll long long
#define landingyu work();
#define AK return
#define IOI 0;
#define inf 0x3f3f3f3f
#define eps 0.00001
using namespace std;
inline int read(){
    int 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^48);
        ch=getchar();
    }
    return x*f;
}
void write(int x){
    if(x<0){
        putchar('-');
        x=-x;
    }
    if(x>9)write(x/10);
    putchar(x%10+'0');
}
struct rectangle{
	int x;
	int y;
}a[60];
int n,ans;
bool check(int i,int j,int k){
	if(a[j].y+a[k].y>a[i].y && a[j].x+a[k].x>a[i].x) return false;
	if(a[j].x>a[i].x || a[j].y>a[i].y) return false;
	if(a[k].x>a[i].x || a[k].y>a[i].y) return false;
	return true;
}
void work(){
    n=read();
    for(int i=1;i<=n;i++) cin>>a[i].x>>a[i].y;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            for(int k=1;k<=n;k++)
			    if(i!=j && j!=k && i!=k){
            	    if(check(i,j,k)){
            		    ans++;
//            		    cout<<i<<" "<<j<<" "<<k<<endl;
            		    continue;
				    }
				    swap(a[j].x,a[j].y);
            	    if(check(i,j,k)){
            		    ans++;
//            		    cout<<i<<" "<<j<<" "<<k<<endl;
            		    continue;
				    }
				    swap(a[k].x,a[k].y);
            	    if(check(i,j,k)){
            		    ans++;
//            		    cout<<i<<" "<<j<<" "<<k<<endl;
            		    continue;
				    }
				    swap(a[j].x,a[j].y);
            	    if(check(i,j,k)){
            		    ans++;
//            		    cout<<i<<" "<<j<<" "<<k<<endl;
            		    continue;
				    }
			    }
	cout<<ans;
}
int main(){landingyu AK IOI}

应该是checkcheck函数出错了,但是构造不出错误数据,望大佬们不吝赐教。

注:禁止 无意义回复 / 讨论代码最后一行

2020/6/8 17:44
加载中...