P11020 TLE 求条
  • 板块学术版
  • 楼主hyl_____
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/9/7 21:59
  • 上次更新2024/9/7 22:34:23
查看原帖
P11020 TLE 求条
1035028
hyl_____楼主2024/9/7 21:59

题目

#include<bits/stdc++.h>
using namespace std;
char Map[2003][2003];
int line[2003],column[2003];
int main() {
	int t;
	scanf("%d",&t);
	while(t--) {
		int n,m,k;
		int sum=0;
		scanf("%d%d%d",&n,&m,&k);
		for(int i=1;i<=n;i++) {
			for(int j=1;j<=m;j++) {
				Map[i][j]='.';
				line[i]=0;
				column[j]=0;
			}
		}
		if(k==0) {
			for(int i=1;i<=n;i++) {
				for(int j=1;j<=m;j++) {
					printf("%c",Map[i][j]);
				}
				printf("\n");
			}
			continue;
		}
		if(k<=min(n,m)) {
			for(int i=1;i<=min(n,m);i++) {
				Map[i][i]='S';
				sum++;
				if(sum==k) break;
			} 
			for(int i=1;i<=n;i++) {
				for(int j=1;j<=m;j++) {
					printf("%c",Map[i][j]);
				}
				printf("\n");
			}
			continue;
		}
		if(k>min(n,m)) {
			for(int i=1;i<=min(n,m);i++) {
				Map[i][i]='S';
				column[i]++;
				line[i]++;
				sum++;
			} 
			for(int i=min(n,m)+1;i<=k;i++) {
				int minn=1e9;
				int minn1=1e9;
				int nowx=0,nowy=0;
				for(int j=1;j<=n;j++) {
					if(minn>line[j]) minn=line[j],nowx=j;
				}
				for(int j=1;j<=m;j++) {
					if(minn1>column[j]&&Map[nowx][j]=='.') minn1=column[j],nowy=j;
				}
				line[nowx]++;
				column[nowy]++;
				Map[nowx][nowy]='S';
			}
			for(int i=1;i<=n;i++) {
				for(int j=1;j<=m;j++) {
					printf("%c",Map[i][j]);
				}
				printf("\n");
			}
			continue;
		}
	}
	return 0;
}
2024/9/7 21:59
加载中...