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

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

#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
#define INF 0x3f3f3f3f
#define MAX 100005 using namespace std; struct node
{
int sx,y,ex,dist;
} point[MAX]; int vis[MAX],n; void Find(int sx,int ex,int pos)
{
for(int i=; i<n; i++)
{
if(i==pos || (point[pos].y >= point[i].y))
continue;
if((sx>=point[i].sx && ex<=point[i].ex) || sx>=ex)
{
vis[pos]=;
return;
}
else if(sx<=point[i].ex && sx>=point[i].sx)
{
sx=point[i].ex;
}
else if(ex<=point[i].ex && ex>=point[i].sx)
{
ex=point[i].sx;
}
}
} int main()
{
int d,sx,ex;
int op;
while(scanf("%d",&n),n)
{
op=;
memset(vis,,sizeof(vis));
for(int i=; i<n; i++)
{
scanf("%d",&d);
point[i].dist=d;
point[i].y=d;
point[i].sx=;
for(int j=; j<i; j++)
{
point[i].sx=max(point[i].sx,point[j].ex-abs(point[i].dist-point[j].dist));
}
point[i].ex=point[i].sx+*d;
}
for(int i=; i<n; i++)
{
ex=point[i].ex;
sx=point[i].sx;
Find(sx,ex,i);
}
for(int i=; i<n; i++)
{
if(!vis[i])
{
if(!op)
{
op=;
printf("%d",i+);
}
else
printf(" %d",i+);
}
}
printf("\n");
}
return ;
}

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. jQuery中的ajax使用详解

    $.ajax({   type : "get",   url : "http://www.w3school.com.cn/jquery/ajax_ajax.asp&quo ...

  2. ligerUI实现分页

    在公司实习看到公司框架里使用了ligerUI的grid进行分页,个人感觉挺好用的,自己摸索着实现了一遍记录下来 简单来说,liger grid 就是提交准备好的数据到指定的目标请求数据,拿到数据以后, ...

  3. 总结的OSM 地图相关的分析

    How OSM works:  Tile Format: png,  z: levels [0- 18], x: Latitude [0- ], y: Longitude [0- ];         ...

  4. VS中,如何将存在于解决方案里,但是没有显示出来的文件(或文件夹)显示到项目中。

    不知道有没有人跟我一样,刚开始接触VS的时候,没有通过"右键->添加"产生文件,而是直接一些文件或者文件夹建在了项目的本地目录中. 导致最后这些文件(或文件夹)无法在项目中显 ...

  5. maven package:Max maven Unsupported major.minor version 51.0

    编译maven项目时报错:Max maven Unsupported major.minor version 51.0 major.minor version 51.0 对应的是JDK1.7 majo ...

  6. curl 命令使用总结

    curl 查看网页源码 curl www.sina.com 保存页面 -o curl -o [文件名] www.sina.com 直接在curl命令后加上网址,就可以看到网页源码. 如果要把这个网页保 ...

  7. redo log

    1.redo log相关数据字典 v$log:display the redo log file information from the control file v$logfile:identif ...

  8. Java Web 开发环境快速搭建

    Java Web 开发环境快速搭建 在因某种原因更换开发设备后,可依据此文快速搭建开发环境,恢复工作环境. Java开发环境: Windows 10 (64-bit) Oralce JDK Eclip ...

  9. iOS开发怎么样做第三方登陆(友盟社会化分享)

    基于前一篇文章   自定义UI后 实现如下代码   即可 //第三方登陆 //    UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformMa ...

  10. 分布式日志收集系统Apache Flume的设计详细介绍

    问题导读: 1.Flume传输的数据的基本单位是是什么? 2.Event是什么,流向是怎么样的? 3.Source:完成对日志数据的收集,分成什么打入Channel中? 4.Channel的作用是什么 ...