为什么用数组标记10分,归零100分啊
查看原帖
为什么用数组标记10分,归零100分啊
750689
CNzzc楼主2024/10/18 20:16

数组标记:

#include<bits/stdc++.h>
#define ll long long
#define endl '\n'
#define up(i,j,k,l) for(int i=j;i<=k;i+=l)
#define down(i,j,k,l) for(int i=j;i>=k;i-=l)
using namespace std;
const int N=2e3+10;
int n,m,k,l,d;
struct node{
	int x,y,p,q;
};
node a[N];
int s[N],h[N];
vector<int> st,sa,ha;
bool fs[N],fh[N];
int us[N],uh[N];
int ct,res;
void solve()
{
	cin>>n>>m>>k>>l>>d;
	up(i,1,d,1){
		cin>>a[i].x>>a[i].y>>a[i].p>>a[i].q;
		if(a[i].x==a[i].p && abs(a[i].y-a[i].q)==1){
			s[min(a[i].y,a[i].q)]++;
		}
		if(a[i].y==a[i].q && abs(a[i].x-a[i].p)==1){
			h[min(a[i].x,a[i].p)]++;
		}
	}
	up(i,1,k,1){
		ct=-1;
		res=0;
		up(j,1,n,1){
			if(h[j]>ct && fh[j]==false){
				fh[j]=true;
				ct=h[j];
				res=j;
			}
		}
		uh[res]=1;
	}
	up(i,1,l,1){
		ct=-1;
		res=0;
		up(j,1,m,1){
			if(s[j]>ct && fs[j]==false){
				fs[j]=true;
				ct=s[j];
				res=j;
			}
		}
		us[res]=1;
	}	
	up(i,1,n,1){
		if(uh[i]){
			cout<<i<<' ';
		}
	}
	cout<<endl;
	up(i,1,m,1){
		if(us[i]){
			cout<<i<<' ';
		}
	}
	cout<<endl;	
	return;
}
int main()
{
    //ios::sync_with_stdio(false);
	//cin.tie(0);
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	int _=1;
	//cin>>_;
	up(i,1,_,1){
		solve();
	}
	return 0;
}

归零:

#include<bits/stdc++.h>
#define ll long long
#define endl '\n'
#define up(i,j,k,l) for(int i=j;i<=k;i+=l)
#define down(i,j,k,l) for(int i=j;i>=k;i-=l)
using namespace std;
const int N=2e3+10;
int n,m,k,l,d;
struct node{
	int x,y,p,q;
};
node a[N];
int s[N],h[N];
vector<int> st,sa,ha;
int us[N],uh[N];
int ct,res;
void solve()
{
	cin>>n>>m>>k>>l>>d;
	up(i,1,d,1){
		cin>>a[i].x>>a[i].y>>a[i].p>>a[i].q;
		if(a[i].x==a[i].p && abs(a[i].y-a[i].q)==1){
			s[min(a[i].y,a[i].q)]++;
		}
		if(a[i].y==a[i].q && abs(a[i].x-a[i].p)==1){
			h[min(a[i].x,a[i].p)]++;
		}
	}
	up(i,1,k,1){
		ct=-1;
		res=0;
		up(j,1,n,1){
			if(h[j]>ct){
				ct=h[j];
				res=j;
			}
		}
		uh[res]=1;
		h[res]=0;
	}
	up(i,1,l,1){
		ct=-1;
		res=0;
		up(j,1,m,1){
			if(s[j]>ct){
				ct=s[j];
				res=j;
			}
		}
		us[res]=1;
		s[res]=0;
	}	
	up(i,1,n,1){
		if(uh[i]){
			cout<<i<<' ';
		}
	}
	cout<<endl;
	up(i,1,m,1){
		if(us[i]){
			cout<<i<<' ';
		}
	}
	cout<<endl;	
	return;
}
int main()
{
    //ios::sync_with_stdio(false);
	//cin.tie(0);
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	int _=1;
	//cin>>_;
	up(i,1,_,1){
		solve();
	}
	return 0;
}
2024/10/18 20:16
加载中...