[bzoj2208][Jsoi2010]连通数
一道传递闭包裸题。tarjan+拓扑dp也很强而且貌似更快。本来想写的。
然而查题解的时候发现一个博主的一句话引起了我的共鸣。
bzoj上这道题rank前面都是1500B+的大佬,很快,几百ms,到了1600ms,,就发现了许多600B左右的代码。
后面还有10s+的不知道咋做的。bitset也没加吧(毕竟数据太小了)。
果断Floyd-Warshall传递闭包+bitset水过。
靠题面是jpg啊
Input
输入数据第一行是图顶点的数量,一个正整数N。 接下来N行,每行N个字符。第i行第j列的1表示顶点i到j有边,0则表示无边。
Output
输出一行一个整数,表示该图的连通数。
Sample Input
010
001
100
Sample Output
HINT
对于100%的数据,N不超过2000。
顺便复习传递闭包(OI里的)。好像离散数学有啥玩意我当然是不会啦。
传递闭包就是说给你有向图一个(01矩阵还是边集都行),问两点是否可达。(因为是有向图所以存在A能到B反之不可的情况)。
首先把给的信息建成一个邻接矩阵。
开局只有一个01矩阵,能不能求出正解全看造化你会不会。
其实很简单。Floyd求最短路会叭,直接跑一遍。只要两点之间距离不是inf就说明可达呗!
有点炎爆砸帕奇斯的感觉。因为只是求是否可达,就不需要初始化成inf再跑最短路,
只要$f[i][j]=1$即i可达j,那么j能到的i必然也能到,所以直接在$f[i]$的bitset上再或一个$f[j]$的bitset。
至于循环顺序,和Floyd最短路一样,不知道为啥记住就好咯。
贴代码
#include<bits/stdc++.h> using namespace std; const int mxn=2010; bitset<mxn>g[mxn]; int main(){int n;scanf("%d",&n);char s[mxn];for(int i=1;i<=n;i++){scanf("%s",s+1);for(int j=1;j<=n;j++)g[i][j]=s[j]-'0';g[i][i]=1;}for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)if(g[i][k])g[i]|=g[k];int ans=0;for(int i=1;i<=n;i++)ans+=g[i].count();printf("%d",ans); }
转载于:https://www.cnblogs.com/orzzz/p/7472550.html
[bzoj2208][Jsoi2010]连通数相关推荐
- BZOJ2208 [Jsoi2010]连通数
题目描述: 度量一个有向图连通情况的一个指标是连通,指途中可达点对的个数. 下图的连通数是14 现在要你求出连通数 n<=2000 题解: 网上的题解有的写得很复杂,但是看到n的范围这么小,当然 ...
- [BZOJ2208]:[Jsoi2010]连通数(暴力 or bitset or 塔尖?)
题目传送门 题目描述 度量一个有向图连通情况的一个指标是连通数,指图中可达顶点对的个数. 在上图中,顶点1可以到达1.2.3.4.5. 顶点2可以到达2.3.4.5. 顶点3可以到达3.4.5. 顶点 ...
- bzoj2208 [Jsoi2010]连通数
题目链接 先是强连通分量缩点,然后出来一个DAG 然后就可以DP啦,要找出每个SCC能到达的SCC有哪些 如果直接存一个二维数组来传递闭包的话肯定会TLE对吧 于是我们使用了神奇的bitset就快多了 ...
- bzoj2208: [Jsoi2010]连通数
补写. 学了学用bitset优化floyd,做这题比用强联通缩点+DP方便多了. bitset具体就是一串编码,比如说定义bitset<2100>b,b就是一个2100位的01串. 由于位 ...
- bzoj2208 [Jsoi2010]连通数 强连通分量缩点+拓扑排序+bitset
Description 对于100%的数据,N不超过2000. Solution 容易想到要tarjan缩点按拓扑序递推,但是去重的步骤不好弄 C++STL中有bitset,用这个当成二进制按位状压即 ...
- bzoj2208:[Jsoi2010]连通数
http://blog.csdn.net/u013598409/article/details/47037499 里面似乎有生成数据的... //我本来的想法是tarjan缩点之后然后将图遍历一遍就可 ...
- 2208: [Jsoi2010]连通数
2208: [Jsoi2010]连通数 Time Limit: 20 Sec Memory Limit: 512 MB Submit: 1371 Solved: 557 [Submit][Stat ...
- BZOJ 2208[Jsoi2010]连通数
题面: 2208: [Jsoi2010]连通数 Time Limit: 20 Sec Memory Limit: 512 MB Submit: 3100 Solved: 1347 [Submit] ...
- 2208: [Jsoi2010]连通数(Trajan+bitset)
2208: [Jsoi2010]连通数 Time Limit: 20 Sec Memory Limit: 512 MB Submit: 2929 Solved: 1280 [Submit][Sta ...
最新文章
- 如何获取58上真实号码_如何获取Apollo上项目下的所有namespace?
- mysql触发器学习的一个小错误
- MATLAB 在图像处理和机器视觉的应用举例01 - 官网培训视频笔记(下)分类/灰度共生矩阵/纹理分类学习
- psql屏幕输出全部结果_CommandBuffer实现Distort屏幕扭曲效果
- [转]ExtJS的使用方法汇总—配置和表格控件使用
- 'gbk' codec can't decode byte 0x9d in position 7674: illegal multibyte sequence
- 60套模板免费送,一秒搞定甘特图
- Python繁体中文和简体中文互转
- 飞思卡尔单片机高效c语言编程,飞思卡尔单片机高效C语言编程(中文)
- Lua xxtea 解密脚本(转,做备忘)
- Codeforces Round #595 (Div. 3) E. By Elevator or Stairs?
- 通过UEFI禁用 BD PROCHOT
- 深入浅出理解Java并发AQS的共享锁模式
- 2015 计蒜之道 初赛 第一场 搜狗输入法的分词算法
- 【致敬世界杯】球迷(我)和足球的故事
- Zabbix5系列-监控华为、H3C交换机(snmpv2c/snmpv3/snmptrap) (二)
- 2022帆软杯全国高校数据分析与应用联赛来啦!
- Mysql热点问题总结
- 优酷视频云技术解析-立哥技术
- python 类关联关系
热门文章
- Java之XML解析-使用dom(org.w3c.dom)解析XML
- linux3.0 usb键盘驱动,USBOS V3.0.2021.03.01
- 剑13 TEST2 听力复盘
- Java基础复习-数据类型学习
- 网络兼职圈套你知道多少?拓商提醒您谨防被骗
- 【在web项目jsp页面自动生成二维码功能】
- openresty出现socket read/write busy的原因及解决方法
- 7-3 馅馅馅饼 (20 分)
- Meta首席运营官宣布离职 入职14年助推公司市值超万亿美元
- 请帮小明同学设计一个程序,输入上次考试成绩(int)和本次考试成绩(int),然后输出成绩提高百分比,保留2位小数。