【去重?】【模拟】糊涂的教授

前言:

l t h lth 大佬教了大致思路,然后我看了一会儿他的标,然后敲了一下竟然A了。
l y f lyf 大佬竟然拓扑排序A了。


题目:

陈教授是一个国际知名的教授,很多单位都争先恐后邀请他演讲,今天下午陈教授就要做一个非常重要的演讲。由于陈教授年纪大了,对于一些不重要的小事情有点糊涂,今天上午他把自己做演讲要用的幻灯片随便堆放在一起。因此,演讲之前他不得不去整理这些幻灯片。由于时间很紧,他希望尽可能简单地完成它。情况是这样,陈教授这次演讲一共要用 n 张幻灯片(n<=26),这 n 张幻灯片按照演讲要使用的顺序已经用数字 1,2,…,n 在上面编上了号。因为幻灯片是透明的,所以我们不能一下子看清每一个数字所对应的幻灯片。
现在我们用大写字母 A,B,C,…再次把幻灯片依次编上号,你的任务是编写一个程序,把幻灯片的数字编号和字母编号对应起来,显然这种对应应该是唯一的;若是出现多种对应的情况或是某些数字编号和字母对应不起来,我们就称对应是无法实现的。


输入:

文件第一行只有一个数n,表示有 n 张幻灯片,接下来的 n 行第行包括 4 个整数 Xmin,Xmax,Ymin,Ymax (整数之间用空格分开),为幻灯片的坐标,这 n 张幻灯片按其在输入文件中出现的顺序从前到后依次编号为 A,B,C,…再接下来的 n 行依次为 n 个数字编号的坐标 X,Y,显然在幻灯片之外是不会有数字的。


输出:

若是对应可以实现,你的输出文件应该包括 n 行,每一行为一个字母和一个数字,中间以一个空格隔开,并且各行以字母的升序排列,注意输出的字母要大写并且顶格;反之,若是对应无法实现,在文件的第一行顶格输出 None 即可。行首行末无多余空格。


样例输入:

4 
6 22 10 20
4 18 6 16
8 20 2 18
10 24 4 8
9 15
19 17
11 7
21 11

样例输出:

A  4
B  1
C  2
D  3

思路:

它是由几个幻灯片重叠在一起,让你来找相对应的所以就画个图感性理解一下
在这里插入图片描述
先看幻灯片ABC
A中有1 2
B中有2 3
C中有3
而C中幻灯片只有一个3
所以ban掉3
然后循环第二遍
A中还是有1 2
但是!
B中3被ban掉了
所以B是2
再一次循环
因为2被ban了
所以A是1
所以就是
A 1
B 2
C 3
那么我们具体要怎么做呢,就是找谁唯一,然后一个个ban掉放起来,然后判断有没有被ban没被办就继续循环就行了。


C o d e Code

#include<cstdio>
#include<iostream>
using namespace std;
int sum,maxn[1000],answer[1000],Xmin[1000],Xmax[1000],Ymin[1000],Ymax[1000],n,x,y,f[1000][1000];
bool check;
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	scanf("%d%d%d%d",&Xmin[i],&Xmax[i],&Ymin[i],&Ymax[i]);//输入
	for(int i=1;i<=n;i++)
	{ 
	  scanf("%d%d",&x,&y);
	  for(int j=1;j<=n;j++)
	  if(x>=Xmin[j]&&y>=Ymin[j]&&x<=Xmax[j]&&y<=Ymax[j])//幻灯片的边界
	  f[i][++maxn[i]]=j;//判断是不是对应
	} 
	sum=n;
	while(sum)
	{
		for(int i=1;i<=n;i++)
		{
			if(maxn[i]==1)
			{
				check=true;//判断是否存在唯一性
				answer['A'+f[i][1]]=i;//计算
				for(int j=1;j<=n;j++)
				for(int k=1;k<=maxn[j];k++)
				if(f[j][k]==f[i][1]&&j!=i){swap(f[j][k],f[j][maxn[j]]);f[j][maxn[j]]=0;maxn[j]--;}
			   sum--;f[i][1]=1;maxn[i]--;//ban掉
			}
			
		}
		if(check)check=false;
		else {printf("None");return 0;}
	} 
	for(int i=1;i<=n;i++)
	{
		printf("%c %d",64+i,answer['A'+i]);//输出
		printf("\n");
	}
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/hunkwu/article/details/91874018