PID221 / 烦人的幻灯片☆ x
超详细解释!我都被我自己惊呆了!
(这个题目意思我缓冲了很久!一定要读懂题!否则做不出来)
题目不懂就多读呀~
李教授于今天下午做一个非常重要的演讲。不幸的是他不是一个非常爱整洁的人,他把自己做演讲要用的幻灯片随便堆放在一起。因此,演讲之前他不得不去整理这些幻灯片。做为一个讲求效率的学者,他希望尽可能简单地完成它。情况是这样,教授这次演讲一共要用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的更多相关文章
- VIJOS PID221 / 烦人的幻灯片
暴力出奇迹,学长诚不欺我. PID221 / 烦人的幻灯片 2017-04-14 19:47:08 运行耗时:30 ms 运行内存:12292 KB 查看最后一次评测记录 题目描述 李教授于今天下午 ...
- SID1190471 / 烦人的幻灯片 暴力出奇迹 !!!!!!!!!!!!!!!!!!
PID221 / 烦人的幻灯片 ☆ 提交你的代码 查看讨论和题解 你还木有做过哦 我的状态 查看最后一次评测记录 质量还不能统计出来哦~ 题目评价 质量 无 ★★★★★ ★★★★☆ ★ ...
- sdibt 1244 烦人的幻灯片
在这个OJ站还没号,暂时没提交,只是过了样例 真不愧是烦人的幻灯片,烦了我一小时 ---更新:OJ测试完毕,AC 烦人的幻灯片问题 Time Limit: 1 Sec Memory Limit: 6 ...
- 【拓扑排序】烦人的幻灯片(slides)
1395:烦人的幻灯片(slides) 时间限制: 1000 ms 内存限制: 65536 KB提交数: 753 通过数: 416 [题目描述] 李教授将于今天下午作一次非常重 ...
- 病毒&烦人的幻灯片
<病毒>传送门 <烦人的幻灯片>传送门 病毒 描述 有一天,小y突然发现自己的计算机感染了一种病毒!还好,小y发现这种病毒很弱,只是会把文档中的所有字母替换成其它字母,但并不改 ...
- UVA663 Sorting Slides(烦人的幻灯片)
UVA663 Sorting Slides(烦人的幻灯片) 第一次做到这么玄学的题,在<信息学奥赛一本通>拓扑排序一章找到这个习题(却发现标程都是错的),结果用二分图匹配做了出来 蒟蒻感觉 ...
- COGS——T 438. 烦人的幻灯片
http://www.cogs.pro/cogs/problem/problem.php?pid=438 ★☆ 输入文件:slides.in 输出文件:slides.out 简单对比时间限 ...
- iOS 界面 之 EALayout 无需反复编译,可视化实时界面,告别Storyboard AutoLayout Xib等等烦人的工具
http://blog.csdn.net/fatherhui iOS开发,EALayout 无需反复编译,可视化实时界面,告别Storyboard AutoLayout Xib等等烦人的工具 EALa ...
- Jmeter之解决烦人的中文乱码问题
Jmeter是一款国外开源工具,所以就跟LR一样,对中文的支持不是很好,经常会有同学录制脚本后回放或者是发送HTTP请求,看到响应报文里面有乱码! 那如何才能解决这个问题呢?我们分2个情况来分析: 一 ...
随机推荐
- ios系统App Store安装包下载链接获取
今天将自己开发的Android版本和ios版本的安装包通过生成二维码的方式展示在H5页面上,Android版的比较简单,但是ios的安装包用户必须从App Store(苹果应用市场)中下载安装,所以获 ...
- Vim命令合集(四)
Vim命令合集 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vim filena ...
- poj2773(欧基里德算法 或 二分+容斥)
题目链接:https://vjudge.net/problem/POJ-2773 题意:给定m,k,求与m互质的第k个数. 思路一:利用gcd(a,b)=gcd(b*t+a,b)知道,与m互质的数是以 ...
- 【Linux】C字节对齐
原文地址:https://www.jianshu.com/p/e8fcc01041a7 什么是对齐,以及为什么要对齐: 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问 ...
- Android 调用摄像头功能【拍照与视频】
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/ma_hoking/article/details/28292973 应用场景: 在Android开发 ...
- Freemarker模板的使用简介
需要的jar包: 在pom.xml文件中贴入 <dependency> <groupId>junit</groupId> <artifactId>jun ...
- npm学习(七)之如何发布包、更新发布包、删除发布包
前言 我们经常使用npm来下载别人的模块或者说包,那么我们如何将自己写的模块上传到npm呢? 了解npm政策 在开始之前,最好回顾一下npm的政策,以防您对站点礼仪.命名.许可或其他指导原则有疑问. ...
- Python基础——函数入门
等待更新…………………… 后面再写
- iPad和iPhone上的应用程序图标
iPad和iPhone上的应用程序图标 问:如何在iPad和iPhone使用我的应用程序包中的图标文件? 答:下面是处理文件的图标为iPhone专用的应用程序,iPad的专用应用程序,以及通用的应用程 ...
- 页面中获取 iframe 中的值
3.页面中获取 iframe 中的值 var obj=document.getElementsByClassName(".ke-edit-iframe").contentWindo ...