zoukankan      html  css  js  c++  java
  • Tallest Cow【模拟】

    题目大意:

    现在有 N 头奶牛,已知第 I 头牛是所有牛中最高的牛,身高为 H ;我们还知道 R 种关系,每一种关系包含的 a , b 表示第 a 头牛可以看见第 b 头牛(即第 b 头牛的身高不低于第 a 头牛的身高,并且它们中间的牛的身高都不高于 a 的身高),求每头牛的最高可能身高。


    思路:

    为了使答案最优,我们可以把两头能互相看见的牛之间的牛视为身高一样。
    考虑前缀和,设左边的牛为1,右边的牛为+1,那么求完前缀和就用h减去即可。
    注意!此题需要判重!map+pair走起~


    代码:

    #include <cstdio>
    #include <iostream>
    #include <map>
    using namespace std;
    
    int n,m,h,k,x,y,s[2000001];
    map<pair<int,int>,bool> p;
    
    int main()
    {
        scanf("%d%d%d%d",&n,&m,&h,&k);
        for (int i=1;i<=k;i++)
        {
            scanf("%d%d",&x,&y);
            if (x>y)  //交换
            {
                int t=x;
                x=y;
                y=t;
            }
            if (p[make_pair(x,y)]) continue;  //判重
            p[make_pair(x,y)]=true;
            s[x+1]++;
            s[y]--;
        }   
        for (int i=1;i<=n;i++)
        {
            s[i]+=s[i-1];
            printf("%d\n",h-s[i]);
        }
        return 0;
    }
  • 相关阅读:
    课程总结1
    网站概要设计说明书
    数据库设计说明书
    团队项目之7天工作计划
    NABC
    敏捷开发综述
    二维数组最大子数组
    电梯调度
    输出整数数组中 最大的子数组的结果
    【自习任我行】第二阶段个人总结10
  • 原文地址:https://www.cnblogs.com/hello-tomorrow/p/11998777.html
Copyright © 2011-2022 走看看