你需要放置一盏灯来照亮房间的每个角落,问这是否能办到?

输入包含多组数据。 
每组数据第一行是正整数n(4<=n<=100),表示房间轮廓所形成的多边形的顶点个数。 
接下来n行,每行表示房间的一个顶点。 
顶点按顺时针的顺序给出,房间轮廓多边形的所有边都平行于坐标轴。 
输入以n=0表示结束。

对每组数据输出一行。 
如果能有一种放置方法照亮房间的所有地方,输出"Yes",否则输出"No"

#include<cstdio>
#include<cstring>
#define inf 0x3fffffff
int n,ok;
int x1,x2,y1,y2;        //在x和y方向上的合法范围(边界).
int x[101],y[101];      //由于是顺时针读取且平行于坐标轴,所以相邻读取的两个点可以确定出x或y的范围
int check(int px,int py,int cx,int cy){ //分别是前一个点(px,py)和当前点(cx,cy) if(px==cx){    //x相同y不同,则限制x1或x2 if(cy>py){ //当前点在之前点正上方,所以应该限制x1(因为是顺时针给出点) x1=x1>cx?x1:cx;return x1<=x2?1:0;}else{      //当前点在之前点的正下方,所以应该限制x2 x2=x2<cx?x2:cx;return x2>=x1?1:0;}}else{          //同理对于y相同而x不同,则限制y1或y2 if(cx>px){y2=y2<cy?y2:cy;return y2>=y1?1:0;}else{y1=y1>cy?y1:cy;return y1<=y2?1:0;}}
}
int main()
{while(scanf("%d",&n)==1&&n){ok=1;x1=y1=-inf,x2=y2=inf; scanf("%d%d",&x[1],&y[1]);for(int i=2;i<=n;i++){scanf("%d%d",&x[i],&y[i]);if(!ok) continue;ok=check(x[i-1],y[i-1],x[i],y[i]);}if(ok) ok=check(x[n],y[n],x[1],y[1]); //要单独考虑最后一个点和第一个点 if(ok) printf("Yes\n");else printf("No\n");}
}

转载于:https://www.cnblogs.com/sulley/p/8169324.html

【2016计概A期末】照亮房间相关推荐

  1. 成都中医药大学计算机基础试题,成都中医药大学2016年春季学期期末考试.计算机基础试卷-成教(答案~)分析总结.doc...

    - 成都中医药大学 2016年春季学期期末考试 试 卷 考试科目:计算机应用基础考试类别:初修 适用专业:成教 学号: 姓名: 专业: 年级: 班级: 题号 一 二 三 四 总分 总分人 分值 20 ...

  2. 南京2016年计算机网络B卷,2016年春期期末考试计算机网络应用基础B卷(莫武位).doc...

    <2016年春期期末考试计算机网络应用基础B卷(莫武位).doc>由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关<2016年春期期末考试计算机网络应用基础B卷( ...

  3. 微型计算机最早出现在1946年是对还是错,2016年计算机一级期末考试真题(含答案)...

    2016年计算机一级期末考试真题(含答案) 一.单选题练习 1.完整的计算机系统由( C )组成. A.运算器.控制器.存储器.输入设备和输出设备 B.主机和外部设备 C.硬件系统和软件系统 D.主机 ...

  4. 【计组理论期末考试模拟题】21级计科专业计算机组成原理

    [计组理论期末考试模拟题]21级计科专业计算机组成原理 一.选择题 二.多选题 三.填空题 四.程序填空题 五.编程题 一.选择题 2-1 在定点二进制运算器中,减法运算一般通过()来实现. A.原码 ...

  5. 2016 计蒜之道 初赛 第五场

    2016 计蒜之道 初赛 第五场 腾讯推出了一款新游戏:勇者的故事.在游戏里有一个勇者,要去挑战大魔王.大魔王有 nnn 支护卫队,第 iii 支护卫队里有 mim_im​i​​ 只恶魔.勇者和恶魔都 ...

  6. 2016计蒜之道复赛 微信钱包付款

    2016计蒜之道复赛  微信钱包付款 一.题意: 微信钱包付款 给定n(0≤n≤10​10000),求a,,b,c使得a+b+c=n,并且f(a)=f(b)=f(c),f(n)定义为n的各数位的和,例 ...

  7. 西电计科计算机视觉期末复习笔记

    本人西电19计科,CV期末90+,这是复习期间整理的笔记,基本涵盖了课程全部重点,有需要的学弟学妹可以在复习的时候参考一下.

  8. 2016年大学计算机期末试题及答案,2016年大学计算机基础试题题库及答案

    2016年大学计算机基础试题题库及答案 一.单选题练习 1.完整的计算机系统由( C )组成. A.运算器.控制器.存储器.输入设备和输出设备 B.主机和外部设备 C.硬件系统和软件系统 D.主机箱. ...

  9. 成都中医药大学计算机基础试题,成都中医药大学2016年春季学期期末考试计算机基础-成教()解剖.doc...

    成都中医药大学 20年季学期期末考试考试科目:计算机应用基础考试类别:初修 适用专业:学号: 姓名: 专业: 年级: 班级: 题号一二三四总分总分分值0501020100得分 阅卷人得 分一.正误判断 ...

最新文章

  1. [翻译]Python中yield的解释
  2. R语言:如何快速生成许多差异明显的颜色?
  3. Linux下用iptables做端口映射
  4. 电磁干扰滤波器的设计
  5. ZOC7 for Mac连接CentOS7无法输入中文问题
  6. React Native组件开发指南
  7. 如何安装,卸载eclipse中的ADT,或者更新ADT
  8. 汉字在屏幕上的显示过程以及乱码的原因
  9. CCNA综合实验配置
  10. 物联网协议比较 MQTT CoAP RESTful/HTTP XMPP
  11. sybase修改密码
  12. 用python批量下载modis数据的速度怎么样_MODIS数据的简介和下载(五)——应用密钥的Python脚本下载...
  13. Kinetic使用注意点--circle
  14. 热力图怎么做_LncRNA这么热,5分左右的LncRNA研究文章应该怎么做
  15. 牛腩新闻发布系统-概要介绍
  16. idm无法集成到谷歌浏览器怎么解决?
  17. JAVA中LIST 和 MAP的区别
  18. 【C++ Primer】第十章 泛型算法 (练习)
  19. shell 脚本中日期运算
  20. 让闲置物品“换”出财富

热门文章

  1. 夺命雷公狗---微信开发39----微信语言识别接口1
  2. SpringXML方式配置bean的懒加载lazy-init
  3. 1 用存储过程实现分页,除了上一页,下一页,第一页,和末页外还要有go按钮,以及go到那里的文本框。另外还要在Lable显示“当前x页,一共y页”。注意验证控件的使用和 链接存储过程的内容。...
  4. 标准模板库(STL)学习指南之List容器
  5. NodeJS作为Web架构中间层的使用
  6. vue从入门到精通之进阶篇(一)vue-router:导航守卫
  7. 使用glew和glad 新建窗口
  8. iOS -- SKScene类
  9. python学习笔记列表和元组(三)
  10. linux运维基础篇 unit7