zoukankan      html  css  js  c++  java
  • 最高的奶牛

    Description

      FJ有N(1 <= N <= 10,000)头奶牛,编号为1到N,站成一条直线。每头奶牛自己的身高(正整数,秘密未知),告诉你最高奶牛的身高H及位置I,同时告诉你R(0 <= R <= 10,000)组信息,每组信息由两个数ai,bi组成,表示奶牛ai可以看到奶牛bi,这就意味着奶牛bi的身高至少和奶牛ai的身高一样高,同时奶牛ai到奶牛bi之间的奶牛身高必须低于奶牛ai
      现在要你求出每头奶牛最高可能的高度,保证有解。

    Input

      第1行输入4个空格隔开的整数N,I,H,R
      第2到R+1行,每行两个空格隔开的不同的整数A,B(1<=A,B<=N),表示奶牛A能看到奶牛B

    Output

      第1到N行,每行一个整数表示每只奶牛最高可能的高度。

    Sample Input

    9 3 5 5
    1 3
    5 3
    4 3
    3 7
    9 8

    Sample Output

    5
    4
    5
    3
    4
    4
    5
    5
    5

    Data Constraint

    Hint

    解释:如果奶牛A和奶牛B一样高,则可以出现A看到B,B又看到A的情况,如果奶牛A矮于奶牛B,则只可能出现奶牛A看到奶牛B,奶牛B不可能看到奶牛A。
    .
    .
    .
    .
    .

    分析

    一开始全部高度是最高高度,每输入a看见b,那么如果a和b之间所有奶牛有一头比a高,那么a与b之间所有奶牛全部减1。
    .
    .
    .
    .
    .

    程序:
    #include<iostream>
    using namespace std;
    int main()
    {
        int n,tst,h,r,s[10001],x,y,p,k;
        cin>>n>>tst>>h>>r;
        for (int i=1;i<=n;i++)
        s[i]=h;
        for (int i=1;i<=r;i++)
        {
            cin>>x>>y;
            p=x;
            if (x>y)
            {
                k=x;x=y;y=k;
            }
            for (int j=x+1;j<=y-1;j++)
            if (s[j]>=s[p])
            {
                for (int k=x+1;k<=y-1;k++)
                s[k]--;
                break;
            }
        }
        for (int i=1;i<=n;i++)
        cout<<s[i]<<endl;
        return 0;
    }
  • 相关阅读:
    c#.net分类上升达人~~~呵呵。。。
    js5:框架的使用,使框架之间无痕连接
    搭建 redis 集群 (redis-cluster)
    写好用户故事的10个提示
    什么是用户故事及用户故事在敏捷开发中如何编写
    java开发手册
    性能优化指南:性能优化的一般性原则与方法
    大型网站技术架构:摘要与读书笔记
    用MyEclipse JPA创建项目
    深入了解 JPA
  • 原文地址:https://www.cnblogs.com/YYC-0304/p/9499955.html
Copyright © 2011-2022 走看看