博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CDOJ 26 遮挡判断(shadow) 解题报告
阅读量:7084 次
发布时间:2019-06-28

本文共 934 字,大约阅读时间需要 3 分钟。

题目链接

出题目的给我说清东边是哪一边啊魂淡!

分析样例可得,东边是先读入数据的那一边。

这题主要考察排序,然而感谢上苍我有<algorithm>

另外,CDOJ是可以用C++11标准的匿名函数的,所以sort的比较函数我就打了匿名的

这题只要记录一下扫到的柱子中投影最西边最靠西的那根,不妨设为柱子h

如果这根柱子h能完全遮住当前扫到的柱子i,那么柱子h仍然是影子最靠西的柱子

如果这根柱子h不能完全遮住当前扫到的柱子i,那么柱子i的投影末端就是最靠西的,更新一下就可以了

判断是不是完全遮住简单的,看如果柱子顶端间的正切值比给出的大,那么就可以遮住了啦

为了不使用到坑爹的浮点数,可以,乘过去,就像:\[\frac{H_h-H_i}{X_i-X_h} \geq \frac{T}{A}\]

\[A(H_h-H_i)\geq T(X_i-X_h)\]

#include 
#include
using namespace std;int N;struct Pillar { int X, H;} p[100005];int T, A;int shade;int main() { while (~scanf("%d", &N) && N) { shade = 0; for (int i = 0; i < N; ++i) scanf("%d%d", &p[i].X, &p[i].H); scanf("%d/%d", &T, &A); sort(p, p + N, [](Pillar x, Pillar y){ return x.X < y.X; }); int h = 0; for (int i = 1; i < N; ++i) { if (A * (p[h].H - p[i].H) >= T * (p[i].X - p[h].X)) ++shade; else h = i; } printf("%d\n", N - shade); } return 0;}

转载于:https://www.cnblogs.com/johnsonyip/p/5662154.html

你可能感兴趣的文章
程序员编程艺术:三之三续、求数组中给定下标区间内的第K小(大)元素
查看>>
4、应用程序设置应用程序详细信息页面
查看>>
QTP的那些事--执行用例后提交bug到QC中
查看>>
[火狐REST] 火狐REST 模拟 HTTP get, post请求
查看>>
C++中数字与字符串之间的转换
查看>>
[Android Pro] Java进阶学习:jar打包详解
查看>>
Linux中断(interrupt)子系统之一:中断系统基本原理【转】
查看>>
Sublime Text2格式化HMTL/CSS/JS插件HTML-CSS-JS Prettify
查看>>
AgileEAS.NET平台开发实例-药店系统-BLL层分析
查看>>
Duanxx的Altium Designer学习:PCB试想一下,在目前的水平
查看>>
JMS(Java消息服务)入门教程
查看>>
Trie树的C++实现
查看>>
Android的init过程(二):初始化语言(init.rc)解析【转】
查看>>
HDOJ2017 ( 字符串统计 )
查看>>
xcode 5.0中,新的开发者证书加载方式
查看>>
如何在Windows 2003 中使用Windows Live Writer? - 2010年5月21日学习笔记(1)
查看>>
善用VS中的Code Snippet来提高开发效率
查看>>
EXTJS学习系列提高篇:第六篇(转载)作者殷良胜,更换皮肤
查看>>
Metro style App ContextMenu Summary
查看>>
新做了一个项目,一个人做的,关于数据传输的项目(架构说明)
查看>>