zoukankan      html  css  js  c++  java
  • CDOJ 26 遮挡判断(shadow) 解题报告

    题目链接http://acm.uestc.edu.cn/#/problem/show/26

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

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

    这题主要考察排序,然而感谢上苍我有<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 <algorithm>
    #include <cstdio>
    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 - shade);
    	}
    	return 0;
    }
  • 相关阅读:
    常用工具
    H5页面验收流程及性能验收标准
    埋点数据测试
    提高效率的必备工具
    移动APP安全测试
    Response响应相关
    AES加密解密
    Requests模块
    爬虫入门
    【CMDB】API传输验证
  • 原文地址:https://www.cnblogs.com/johnsonyip/p/5662154.html
Copyright © 2011-2022 走看看