poj3347(扩大数据,避免小数)
题目链接:https://vjudge.net/problem/POJ-3347
题意:摆放n个正方形,问俯视视角来看时哪些正方形可见。
思路:在刷计算几何专题时刷到这题,但不需要用计算几何的知识。我们首先将数据扩大√2 倍,即将输入的边当作正方形中心到顶点的距离,这样就可以避免浮点数运算。首先得到每个正方形的左右端点的x坐标,然后计算每个正方形俯视角度下的左右端点的x坐标,当右端点大于左端点时表示1可见。
AC code:
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstdlib>
using namespace std; const int maxn=;
int n;
struct node{
int l,r,len;
}sq[maxn]; int main(){
while(scanf("%d",&n),n){
for(int i=;i<=n;++i){
sq[i].l=;
scanf("%d",&sq[i].len);
for(int j=;j<i;++j)
sq[i].l=max(sq[i].l,sq[j].r-abs(sq[i].len-sq[j].len));
sq[i].r=sq[i].l+*sq[i].len;
}
for(int i=;i<=n;++i){
for(int j=;j<i;++j)
if(sq[j].len>sq[i].len&&sq[j].r>sq[i].l)
sq[i].l=sq[j].r;
for(int j=i+;j<=n;++j)
if(sq[j].len>sq[i].len&&sq[j].l<sq[i].r)
sq[i].r=sq[j].l;
}
int first=;
for(int i=;i<=n;++i){
if(sq[i].l>=sq[i].r) continue;
if(first) first=;
else printf(" ");
printf("%d",i);
}
printf("\n");
}
return ;
}
poj3347(扩大数据,避免小数)的更多相关文章
- Silverlight中DataGrid的显示指定列、修改默认列名和格式化日期数据和小数数据
一:DataGrid的显示指定列.修改默认列名 使用自动生成列,就会无区别的按缺省格式展示所有项目.除了bit类型,其他类型项目会以字符串形式展现. 通过设置Columns属性,可以选择性的显示列,以 ...
- (Jquery)避免数据相加小数点后产生多位数和计算精度损失
/** * 加法运算,避免数据相加小数点后产生多位数和计算精度损失. * * @param num1加数1 | num2加数2 */ function numAdd(num1, num2) { var ...
- echarts 让轴自适应数据为小数整数
echarts 让轴自适应数据为小数整数,以解决y轴数值重复的问题 工作中突然遇到这个问题 试了一下用formatter自适应 ok 在yAxis中提阿尼按键属性 axisLabel 1 axis ...
- 导入EXCEL 时间数据为小数 问题
同事在做将EXCEL导入数据库功能时发现一个奇怪的问题:在EXCEL中,有一列数据明明呈现出时间格式,比如:18:35,但导到数据库中,居然一串长长的小数:0.7743055555555556,我靠, ...
- C#中设置double类型数据的小数长度
如果double A=1.5321654:需要将其转换为3位小数,字符串的话A.tostring(".###")就可以,输出的是1.532: 也可以用A.ToString(&quo ...
- C++ Ouput Exactly 2 Digits After Decimal Point 小数点后保留三位数字
在C++编程中,有时候要求我们把数据保留小数点后几位,或是保留多少位有效数字等等,那么就要用到setiosflags和setprecision函数,记得要包含头文件#include <ioman ...
- Java保留两位小数的几种做法
1. String类型数字始终保留两位小数 , RoundingMode.HALF_UP); return bd.toString(); } /** * 使用DecimalFormat,保留小数点后 ...
- 保留n位四舍五入小数
一:可选择保留位数,注释很解释的很详细,上图 二:全部代码 using System; using System.Collections.Generic; using System.Component ...
- js 小数计算为啥和想象中不一样!
今天遇到了一个比较有趣的事,如果要你计算0.1+0.2等于多少你会怎么回答? "0.3啊!"你可能都不会考虑.我也一样,当a=0.1,b=0.2时 if(a+b === 0.3){ ...
随机推荐
- Codeforces Round #350 (Div. 2) A B C D1 D2 水题【D2 【二分+枚举】好题】
A. Holidays 题意:一个星球 五天工作,两天休息.给你一个1e6的数字n,问你最少和最多休息几天.思路:我居然写成模拟题QAQ. #include<bits/stdc++.h> ...
- java如何向数组里添加元素
向数组里添加一个元素怎么添加,这儿总结有三种方法: 1.一般数组是不能添加元素的,因为他们在初始化时就已定好长度了,不能改变长度.但有个可以改变大小的数组为ArrayList,即可以定义一个Array ...
- Oracle 进程 前台进程-服务进程
一.什么是服务进程(前台进程) 当用户运行一个应用进程时,系统会为用户运行的应用建立一个用户程序,该进程通过某种方式启动一个服务器进程(前台进程),用于处理连接到该实例的用户进程的请求. 二.服务进程 ...
- luogu 2114 [NOI2014]起床困难综合症 位运算+贪心
感觉这个思路非常巧妙啊~ code: #include <bits/stdc++.h> #define ll long long #define setIO(s) freopen(s&qu ...
- js的数组在内存中是如何存储的
前言:本来想自己总结下,但发现以下文章已经写得很好,就直接放链接了. 英文文章:http://voidcanvas.com/javascript-array-evolution-performance ...
- 【线性代数】7-2:线性变化的矩阵(The Matrix of a Linear Transformation)
title: [线性代数]7-2:线性变化的矩阵(The Matrix of a Linear Transformation) categories: Mathematic Linear Algebr ...
- vim 操作命令
#显示行号,设定之后,会在每一行的前缀显示该行的行号:set nu #取消行号显示:set nonu #将编辑的数据写入硬盘档案中(常用):w #若文件属性为『只读』时,强制写入该档案.不过,到底能不 ...
- JavaWeb_(Spring框架)Spring与JDBC
一.用Spring中的JdbcTemplate操作数据库 在MySQL中准备一个user表,表中增加一条假数据 用Spring中的JdbcTemplate操作数据库,在JdbcTemplate中实现增 ...
- Java连接Memcached进行CRUD
参考这篇博文在本机安装了Memcached 在 Java 中常用的memcached有三个: Memcached Client for Java SpyMemcached XMemcached 这里使 ...
- 解决IntelliJ无法导入maven包的问题
使用如下的pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&quo ...