zoukankan      html  css  js  c++  java
  • luogu P4306 [JSOI2010]连通数

    传送门

    还是比较难的

    首先题意就容易看错

    要求的是有向图单向可达点对数目

    考虑环中一定是互相可达的

    所以先缩点然后统计好内部的贡献是sze[col]的平方

    再dp一下就行

    话说输出N^2有90 

    另:有一个非标准做法就是O(N^3)搞一个传递闭包

    然后用bitset卡常1/32

    坑点就是(i->i)是要算到答案里的......

    Time cost:55min

    Code:

     1 // luogu-judger-enable-o2
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<bitset>
     5 using namespace std;
     6 #define rep(i,a,n) for(int i = a;i <= n;i++)
     7 const int N = 2005;
     8 //head
     9 int n,ans;
    10 char s[N];
    11 bitset<N> dp[N];
    12 int main() {
    13     scanf("%d",&n);
    14     rep(i,1,n) {
    15     scanf("%s",s+1);
    16     rep(j,1,n) dp[i][j] = (s[j] == '1' || j == i);
    17     }
    18     rep(i,1,n) rep(j,1,n) {
    19     if(dp[j][i]) dp[j] |= dp[i];
    20     //bitset you_hua O(n^3/32)
    21     }
    22     rep(i,1,n) ans += dp[i].count();
    23     printf("%d
    ",ans);
    24     return 0;
    25 }
    View Code
    > 别忘了 总有人在等着你
  • 相关阅读:
    MongoClient类
    MongoDB基本操作(增删改查)
    为什么MongoDB适合大数据的存储?
    npm的使用
    nodejs安装教程
    c#byte数组和string类型转换
    C#中数组、ArrayList和List三者的区别
    eclspse魔板
    mysql的备份
    shell的使用
  • 原文地址:https://www.cnblogs.com/yuyanjiaB/p/9910334.html
Copyright © 2011-2022 走看看