求问
  • 板块学术版
  • 楼主2107LY
  • 当前回复1
  • 已保存回复2
  • 发布时间2024/10/24 19:58
  • 上次更新2024/10/24 20:51:57
查看原帖
求问
576127
2107LY楼主2024/10/24 19:58

P1056实在想不明白该怎么改代码,有大佬能帮我看看吗

#include<bits/stdc++.h>
using namespace std;
int a[5050][5050],m,n,k,w,d,flagm[5050],flagn[5050],maxm=0,maxn=0;
int main(){
	cin>>m>>n>>k>>w>>d;
	memset(a,0,sizeof(a));
	for(int i=1;i<=d;i++){
		int x,y,q,p;
		cin>>x>>y>>q>>p;
		a[x][y]=i;
		a[q][p]=i;
		if(x==q){
			flagn[min(y,p)]+=1;
			maxn=max(maxn,min(y,p));
		} 
		if(y==p){
			flagm[min(x,q)]+=1;
			maxm=max(maxm,min(x,q));
		} 
	}
	int l=0,r=0;
	for(int i=1;i<=maxm;i++){
		r=max(r,flagm[i]);
	}
	
	for(int i=1;i<=maxm;i++){
		if(flagm[i]==r&&w>=0){
			flagm[i]=0;
			for(int j=1;j<=n;j++){
				if(a[i][j]==a[i+1][j]){
					a[i][j]=0;
					a[i+1][j]=0;
				}
			}
			r=0;
			cout<<i<<" ";
			for(int i=1;i<=maxm;i++){
				r=max(r,flagm[i]);
			}
			w--;
		}
	}	
	cout<<endl;
	for(int i=1;i<=maxn;i++){
		l=max(l,flagn[i]);
	}
	for(int i=1;i<=maxn;i++){
		if(flagn[i]==l&&k>=0){
			flagn[i]=0;
			for(int j=1;j<=m;j++){
				if(a[j][i]==a[j][i+1]){
					a[j][i]=0;
					a[j][i+1]=0;
				}
			}
			cout<<i<<" ";
			l=0;
			for(int j=1;j<=maxn;j++){
				l=max(l,flagn[j]);
			}
			k--;
		}
	}
	return 0;
} 
2024/10/24 19:58
加载中...