【USACO 2.3】Controlling Companies (递推)

题意:A公司对B公司有控制权的条件是满足下面条件之一:A=B,A对B的股份超过50%,A控制的公司对B的股份之和超过50%。

分析:我把控制关系分个等级:第一级是直接的股份超过50%,第二级是至少需要隔着第一级控制的公司才能控制此公司,...

从第一级推到第二级,第二级推到第三级...结束条件是这一次没有增加任何控制关系。

http://train.usaco.org/usacoprob2?a=O1HFwuT0pRX&S=concom

/*
TASK:concom
LANG:C++
*/
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
#define file(s) freopen(#s".in","r",stdin);freopen(#s".out","w",stdout)
using namespace std;
#define N 105
int m;
int c[N][N],g[N][N];
int main(){
    file(concom);
    scanf("%d",&m);
    for(int i=1;i<=m;i++){
        int u,v,w;
        scanf("%d %d %d",&u,&v,&w);
        g[u][v]=w;
        if(w>50){
            c[u][v]=1;
        } c[u][u]= c[v][v]=1;
    }
    for(int k=0;k==0;){
        k=1;
        for(int i=1;i<=100;i++){
            int ct=0,ut=0,con[N],ucn[N];
            for(int j=1;j<=100;j++)
                if(c[i][j]){con[++ct]=j;}
                else{ ucn[++ut]=j;}
            for(int j=1;j<=ut;j++){
                int sum=0;
                for(int l=1;l<=ct;l++)
                {
                    sum+=g[con[l]][ucn[j]];
                    if(sum>50){
                        k=0;
                        c[i][ucn[j]]=1;
                        break;
                    }
                }
            }
        }
    }
    for(int i=1;i<=100;i++)
        for(int j=1;j<=100;j++)
        if(i!=j&&c[i][j])printf("%d %d\n",i,j);
    return 0;
}

  

时间: 2024-10-06 03:27:27

【USACO 2.3】Controlling Companies (递推)的相关文章

usaco题目分享——Controlling Companies

Controlling Companies Some companies are partial owners of other companies because they have acquired part of their total shares of stock. For example, Ford owns 12% of Mazda. It is said that a company A controls company B if at least one of the foll

USACO Section2.3 Controlling Companies 解题报告 【icedream61】

concom解题报告------------------------------------------------------------------------------------------------------------------------------------------------[题目] 有至多100个公司,每个公司可能会有很多子公司,请你输出每个公司有哪些子公司. B是A的子公司,有以下两种情况: 1. A拥有B超过50%的股份 2. A某些子公司(包括A自己)各拥

洛谷P1475 控制公司 Controlling Companies

P1475 控制公司 Controlling Companies 66通过 158提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交  讨论  题解 最新讨论 暂时没有讨论 题目描述 有些公司是其他公司的部分拥有者,因为他们获得了其他公司发行的股票的一部分.(此处略去一句废话)据说,如果至少满足了以下三个条件之一,公司A就可以控制公司B了: 公司A = 公司B. 公司A拥有大于50%的公司B的股票. 公司A控制K(K >= 1)个公司,记为C1, ..., CK,每个公司Ci拥

poj 2096 Collecting Bugs 【概率DP】【逆向递推求期望】

Collecting Bugs Time Limit: 10000MS   Memory Limit: 64000K Total Submissions: 3523   Accepted: 1740 Case Time Limit: 2000MS   Special Judge Description Ivan is fond of collecting. Unlike other people who collect post stamps, coins or other material s

Poj2229--Sumsets(递推)

Sumsets Time Limit: 2000MS   Memory Limit: 200000K Total Submissions: 15052   Accepted: 6001 Description Farmer John commanded his cows to search for different sets of numbers that sum to a given number. The cows use only numbers that are an integer

[递推dp] zoj 3747 Attack on Titans

题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5170 Attack on Titans Time Limit: 2 Seconds      Memory Limit: 65536 KB Over centuries ago, mankind faced a new enemy, the Titans. The difference of power between mankind and their newf

poj 2229 【完全背包dp】【递推dp】

poj 2229 Sumsets Time Limit: 2000MS   Memory Limit: 200000K Total Submissions: 21281   Accepted: 8281 Description Farmer John commanded his cows to search for different sets of numbers that sum to a given number. The cows use only numbers that are an

0x02 枚举、模拟、递推

1.TYVJ1266(这站是不是已经倒闭了啊) USACO陈年老题,对于这种开关问题啊,最多只按一次,而且第一行随便按完下面的就全确定了,类似的还有固定翻转一个长度的区间,这个也是最多翻一次的而且翻的次数为n-L 2.POJ1958 四塔的汉诺塔问题.但是好像是弱化的二维DP递推,马马虎虎吧 3.bzoj1218 陈年老题,二维前缀和+老古董套路容斥 4.POJ3263 有点意思的题,假如我做的话就会强行差分约束,但是我不能确定类spfa的做法能否满足.正解是对于两个个可以相互看到的点,当然先是

hdu 1207 汉诺塔II (DP+递推)

汉诺塔II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4529    Accepted Submission(s): 2231 Problem Description 经典的汉诺塔问题经常作为一个递归的经典例题存在.可能有人并不知道汉诺塔问题的典故.汉诺塔来源于印度传说的一个故事,上帝创造世界时作了三根金刚石柱子,在一根柱子上从下往

hdu 1267 递推

下沙的沙子有几粒? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4326    Accepted Submission(s): 2268 Problem Description 2005年11月份,我们学校参加了ACM/ICPC 亚洲赛区成都站的比赛,在这里,我们获得了历史性的突破,尽管只是一枚铜牌,但获奖那一刻的激动,也许将永远铭刻