• 【BZOJ】1703: [Usaco2007 Mar]Ranking the Cows 奶牛排名


    【题意】给定n头牛和m对大小关系,求最坏情况下至少还需要比较几对奶牛的大小(在未确定顺序的奶牛对中随机比较)

    【算法】floyd求传递闭包

    【题解】可达说明大小已知,则不可达点对数量就是最少比较次数。

    使用bitset优化传递闭包,复杂度O(n^3 /32)。

    #include<cstdio>
    #include<bitset>
    #include<algorithm>
    using namespace std;
    const int maxn=1010;
    
    int n,m;
    bitset<maxn>b[maxn];
    
    void floyd(){
        for(int k=1;k<=n;k++)
            for(int i=1;i<=n;i++)
                if(b[i][k])b[i]|=b[k];
    }
    int main(){
        scanf("%d%d",&n,&m);
        int u,v;
        for(int i=1;i<=m;i++){
            scanf("%d%d",&u,&v);
            b[u][v]=1;
        }
        floyd();
        int ans=0;
        for(int i=1;i<n;i++)for(int j=i+1;j<=n;j++)if(!b[i][j]&&!b[j][i])ans++;
        printf("%d",ans);
        return 0;
    }
    View Code
  • 相关阅读:
    PetaPoco.Core.ttinclude修改
    NoCache
    MapHttpRoute
    打印print
    Throttling ASP.NET Web API calls
    CodeFirst进行数据迁移之添加字段
    sql 获取filename
    image onclick
    验证
    Unity3d疑难问题解决
  • 原文地址:https://www.cnblogs.com/onioncyc/p/7599862.html
Copyright © 2020-2023  润新知