题目链接:点击查看

题目大意:给出n个正方形的边长,每个正方形必须与x轴有交点,且交点必须小,还需要满足每个正方形与x的交点依次递增,在满足以上条件的前提下,将所有的正方形防止在二维平面上,现在问从x轴上方向下俯视,能直接看到哪些正方形

题目分析:伪装成几何题目的思维题,用到的几何知识无非是坐标转换,更多的是思维,因为题目的要求限制了正方形摆放的方式唯一,我们可以将每个正方形抽象成一个线段,计算出每个正方形的左右端点以及长度,为了方便计算起见,将长度统一视为边长除以根号二的结果,这样就能直接以平行于x轴的长度来计算了,具体的计算方法见代码,等计算好后再与其他的正方形相比较,看看是否被遮挡,因为正方形的高度与其边长成正比,所以当两个正方形的线段重合时,无疑是长度较大的遮挡了长度较小的,实时更改其左右端点,最后依靠左右端点就能判断出答案了

代码:

#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
#include<queue>
#include<map>
#include<set>
#include<sstream>
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=60;struct Node
{int l,r,len;
}a[N];int main()
{
//  freopen("input.txt","r",stdin);
//  ios::sync_with_stdio(false);int n;while(scanf("%d",&n)!=EOF&&n){for(int i=1;i<=n;i++){scanf("%d",&a[i].len);a[i].l=0;for(int j=1;j<i;j++)a[i].l=max(a[i].l,a[j].r-abs(a[j].len-a[i].len));a[i].r=a[i].l+2*a[i].len;}for(int i=1;i<=n;i++){for(int j=1;j<i;j++)if(a[j].r>a[i].l&&a[j].len>a[i].len)a[i].l=a[j].r;for(int j=i+1;j<=n;j++)if(a[j].l<a[i].r&&a[j].len>a[i].len)a[i].r=a[j].l;}for(int i=1;i<=n;i++)if(a[i].l<a[i].r)printf("%d ",i);putchar('\n');}return 0;
}

POJ - 3347 Kadj Squares(思维+几何)相关推荐

  1. 简单几何(线段覆盖) POJ 3347 Kadj Squares

    题目传送门 题意:告诉每个矩形的边长,它们是紧贴着的,问从上往下看,有几个还能看到. 分析:用网上猥琐的方法,将边长看成左端点到中心的距离,这样可以避免精度问题.然后先求出每个矩形的左右端点,然后如果 ...

  2. POJ 3347 Kadj Squares(复杂的线段相交问题)

    题意:给予n个正方形,要求45°角放置,最左边的正方形紧贴Y轴,所有的正方形的下面的端点都在X轴上.然后按照正方形不能交错但要尽可能的挨着的原则,摆放,最后输出从上往下看能看到的正方形的编号. 思路: ...

  3. 【POJ - 3347 】Kadj Squares (计算几何,思维 或 扫描线)

    题干: In this problem, you are given a sequence S1, S2, ..., Sn of squares of different sizes. The sid ...

  4. A Mini Locomotive POJ - 1976(动态规划+思维)

    题意:有三个火车头,n个车厢,每个车厢里面对应的有一定的人数.规定每个火车头最多 拉m个连续的车厢而且他们拉的车厢一定是从左到右连续的,问它能够拉的最多的人数: 思路:类似01背包的解法,首先每个火车 ...

  5. poj 2031Building a Space Station(几何判断+Kruskal最小生成树)

    1 /* 2 最小生成树 + 几何判断 3 Kruskal 球心之间的距离 - 两个球的半径 < 0 则说明是覆盖的!此时的距离按照0计算 4 */ 5 #include<iostream ...

  6. CodeForces - 123B Squares(简单几何+旋转坐标系)

    题目链接:点击查看 题目大意:给出一个无限大的二维坐标平面,现在有一些坏点,规定: 满足以上两条件之一的点即为坏点,现在问最少经过多少个坏点的情况下,可以从起点到达终点 题目分析:一开始没想到坏点是如 ...

  7. 寒假-第一周-几何-(点线关系的问题)

    寒假第一周:几何 POJ 2318 TOYS POJ 2398 Toy Storage(叉积判断左右+二分) POJ 3304 Segments(思维) POJ 1269 Intersecting L ...

  8. POJ 计算几何入门题目推荐

      其实也谈不上推荐,只是自己做过的题目而已,甚至有的题目尚未AC,让在挣扎中.之所以推荐计算几何题,是因为,本人感觉ACM各种算法中计算几何算是比较实际的算法,在很多领域有着重要的用途(例如本人的专 ...

  9. poj计算几何题推荐

    POJ 计算几何入门题目推荐(转)       其实也谈不上推荐,只是自己做过的题目而已,甚至有的题目尚未AC,让在挣扎中.之所以推荐计算几何题,是因为,本人感觉ACM各种算法中计算几何算是比较实际的 ...

最新文章

  1. IT人请注意你的身体![转]
  2. 最小费用最大流 ---- 2017icpc青岛现场赛 K Our Journey of Xian Ends (拆点控制原图点度 + 中间必经过的点设置成源点 + 起点设成汇点)
  3. centos7进入用户模式修改root用户名
  4. Google 要用 Flutter 一统移动、桌面开发江湖?
  5. php中页面静态化技术,在PHP中实现页面静态化的方法有哪些
  6. 近世代数-群论基础一
  7. 高斯克吕格投影知识总结
  8. 取绝对值 :abs fabs fabsf用法
  9. Visio 画流图 程序流图 斜线
  10. 最强大脑王昱珩,一个近乎完美的男人
  11. css控制文本超出省略(单行、两行、多行)
  12. 中国城市码cityCode映射
  13. vtd和vt的区别_vi和vt的区别小窍门
  14. 微信小程序-从零开始制作一个跑步微信小程序
  15. Angular4 去掉url中的#,并解决刷新时的404问题
  16. 2021年春季ACM训练赛第5场
  17. Python金融数据分析之路(一)
  18. SQL多表查询:SQL JOIN连接查询各种用法总结
  19. 计算式二级python_python实现自动生成小学四则运算题目(软工第二次项目作业)...
  20. arcgis注册postgresql失败。postgres be sure the databse client software is installed and configured correc

热门文章

  1. Redis操作hash类型
  2. SpringBoot启动流程是怎样的
  3. Spring Web MVC 支持最新的API
  4. Spring IoC容器管理的Bean能够被垃圾回收吗?
  5. Java连接Redis-Jedis简介
  6. Nacos安装和服务注册
  7. Request_请求转发
  8. 移动APP接口安全性设计
  9. 如何免安装服务器将 React 整合进 Spring Boot
  10. 201114阶段二qt自定义图元类