矩形不一样是矩形不重叠

回复帖子

@TheOnlyMan 2021-02-23 23:18 回复

我以为不重复矩形是边长不一样,结果我这样写下去直接超鬼了。



include<iostream>
include<map>
define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;

const int maxn=30;

int t[maxn];

struct node{

int x,y;
}p[maxn];

map<int,int>mp;

int main()

{

int n,cnt=0,num=0;

double sum=0;

cin>>n;

rep(i,1,n){

    cin>>t[i];

    sum+=t[i];

    t[i]+=t[i-1];

}

sum/=2;

rep(i,1,n)

    rep(j,i+1,n){

        if(t[j]-t[i]==sum){
            p[++cnt].x=i,p[cnt].y=j;
            break;
    }

    if(t[j]-t[i]>sum)break;
}

rep(i,1,cnt-1)

    rep(j,i+1,cnt){

if(mp.find(t[p[j].x]-t[p[i].x])==mp.end())

if(mp.find(t[p[j].y]-t[p[i].y])==mp.end())

{

    mp[t[p[j].x]-t[p[i].x]]=1;

    mp[t[p[j].y]-t[p[i].y]]=1;

    num++;

}       

} 

cout<<num<<endl;
}```
反馈
如果你认为某个帖子有问题,欢迎向洛谷反馈,以帮助更多的同学。



请具体说明理由,以增加反馈的可信度。