zoukankan      html  css  js  c++  java
  • USACO 控制公司 Controlling Companies

    友情链接神犇520的博客

    题目:

    题目描述

    有些公司是其他公司的部分拥有者,因为他们获得了其他公司发行的股票的一部分。(此处略去一句废话)据说,如果至少满足了以下三个条件之一,公司A就可以控制公司B了:

    公司A = 公司B。

    公司A拥有大于50%的公司B的股票。

    公司A控制K(K >= 1)个公司,记为C1, ..., CK,每个公司Ci拥有xi%的公司B的股票,并且x1+ .... + xK > 50%。

    给你一个表,每行包括三个数(i,j,p);表明公司i享有公司j的p%的股票。计算所有的数对(h,s),表明公司h控制公司s。至多有100个公司。

    写一个程序读入N组数(i,j,p),i,j和p是都在范围(1..100)的正整数,并且找出所有的数对(h,s),使得公司h控制公司s。

    输入输出格式

    输入格式:

    第一行: N,表明接下来三个数的数量,即(i,j,p)的数量。

    第二行到第N+1行: 每行三个整数作为一个三对数(i,j,p),表示i公司拥有j公司 p%的股份。

    输出格式:

    输出零个或更多个的控制其他公司的公司。每行包括两个整数A、B,表示A公司控制了B公司。将输出的数对以升序排列。

    请不要输出控制自己的公司(应该是不输出自己,互相控制的公司还是要输出的)。

    输入输出样例

    输入样例#1:
    3
    1 2 80
    2 3 80
    3 1 20
    输出样例#1:
    1 2
    1 3
    2 3

    说明

    翻译来自NOCOW

    USACO 2.3


    好吧,这个题的数据是有点水(至少洛谷和USACO上是这样),然后直接暴搜三重循环可以水80左右,但是要想那满分肯定没那么简单,做的时候我就想到了dfs,但是无奈思路有问题,所以还是错了,然后看了five20(five20的博客传送门见上方)的代码才把思路理清,好吧,其实真的很水,所以就直接上代码算了。。。。。。

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<iostream>
    #include<cstdlib>
    #include<cmath>
    using namespace std;
    int num,n,f[210][210];
    bool pd[210][210];
    void dfs(int u,int k)
    {
      if(pd[u][k]) return ;
      pd[u][k]=true;
      for(int i=1;i<=num;i++){
        f[u][i]+=f[k][i];
        if(f[u][i]>50)dfs(u,i);
      }
    }
    int main()
    {
      //freopen("control.in","r",stdin);
      //freopen("control.out","w",stdout);
      scanf("%d",&n);int x,y,z;
      for(int i=1;i<=n;i++)
        {
          scanf("%d%d%d",&x,&y,&z);
          num=max(num,max(x,y));
          f[x][y]=z;
        }
      for(int i=1;i<=num;i++)
        for(int j=1;j<=num;j++)
          if(f[i][j]>50)dfs(i,j);
      for(int i=1;i<=num;i++)
        for(int j=1;j<=num;j++)
          if(i!=j&&pd[i][j])
        printf("%d %d
    ",i,j);
      return 0;
    }

    好了,这题就这么water掉吧

    蒟蒻写博客不易,如果有误还请大佬们提出
    如需转载,请署名作者并附上原文链接,蒟蒻非常感激
    名称:HolseLee
    博客地址:www.cnblogs.com/cytus
    个人邮箱:1073133650@qq.com
  • 相关阅读:
    There is an overlap in the region chain修复
    There is an overlap in the region chain
    region xx not deployed on any region server
    python 中的re模块,正则表达式
    TCP粘包问题解析与解决
    yield from
    Git push提交时报错Permission denied(publickey)...Please make sure you have the correct access rights and the repository exists.
    mysql 中Varchar 与char的区别
    Mysql 字符集及排序规则
    请实现一个装饰器,限制该函数被调用的频率,如10秒一次
  • 原文地址:https://www.cnblogs.com/cytus/p/7649530.html
Copyright © 2011-2022 走看看