POJ 3347 Kadj Squares (线段覆盖)
题目大意:给你几个正方形的边长,正方一个顶点在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 (线段覆盖)的更多相关文章
- POJ 3347 Kadj Squares (计算几何+线段相交)
题意:从左至右给你n个正方形的边长,接着这些正方形都按照旋转45度以一角为底放置坐标轴上,最左边的正方形左端点抵住y轴,后面的正方形依次紧贴前面所有正方形放置,问从上方向下看去,有哪些正方形是可以被看 ...
- POJ 3347 Kadj Squares
Kadj Squares Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 2132 Accepted: 843 Descr ...
- 简单几何(线段覆盖) POJ 3347 Kadj Squares
题目传送门 题意:告诉每个矩形的边长,它们是紧贴着的,问从上往下看,有几个还能看到. 分析:用网上猥琐的方法,将边长看成左端点到中心的距离,这样可以避免精度问题.然后先求出每个矩形的左右端点,然后如果 ...
- POJ 3347 Kadj Squares (计算几何)
题目: Description In this problem, you are given a sequence S1, S2, ..., Sn of squares of different si ...
- POJ 3347 Kadj Squares 计算几何
求出正方形的左右端点,再判断是否覆盖 #include <iostream> #include <cstdio> #include <cstring> #inclu ...
- [poj] 3347 Kadj Square || 计算几何的“线段覆盖”
原题 多组数据,给出n个正方形的边长,使他们以45度角倾斜的情况下最靠左(在第一象限内),如图.求从上看能看到哪几个完整的正方形. 借鉴于https://www.cnblogs.com/Ritchie ...
- HDU 1828 / POJ 1177 Picture (线段树扫描线,求矩阵并的周长,经典题)
做这道题之前,建议先做POJ 1151 Atlantis,经典的扫描线求矩阵的面积并 参考连接: http://www.cnblogs.com/scau20110726/archive/2013/0 ...
- Poj 2528-Mayor's posters 线段切割
题目:http://poj.org/problem?id=2528 Mayor's posters Time Limit: 1000MS Memory Limit: 65536K Total ...
- CODEVS3037 线段覆盖 5[序列DP 二分]
3037 线段覆盖 5 时间限制: 3 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 数轴上有n条线段,线段的 ...
随机推荐
- C# Oracle insert 中文乱码
问题描述: 在PL SQL中insert 中文数据,显示不乱码,通过后台insert的中文数据,显示问号. 解决分三步: 1.Select userenv('language') from dual; ...
- 一个view相对于屏幕或者另外一个view 的坐标
如果想知道一个view相对于屏幕或者另外一个view 的坐标,那么可以通过如下的方法得到: UIWindow * window=[[[UIApplication sharedApplication] ...
- svn is already locked解决办法
在出错文件夹下,鼠标右键
- 第一个Android crackme(2016-05)
第一个Android crackme 0x00 背景 最近在学习Android的逆向,把基本的环境搭好后,看了看<第一行代码--Android>,然后就按照非虫大牛的<Android ...
- angular中的jsonp记录
angular的正常机制采用引入$http服务的形式进行 get post等的访问.但是在跨域访问的时候就需要采用jsonp了. 不废话,直接上示例和引用原文地址: 比如访问地址为 http://ur ...
- python 基础学习3-函数
1. 函数参数-默认参数 python函数也可以跟C语言一样,在函数的形参中设定默认值. >>> def test(flag, port = 8080) ... print port ...
- The Skyline Problem leetcode 详解
class Solution { public: vector<pair<int, int>> getSkyline(vector<vector<int>&g ...
- SQL中判断字符串中包含字符的方法
通过2个函数CHARINDEX和PATINDEX以及通配符的灵活使用 函数:CHARINDEX和PATINDEX CHARINDEX:查某字符(串)是否包含在其他字符串中,返回字符串中指定表达式的起始 ...
- mysql允许远程连接授权方法
mysql数据库和apache不在同一台服务器时,需要远程连接mysql,这就要对mysql进行远程连接授权,为了安全只允许某些ip可以连接: 假如你想root用户从ip 192.168.2.12连接 ...
- Java AOP - Aspectj
1. 序 Aspect Oriented Programming (AOP)是近来一个比较热门的话题. AspectJ是AOP的Java语言的实现,获得了Java程序员的广泛关注. 关于AspectJ ...