题目描述

在美丽的比特镇一共有$n$个景区,编号依次为$1$到$n$,它们之间通过若干条双向道路连接。
$Byteasar$慕名来到了比特镇旅游,不过由于昂贵的门票费,他只能负担起$4$个景区的门票费。他可以在任意景区开始游览,然后结束在任意景区。
$Byteasar$的旅游习惯比较特殊,一旦他路过了一个景区,他就一定会进去参观,并且他永远不会参观同一个景区两次。所以他想知道,有多少种可行的旅游路线,使得他可以恰好参观$4$个景区呢?即,有多少条简单路径恰好经过了$4$个点。


输入格式

第一行包含两个整数$n$,表示景区的总数。
第$2$至第$n+1$行,每行一个长度为$n$的$01$字符串,第$i+1$行第$j$个字符为$0$表示$i$和$j$之间没有道路,为$1$表示有一条道路。
输入数据保证$(i,j)$的连接情况等于$(j,i)$的连接情况,且$(i,i)$恒为$0$。


输出格式

输出一行一个整数,即可行的路线总数。


样例

样例输入:

4
0101
1010
0101
1010

样例输出:

8


数据范围与提示

样例解释:

$8$条路线分别为:
$1\rightarrow 2\rightarrow 3\rightarrow 4$,$4\rightarrow 3\rightarrow 2\rightarrow 1$,
$2\rightarrow 3\rightarrow 4\rightarrow 1$,$1\rightarrow 4\rightarrow 3\rightarrow 2$,
$3\rightarrow 4\rightarrow 1\rightarrow 2$,$2\rightarrow 1\rightarrow 4\rightarrow 3$,
$4\rightarrow 1\rightarrow 2\rightarrow 3$,$3\rightarrow 2\rightarrow 1\rightarrow 4$。

数据范围:


题解

$\Theta(n^4)$搜索肯定死,我们考虑如何优化。

假设路径是$a\rightarrow b\rightarrow c\rightarrow d$,那么我们可以考虑枚举边$b\rightarrow c$,然后看有多少可行的$a,b$,所以边$b\rightarrow c$对答案的贡献即为$({deg}_b-1)\times ({deg}_c-1)-$经过$b\rightarrow c$这条边的三元环个数,这样我们就成功的优化到了$\Theta(n^3)$。

考虑接着优化,因为经过$b\rightarrow c$这条边的三元环个数就是跟$b,c$两个点都有连边的点的个数,所以我们可以用$bitset$优化,这样就拿到满分了。

时间复杂度:$\Theta(\frac{n^3}{k})$($k$根据评测机配置不同略有不同,大多情况下是$32$)。

期望得分:$100$分。

实际得分:$100$分。


代码时刻

#include<bits/stdc++.h>
using namespace std;
int n;
char ch[1501];
int du[1501];
bitset<1500> bit[1501];
bool Map[1501][1501];
long long ans;
int main()
{
int n;scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%s",ch+1);
for(int j=1;j<=n;j++)
if(ch[j]-'0')
du[i]+=(bit[i][j]=Map[i][j]=1);
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
ans+=Map[i][j]*((du[i]-1)*(du[j]-1)-(bit[i]&bit[j]).count());
printf("%lld",ans);
return 0;
}
 

rp++

[CSP-S模拟测试]:Tourist Attractions(简单图论+bitset)的更多相关文章

  1. 模拟测试—moq:简单一两句

    在Xunit的基础上,说话模拟测试. 假如我们有这样一个控制器里面有这样一个方法,如图 我们在对Bar测试得时候,如果测试未通过,错误有可能来至于Bar,也有可能错误来至于serverde Foo方法 ...

  2. [CSP-S模拟测试]:城市游戏(图论+DP)

    题目传送门(内部题109) 输入格式 第一行,两个整数$n,m$. 接下来$m$行,每行三个整数$u,v,l$,描述了一条道路连接的两个路口的编号以及道路的长度. 输出格式 输出一行一个整数,为所求的 ...

  3. [CSP-S模拟测试]:电压机制(图论+树上差分)

    题目描述 科学家在“无限神机”($Infinity\ Machine$)找到一个奇怪的机制,这个机制有$N$个元件,有$M$条电线连接这些元件,所有元件都是连通的.两个元件之间可能有多条电线连接.科学 ...

  4. [CSP-S模拟测试]:木叶下(图论)

    题目传送门(内部题77) 输入格式 第一行一个整数$n$,表示原先的树的点数接下来$n-1$行每行两个整数$a,b$,表示原先的树上的$n-1$条边,保证这$n-1$条边形成一棵树. 接下来一行一个整 ...

  5. 联赛模拟测试17 A. 简单的区间 启发式合并

    题目描述 分析 我们要找的是一段区间的和减去该区间的最大值能否被 \(k\) 整除 那么对于一段区间,我们可以先找出区间中的最大值 然后枚举最大值左边的后缀与最大值右边的前缀之和是否能被 \(k\) ...

  6. 联赛模拟测试22 D. 简单计算

    题目描述 分析 \(\sum_{i=0}^p[(p|qi)?0:1]=\sum_{i=0}^p[(p/gcd(p,q)|qi/gcd(p,q))?0:1]=\sum_{i=0}^p[(p/gcd(p, ...

  7. 比特镇旅游(Tourist Attractions)【暴力+Bitset 附Bitset用法】

    Online Judge:NOIP2016十连测第一场 T2 Label:暴力,Bitset 题目描述 在美丽的比特镇一共有n个景区,编号依次为1到n,它们之间通过若干条双向道路连接. Byteasa ...

  8. csp-s模拟48,49 Tourist Attractions,养花,画作题解

    题面:https://www.cnblogs.com/Juve/articles/11569010.html Tourist Attractions: 暴力当然是dfs四层 优化一下,固定两个点,答案 ...

  9. [考试反思]1109csp-s模拟测试106:撞词

    (撞哈希了用了模拟测试28的词,所以这次就叫撞词吧) 蓝色的0... 蓝色的0... 都该联赛了还能CE呢... 考试结束前15分钟左右,期望得分300 然后对拍发现T2伪了写了一个能拿90分的垃圾随 ...

随机推荐

  1. 安卓中java和js如何交互

    1.安卓中java和js如何交互 在Android上怎样实现JAVA和JS交互呢?Android的webview是基于webkit内核的,webview中集成了js与java互调的接口函数,通过add ...

  2. upc 组队赛18 STRENGTH【贪心模拟】

    STRENGTH 题目链接 题目描述 Strength gives you the confidence within yourself to overcome any fears, challeng ...

  3. 使用HEXO建站

    使用Hexo模板 按以下指导进行本地预览和上传到你的github. 环境安装 安装node.js node.js官方下载地址https://nodejs.org/en/ 设置npm淘宝镜像站(npm默 ...

  4. python数据类型补充

    四.元组 #为何要有元组,存放多个值,元组不可变,更多的是用来做查询 t=(1,[1,3],'sss',(1,2)) #t=tuple((1,[1,3],'sss',(1,2))) # print(t ...

  5. mybatis配置mapper.xml 的基本操作

    XML 映射文件 本文参考mybatis中文官网进行学习总结:http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html MyBatis 的真正强大在于它的 ...

  6. 为什么 Kafka 速度那么快?

    来源:cnblogs.com/binyue/p/10308754.html Kafka的消息是保存或缓存在磁盘上的,一般认为在磁盘上读写数据是会降低性能的,因为寻址会比较消耗时间,但是实际上,Kafk ...

  7. [fw]Real Mode addressing

    Real Mode 在 real mode 中,memory 的使用被限制在 1 MByte(220 bytes) 內,可用的 address 範圍為 0x00000 ~ 0xFFFFF. 由 mem ...

  8. python学习第十五天字典的创建及增删改查操作方法

    字典是python比较常见的数据类型,跟列表一样,比如的字典的创建,字典的常见的操作的方法,增加,删除,修改,查找等方法,字典的一共的数据方法为 keys()  values() fromkeys() ...

  9. zabbix3.4.8配置自动发现主机并监控

    一.       自动发现功能简介 Zabbix服务器端通过网络或者主机名等方式进行客户端的扫描发现,从进行加入到监控的主机队列中,适用于批量加入多主机监控的场景. 二.       自动发现功能实施 ...

  10. 369-双路千兆网络PCIe收发卡

    双路千兆网络PCIe收发卡 一.产品概述 PCIe网络收发卡要求能支持千兆光口,千兆电口:半高板卡.板卡插于服务器,室温工作. 支持2路千兆光口,千兆电口. FPGA选用型号 XC7A50T-1FGG ...