题目大意:给你几个正方形的边长,正方一个顶点在x轴上然后边与x轴的夹角为45度,每个正方形都是紧贴的,问从上面看能看的正方形的编号

题目思路:线段覆盖,边长乘上2防止产生小数,求出每个正方形与x轴平行的对角线的起始x坐标,剩下的就是线段了。

  1. #include<cstdio>
  2. #include<cstdlib>
  3. #include<cmath>
  4. #include<iostream>
  5. #include<algorithm>
  6. #include<cstring>
  7. #include<vector>
  8. #include<queue>
  9. #define INF 0x3f3f3f3f
  10. #define MAX 100005
  11.  
  12. using namespace std;
  13.  
  14. struct node
  15. {
  16. int sx,y,ex,dist;
  17. } point[MAX];
  18.  
  19. int vis[MAX],n;
  20.  
  21. void Find(int sx,int ex,int pos)
  22. {
  23. for(int i=; i<n; i++)
  24. {
  25. if(i==pos || (point[pos].y >= point[i].y))
  26. continue;
  27. if((sx>=point[i].sx && ex<=point[i].ex) || sx>=ex)
  28. {
  29. vis[pos]=;
  30. return;
  31. }
  32. else if(sx<=point[i].ex && sx>=point[i].sx)
  33. {
  34. sx=point[i].ex;
  35. }
  36. else if(ex<=point[i].ex && ex>=point[i].sx)
  37. {
  38. ex=point[i].sx;
  39. }
  40. }
  41. }
  42.  
  43. int main()
  44. {
  45. int d,sx,ex;
  46. int op;
  47. while(scanf("%d",&n),n)
  48. {
  49. op=;
  50. memset(vis,,sizeof(vis));
  51. for(int i=; i<n; i++)
  52. {
  53. scanf("%d",&d);
  54. point[i].dist=d;
  55. point[i].y=d;
  56. point[i].sx=;
  57. for(int j=; j<i; j++)
  58. {
  59. point[i].sx=max(point[i].sx,point[j].ex-abs(point[i].dist-point[j].dist));
  60. }
  61. point[i].ex=point[i].sx+*d;
  62. }
  63. for(int i=; i<n; i++)
  64. {
  65. ex=point[i].ex;
  66. sx=point[i].sx;
  67. Find(sx,ex,i);
  68. }
  69. for(int i=; i<n; i++)
  70. {
  71. if(!vis[i])
  72. {
  73. if(!op)
  74. {
  75. op=;
  76. printf("%d",i+);
  77. }
  78. else
  79. printf(" %d",i+);
  80. }
  81. }
  82. printf("\n");
  83. }
  84. return ;
  85. }

POJ 3347 Kadj Squares (线段覆盖)的更多相关文章

  1. POJ 3347 Kadj Squares (计算几何+线段相交)

    题意:从左至右给你n个正方形的边长,接着这些正方形都按照旋转45度以一角为底放置坐标轴上,最左边的正方形左端点抵住y轴,后面的正方形依次紧贴前面所有正方形放置,问从上方向下看去,有哪些正方形是可以被看 ...

  2. POJ 3347 Kadj Squares

    Kadj Squares Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 2132   Accepted: 843 Descr ...

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

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

  4. POJ 3347 Kadj Squares (计算几何)

    题目: Description In this problem, you are given a sequence S1, S2, ..., Sn of squares of different si ...

  5. POJ 3347 Kadj Squares 计算几何

    求出正方形的左右端点,再判断是否覆盖 #include <iostream> #include <cstdio> #include <cstring> #inclu ...

  6. [poj] 3347 Kadj Square || 计算几何的“线段覆盖”

    原题 多组数据,给出n个正方形的边长,使他们以45度角倾斜的情况下最靠左(在第一象限内),如图.求从上看能看到哪几个完整的正方形. 借鉴于https://www.cnblogs.com/Ritchie ...

  7. HDU 1828 / POJ 1177 Picture (线段树扫描线,求矩阵并的周长,经典题)

    做这道题之前,建议先做POJ 1151  Atlantis,经典的扫描线求矩阵的面积并 参考连接: http://www.cnblogs.com/scau20110726/archive/2013/0 ...

  8. Poj 2528-Mayor's posters 线段切割

      题目:http://poj.org/problem?id=2528 Mayor's posters Time Limit: 1000MS   Memory Limit: 65536K Total ...

  9. CODEVS3037 线段覆盖 5[序列DP 二分]

    3037 线段覆盖 5   时间限制: 3 s   空间限制: 256000 KB   题目等级 : 钻石 Diamond 题解       题目描述 Description 数轴上有n条线段,线段的 ...

随机推荐

  1. C# Oracle insert 中文乱码

    问题描述: 在PL SQL中insert 中文数据,显示不乱码,通过后台insert的中文数据,显示问号. 解决分三步: 1.Select userenv('language') from dual; ...

  2. 一个view相对于屏幕或者另外一个view 的坐标

    如果想知道一个view相对于屏幕或者另外一个view 的坐标,那么可以通过如下的方法得到: UIWindow * window=[[[UIApplication sharedApplication] ...

  3. svn is already locked解决办法

    在出错文件夹下,鼠标右键

  4. 第一个Android crackme(2016-05)

    第一个Android crackme 0x00 背景 最近在学习Android的逆向,把基本的环境搭好后,看了看<第一行代码--Android>,然后就按照非虫大牛的<Android ...

  5. angular中的jsonp记录

    angular的正常机制采用引入$http服务的形式进行 get post等的访问.但是在跨域访问的时候就需要采用jsonp了. 不废话,直接上示例和引用原文地址: 比如访问地址为 http://ur ...

  6. python 基础学习3-函数

    1. 函数参数-默认参数 python函数也可以跟C语言一样,在函数的形参中设定默认值. >>> def test(flag, port = 8080) ... print port ...

  7. The Skyline Problem leetcode 详解

    class Solution { public: vector<pair<int, int>> getSkyline(vector<vector<int>&g ...

  8. SQL中判断字符串中包含字符的方法

    通过2个函数CHARINDEX和PATINDEX以及通配符的灵活使用 函数:CHARINDEX和PATINDEX CHARINDEX:查某字符(串)是否包含在其他字符串中,返回字符串中指定表达式的起始 ...

  9. mysql允许远程连接授权方法

    mysql数据库和apache不在同一台服务器时,需要远程连接mysql,这就要对mysql进行远程连接授权,为了安全只允许某些ip可以连接: 假如你想root用户从ip 192.168.2.12连接 ...

  10. Java AOP - Aspectj

    1. 序 Aspect Oriented Programming (AOP)是近来一个比较热门的话题. AspectJ是AOP的Java语言的实现,获得了Java程序员的广泛关注. 关于AspectJ ...