2017.10.30noip赛前集训 | T1 军训排队模拟

Posted E-Valley

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017.10.30noip赛前集训 | T1 军训排队模拟相关的知识,希望对你有一定的参考价值。

T1 军训排队

【题目描述】

今年招生招了 n 个班。每个班的小学弟小学妹,在操场上面向主席台站成了一列。各个班的新生 随便站成一列,因为他们不懂事,所以也没有间隔一个固定的距离也没有按照一定的顺序(保 证没有两个人在同一个位置)。你和你的好基友便坐在主席台上一边喝水一边看着他们。这 是一个带有升降功能的主席台,它的高度由你决定。当然,这个主席台的高度不能小于 0。 好基友:根据可靠消息,第 i 个班有 ai 个人。为什么我们看不全这么多人? 你:你读书读傻了吧。他们身高不一样,挡住了呗。 好基友:好哥们~这里是他们的体检表。第 i 个班有 ai 份,按照学号从 1 到 ai 整理好 了,上面有他们的身高体重三围。老师也上报了目前大家所在的位置。你能不能立刻告诉我 从我们现在的角度来看可以看见多少人? 为了解决好基友的问题,你需要写一个程序。

 

【数据范围】

对于 60%的数据, n≤ 5,ai≤ 1000,0≤ xj≤ 1W,0<hj≤1W,0<T≤ 10,0<A≤ 10;

对于 100%的数据, n ≤ 5,ai≤ 3000,0≤ xj≤ 10W,0<hj≤ 10W,0<T≤ 10,0<A≤ 10

 

【题解】

只要按照位置从近到远排个序,然后计算每个人的影子最远到哪里。

如果后一个人的影子没有被前一个人的影子挡住,就能够看见他。

反之则不能,此时我们只要取最长的那个影子然后继续比较即可。

#include <cstdio>
#include <algorithm>

const int MAXN = 3000 + 7;

int n, m, ans;
double a, b, i;
char ch;
                
struct Node {
    double high, from, next;
    bool operator < (Node d) {
        return from < d.from;
    }
} node[MAXN];

int main() {
    freopen("profit.in", "r", stdin);
    freopen("profit.out", "w", stdout);
    
    scanf("%d", &n);
    
    while (n--) {
        for (int i = 1; i <= n; i++) node[i].from = 0, node[i].high = 0, node[i].next = 0;
        
        scanf("%d", &m);
        for (int i = 1; i <= m; i++) scanf("%lf%lf", &node[i].from, &node[i].high);
        scanf("%lf%c%lf", &a, &ch, &b);
        
        for (int i = 1; i <= m; i++) node[i].next = node[i].from + node[i].high / a * b;
        
        std::sort(node + 1, node + m + 1);
        
        ans = 0;
        int last = node[1].next;
        for (int i = 2; i <= m; i++) {
            if (node[i].next <= last) continue;
            ans++;
            last = node[i].next;
        }
        
        printf("%d\n", ans + 1);
    }
    
    return 0;
}

 

以上是关于2017.10.30noip赛前集训 | T1 军训排队模拟的主要内容,如果未能解决你的问题,请参考以下文章

2017.10.28noip赛前集训 | T1 差分

2017.11.07noip赛前集训 | T1 遭遇DP

2017 noip赛前学习记录 · 我爱学习

牛客网NOIP赛前集训营-提高组(第四场)B 区间(单调优化)

牛客网NOIP赛前集训营-提高组(第四场)B 区间(单调优化)

11.7 CSP赛前集训小结