超详细解释!我都被我自己惊呆了!

(这个题目意思我缓冲了很久!一定要读懂题!否则做不出来)

题目不懂就多读呀~

题目描述

李教授于今天下午做一个非常重要的演讲。不幸的是他不是一个非常爱整洁的人,他把自己做演讲要用的幻灯片随便堆放在一起。因此,演讲之前他不得不去整理这些幻灯片。做为一个讲求效率的学者,他希望尽可能简单地完成它。情况是这样,教授这次演讲一共要用n张幻灯片(n<=26),这n张幻灯片按照演讲要使用的顺序已经用数字1,2,…,n在上面编上了号。因为幻灯片是透明的,所以我们不能一下子看清每一个数字所对应的幻灯片。

现在我们用大写字母A,B,C,。。。再次把幻灯片依次编上号,如样例所示,我们可以很快发现编号为A的幻灯片是第4张,把它抽出来后我们又可以确定编号为C的幻灯片是第2张,。。。

你的任务是编写一个程序,把幻灯片的数字编号和字母编号对应起来,显然这种对应应该是唯一的;若是出现多种对应的情况或是某些数字编号和字母对应不起来,我们就称对应是无法实现的。

输入格式

第一行只有一个数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

样例输出

A4
B1
C2
D3

代码:

 #include<iostream>
#include<cstdio>
#include<cstring> using namespace std; int n,anse;
int vis[][];
int head,QwQ[]; struct Q_zb{
Q_zb ()//进行初始化
{
top=;
ans=;
}
int xmin,xmax,ymin,ymax;
int top,ans;//统计答案
void add()
{
top++;
}
void shanchu()
{
top--;
}
}QAQ[]; void Q_in() //进行输入
{
int x,y; //横纵坐标
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%d%d%d%d",&QAQ[i].xmin,&QAQ[i].xmax,&QAQ[i].ymin,&QAQ[i].ymax);
}
for(int i=;i<=n;i++) //第几张数字幻灯片
{
scanf("%d%d",&x,&y);
for(int k=;k<=n;k++) //第几张字母幻灯片
{
if(QAQ[k].xmin<=x&&QAQ[k].xmax>=x&&QAQ[k].ymin<=y&&QAQ[k].ymax>=y)
{
QAQ[k].add();
vis[k][i]=;//k表示第'k+64'张幻灯片 (字母幻灯片)
} //表示'k+64'张幻灯片可能是第几张数字幻灯片,进行标记
}
}
} bool Q_topos() //判断是否能够找到对应关系
{
for(int i=;i<=n;i++) //字母幻灯片
{
if(QAQ[i].top==) return ; //如果没有数字幻灯片与其对应,则该题无法做
if(QAQ[i].top==)
{
QwQ[++head]=i; //将'i+64'字母幻灯片入栈
}
}
if(head==) return ; //如果字母幻灯片中没有一一对应的幻灯片,说明形成了环,则该题无法做
do
{
int s=QwQ[head];//字母幻灯片
head--; //弹出
for(int k=;k<=n;k++)
{
if(vis[s][k])
{
anse=QAQ[s].ans=k;//记录答案,便于输出
}
}
for(int x=;x<=n;x++)
{
if(vis[x][anse])//如果'x+64'张幻灯片与
{
vis[x][anse]=;//消除标记
QAQ[x].shanchu();//个数--
if(QAQ[x].top==) QwQ[++head]=x;//若再发现一一对应的幻灯片,入栈
}
}
}while(head>);
for(int i=;i<=n;i++)//判断是否有结果,有则进行输出
if(!QAQ[i].ans) return ;
return ;
} void Q_print()
{
for(int i=;i<=n;i++)
{
cout<<char(i+);
//cout<<" ";
cout<<QAQ[i].ans<<endl;
}
} int main()
{
Q_in();
if(!Q_topos()) printf("None");
else Q_print();
return ;
}

还有一种暴力代码:

(ps:偷得代码啦)

上面如果看不懂的话,就试试暴力吧~(不好意思注释懒得打了……)

 #include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
struct node
{
int n,num,xx,yy;
}aa[];
int a[][];
struct rrrr{
int numm;bool aaa[];
}rudu[];
int cmp(const node & ac,const node & bc)
{
if(ac.num<bc.num)return ;
else return ;
}
int main()
{
int n;
scanf("%d",&n);
for(int i=;i<=n;i++)
{
for(int j=;j<=;j++)
scanf("%d",&a[i][j]);
}
int x,y;
int ans[];
int vis[];
for(int i=;i<=n;i++)
{
scanf("%d%d",&x,&y);
aa[i].n=i;
aa[i].xx=x;
aa[i].yy=y;
for(int j=;j<=n;j++)
if(x>=a[j][]&&x<=a[j][]&&y>=a[j][]&&y<=a[j][])
{
aa[i].num++;
rudu[j].numm++;
rudu[j].aaa[i]=;
}
}
int tot=;
int flagg=;
for(int i=;i<=n;i++)
{
if(rudu[i].numm==)
{
flagg++;
}
}
if(flagg!=)
{
printf("None");
return ;
}
sort(aa+,aa+n+,cmp);
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
if(aa[i].xx>=a[j][]&&aa[i].xx<=a[j][]&&aa[i].yy>=a[j][]&&aa[i].yy<=a[j][]&&!vis[j])
{
vis[j]=;
ans[j]=aa[i].n;
tot++;
break;
}
}
for(int q=;q<=n;q++)
if(rudu[q].aaa[aa[i].n]==)
{
rudu[q].aaa[aa[i].n]=;
rudu[q].numm--;
}
}
int flag=;
for(int i=;i<=n;i++)
{
if(rudu[i].numm!=)
{
flag=;
break;
}
}
if(tot!=n||flag)
{
printf("None");
return ;
}
else
for(int i=;i<=n;i++)
{
printf("%c",i+);
printf("%d",ans[i]);
cout<<endl;
}
return ;
}

PID221 / 烦人的幻灯片☆ x的更多相关文章

  1. VIJOS PID221 / 烦人的幻灯片

     暴力出奇迹,学长诚不欺我. PID221 / 烦人的幻灯片 2017-04-14 19:47:08 运行耗时:30 ms 运行内存:12292 KB 查看最后一次评测记录 题目描述 李教授于今天下午 ...

  2. SID1190471 / 烦人的幻灯片 暴力出奇迹 !!!!!!!!!!!!!!!!!!

    PID221 / 烦人的幻灯片 ☆ 提交你的代码 查看讨论和题解 你还木有做过哦 我的状态         查看最后一次评测记录 质量还不能统计出来哦~ 题目评价 质量 无 ★★★★★ ★★★★☆ ★ ...

  3. sdibt 1244 烦人的幻灯片

    在这个OJ站还没号,暂时没提交,只是过了样例 真不愧是烦人的幻灯片,烦了我一小时 ---更新:OJ测试完毕,AC 烦人的幻灯片问题 Time Limit: 1 Sec  Memory Limit: 6 ...

  4. 【拓扑排序】烦人的幻灯片(slides)

    1395:烦人的幻灯片(slides) 时间限制: 1000 ms         内存限制: 65536 KB提交数: 753     通过数: 416 [题目描述] 李教授将于今天下午作一次非常重 ...

  5. 病毒&烦人的幻灯片

    <病毒>传送门 <烦人的幻灯片>传送门 病毒 描述 有一天,小y突然发现自己的计算机感染了一种病毒!还好,小y发现这种病毒很弱,只是会把文档中的所有字母替换成其它字母,但并不改 ...

  6. UVA663 Sorting Slides(烦人的幻灯片)

    UVA663 Sorting Slides(烦人的幻灯片) 第一次做到这么玄学的题,在<信息学奥赛一本通>拓扑排序一章找到这个习题(却发现标程都是错的),结果用二分图匹配做了出来 蒟蒻感觉 ...

  7. COGS——T 438. 烦人的幻灯片

    http://www.cogs.pro/cogs/problem/problem.php?pid=438 ★☆   输入文件:slides.in   输出文件:slides.out   简单对比时间限 ...

  8. iOS 界面 之 EALayout 无需反复编译,可视化实时界面,告别Storyboard AutoLayout Xib等等烦人的工具

    http://blog.csdn.net/fatherhui iOS开发,EALayout 无需反复编译,可视化实时界面,告别Storyboard AutoLayout Xib等等烦人的工具 EALa ...

  9. Jmeter之解决烦人的中文乱码问题

    Jmeter是一款国外开源工具,所以就跟LR一样,对中文的支持不是很好,经常会有同学录制脚本后回放或者是发送HTTP请求,看到响应报文里面有乱码! 那如何才能解决这个问题呢?我们分2个情况来分析: 一 ...

随机推荐

  1. reactstrap,scrollbar组件

    react-script 编译,部署,sass,less,test,helmet等 https://github.com/facebookincubator/create-react-app/blob ...

  2. Jmeter 04 Jmeter变量的使用

    在使用jmeter进行接口测试时,我们难免会遇到需要从上下文中获取测试数据的情况,这个时候就需要引入变量了. 定义变量 添加->配置元件->用户自定义的变量 添加->配置元件-> ...

  3. JMS(Java消息服务)入门教程(一)

    什么是Java消息服务 Java消息服务指的是两个应用程序之间进行异步通信的API,它为标准消息协议和消息服务提供了一组通用接口,包括创建.发送.读取消息等,用于支持JAVA应用程序开发.在J2EE中 ...

  4. spring boot-18.使用dubbo发布分布式服务

    我们新建两个项目分别模拟服务的提供者和服务的消费者,spring boot 集成dubbo主要分为以下几个步骤: 1.安装zookeeper 推荐使用docker 安装,使用以下几个命令即可完成 (1 ...

  5. [转帖]yum 下载rpm包 之前不知道具体的存放路径.

    使用Yum下载RPM包-进击的二狗子-51CTO博客 https://www.2cto.com/os/201905/807225.html yumdownloader 命令 yum install y ...

  6. Hbase 三维存储

    hbase所谓的三维有序存储的三维是指:rowkey(行主键),column key(columnFamily+qualifier),timestamp(时间戳)三部分组成的三维有序存储. 1.row ...

  7. shell基础#1

    shell:能直接调用命令(python)1.bash的基本特性 ctrl+L 清屏2.IO重定向与管道符 都由shell提供 命令是一个可执行的二进制程序3.编程基础 编程原理 程序:执行某个功能的 ...

  8. 0-1-Tree CodeForces - 1156D (并查集)

    大意: 给定树, 边权为黑或白, 求所有有向路径条数, 满足每走过一条黑边后不会走白边. 这题比赛的时候想了个假算法, 还没发现..... 显然所求的路径要么全黑, 要么全白, 要么先全白后全黑, 所 ...

  9. iphone手机软件安装目录

    iPhone系统常用文件夹位置 1.[/Applications] 常用软件的安装目录 2. [/private /var/ mobile/Media /iphone video Recorder] ...

  10. Linux连接外网~可以Windows与Linux互ping通~图文

    我这里用的是CentOS7_1511 下载地址 http://linux.xitongxz.net:808/201603/CentOS-7-x86_64-DVD-1511.iso 选择 虚拟机左上角 ...