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

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

题目不懂就多读呀~

题目描述

李教授于今天下午做一个非常重要的演讲。不幸的是他不是一个非常爱整洁的人,他把自己做演讲要用的幻灯片随便堆放在一起。因此,演讲之前他不得不去整理这些幻灯片。做为一个讲求效率的学者,他希望尽可能简单地完成它。情况是这样,教授这次演讲一共要用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. python 并发编程 多路复用IO模型

    多路复用IO(IO multiplexing) 这种IO方式为事件驱动IO(event driven IO). 我们都知道,select/epoll的好处就在于单个进程process就可以同时处理多个 ...

  2. linux建立ftp用户

    #!/bin/bash sleep 1 mkdir -p /ceshi/ userdel ceshi useradd -d /ceshi -s /sbin/nologin ceshi echo mim ...

  3. Python 爬取煎蛋网妹子图片

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2017-08-24 10:17:28 # @Author : EnderZhou (z ...

  4. start-all.sh启动HDFS,datanode没有启动

    第一次格式化dfs后,启动并使用hadoop,之后如果再次重新执行了格式化(hdfs namenode -format) start-all.sh启动时就会遇到datanode无法启动的问题,通常情况 ...

  5. C语言--- 高级指针2(结构体指针,数组作为函数参数)

    一.结构体指针 1. 什么是结构体指针?指向结构体变量的指针     结构体:     typedef  struct stu{                          char name[ ...

  6. python 列表操作-切片

  7. Elasticsearch入门教程(二):Elasticsearch核心概念

    原文:Elasticsearch入门教程(二):Elasticsearch核心概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:ht ...

  8. BTE增强解析

    原理:转载http://blog.csdn.net/wbin9752/article/details/7954663 BTEs(Business Transaction Events),是SAP的一种 ...

  9. 62. Unique Paths (JAVA)

    A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...

  10. 程序员称为高手的10条心得(摘自http://www.jizhuomi.com/software/394.html)

    在这个世界上,有数百万的人热衷于软件开发,他们有很多名字,如:软件工程师(Software Engineer),程序员(Programmer),编码人(Coder),开发人员(Developer).经 ...