POJ 3347 Kadj Squares 计算几何
求出正方形的左右端点,再判断是否覆盖
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#define eps 1e-8
#define INF 1e9
using namespace std; const int maxn=55; struct Square
{
double l,r,len;
}sqr[maxn]; int sgn(double x)
{
if(fabs(x)<eps) return 0;
return x<0? -1:1;
} int main()
{
// freopen("in.txt","r",stdin);
int n;
while(scanf("%d",&n),n)
{
for(int i=0;i<n;i++)
{
scanf("%lf",&sqr[i].len);
sqr[i].l=0;
for(int j=0;j<i;j++)
sqr[i].l=max(sqr[i].l,sqr[j].r-fabs(sqr[i].len-sqr[j].len)/sqrt(2.0));
sqr[i].r=sqr[i].l+sqr[i].len*sqrt(2.0);
}
for(int i=0;i<n;i++)
{
for(int j=0;j<i;j++)
{
if(sqr[i].len>sqr[j].len && sqr[i].l<sqr[j].r)
sqr[j].r=sqr[i].l; //sqr[i]的左侧覆盖了sqr[j]的右侧,把sqr[j]的右侧删去
if(sqr[i].len<sqr[j].len && sqr[i].l<sqr[j].r)
sqr[i].l=sqr[j].r; //sqr[i]的左侧被sqr[j]的右侧覆盖,把sqr[j]的左侧删去
}
}
bool flag=true;
for(int i=0;i<n;i++)
{
if(sgn(sqr[i].r-sqr[i].l)>0)
{
if(flag) printf("%d",i+1);
else printf(" %d",i+1);
flag=false;
}
}
puts("");
}
return 0;
}
POJ 3347 Kadj Squares 计算几何的更多相关文章
- POJ 3347 Kadj Squares
Kadj Squares Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 2132 Accepted: 843 Descr ...
- 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 (计算几何+线段相交)
题意:从左至右给你n个正方形的边长,接着这些正方形都按照旋转45度以一角为底放置坐标轴上,最左边的正方形左端点抵住y轴,后面的正方形依次紧贴前面所有正方形放置,问从上方向下看去,有哪些正方形是可以被看 ...
- 简单几何(线段覆盖) POJ 3347 Kadj Squares
题目传送门 题意:告诉每个矩形的边长,它们是紧贴着的,问从上往下看,有几个还能看到. 分析:用网上猥琐的方法,将边长看成左端点到中心的距离,这样可以避免精度问题.然后先求出每个矩形的左右端点,然后如果 ...
- POJ 3347 Kadj Squares (线段覆盖)
题目大意:给你几个正方形的边长,正方一个顶点在x轴上然后边与x轴的夹角为45度,每个正方形都是紧贴的,问从上面看能看的正方形的编号 题目思路:线段覆盖,边长乘上2防止产生小数,求出每个正方形与x轴平行 ...
- [poj] 3347 Kadj Square || 计算几何的“线段覆盖”
原题 多组数据,给出n个正方形的边长,使他们以45度角倾斜的情况下最靠左(在第一象限内),如图.求从上看能看到哪几个完整的正方形. 借鉴于https://www.cnblogs.com/Ritchie ...
- poj3347 Kadj Squares (计算几何)
D - Kadj Squares Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Su ...
- poj3347 Kadj Squares【计算几何】
Kadj Squares Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 3594 Accepted: 1456 Desc ...
- Kadj Squares - POJ 3347
题目大意:给一些序列的正方形的边长,然后让这个正方形倾斜45度,放在第一象限,一个角要紧挨着x轴,按照输入的顺序放下去,然后问最后从上往下看可以看到那些正方形? 分析:不能算是计算几何题..... ...
随机推荐
- 更换介质:请把标有Debian ... 的盘片插入驱动器
Debian安装软件报错如下: 更换介质:请把标有 "Debian GNU/Linux 10.8.0 _Buster_ - Official amd64 DVD Binary-1 20210 ...
- Maven知识点一览
Maven 介绍和搭建 介绍 Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告,和文档的软件项目管理工具. 环境搭建 网址:https://maven.apache ...
- HUAWEI防火墙通过L2TP隧道让外出员工访问公司内网的各种资源
组网图形 组网需求 企业网络如图所示,企业希望公司外的移动办公用户能够通过L2TP VPN隧道访问公司内网的各种资源. 操作步骤 配置LNS. 1.配置接口IP地址,并将接口加入安全区域. <L ...
- unity中UI坐标转3d世界坐标
方法: public static Vector3 UIScreenToWorldPoint(Vector3 uiPostion) { uiPostion = UICamera.mainCamera. ...
- [Django高级之Auth模块]
[Django高级之Auth模块] auth模块 ←详情点击查看 1.Auth模块是什么 Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统 ...
- Python+Selenium学习笔记4 - submit&get_attribute
1.submit() submit()方法用于提交表单.如在搜索框输入关键字后按回车键进行查询操作,就可用submit()方法模拟.若不能按回车键进入下一步,则不能用submit()举例,百度的查询提 ...
- MLIR多级中间表示概述
MLIR多级中间表示概述 MLIR项目是构建可重用和可扩展的编译器基础设施的一种新方法.MLIR旨在解决软件碎片化问题,改进异构硬件的编译,显著降低构建特定领域编译器的成本,并帮助将现有编译器连接在一 ...
- 使用adb命令查看APP包名 和 包入口方法
方法一: 1.查看 前台应用 包名,使用此命令注意:手机只启动要查看包名的app adb shell dumpsys activity | find "mFocusedActivity&qu ...
- 一文搞懂Ajax,附Ajax面试题
目录 前言 正文 Ajax是什么东西? 实现核心/工作原理:XMLHttpRequest对象 XMLHttpRequest大致用法 创建XMLHttpRequest对象 发送请求 服务器响应 1. r ...
- Git与GitHub入门
一.git起步https://www.runoob.com/git/git-install-setup.html1.下载git(Windows)2.安装GUI(TortoiseGit)3.查看git配 ...