Tourist Attractions 【三元环】
时间:2019-11-08
本文章向大家介绍Tourist Attractions 【三元环】,主要包括Tourist Attractions 【三元环】使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
本人水平有限,题解不到为处,请多多谅解
本蒟蒻谢谢大家观看
题目:
题目描述
在美丽的比特镇一共有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
本题大意:
找出一个三元环,因为三元环一定不能满足题目意思。
本题只需要有一条路径能经过4个不同的点即可(可以为环)
如果不是三元环,我们就用排列组合来求出不是三元环的。
我们可以先全部当成可行方案,最后把三元环的数给减掉即可
三元环用bitset优化
因为统计的ans会爆int,因为我们用排列组合方式求,所以要开long long
具体bitset应用请点:click_here
code:
1 #include<bits/stdc++.h> 2 #pragma GCC optimize(3) 3 const int N=1510; 4 using namespace std; 5 char a[N][N]; 6 bitset<N>sum[N],p; 7 int num[N],tot,n; 8 long long ans=0; 9 int ver[N*N],head[N*N],nxt[N*N]; 10 void inint(){ 11 freopen("tour.in","r",stdin); 12 freopen("tour.out","w",stdout); 13 } 14 inline int read(){ 15 int x=0,f=1;char ch=getchar(); 16 while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();} 17 while(isdigit(ch)){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();} 18 return x*f; 19 } 20 inline void write(int x) 21 { 22 if(x<0)x=-x,putchar('-'); 23 if(x>9)write(x/10); 24 putchar(x%10+'0'); 25 } 26 void add(int x,int y){ 27 ++tot; 28 ver[tot]=y; 29 nxt[tot]=head[x]; 30 head[x]=tot; 31 num[x]++;//统计度数 32 } 33 int main() 34 { 35 //inint(); 36 n=read(); 37 for(int i=1;i<=n;i++){ 38 for(int j=1;j<=n;j++){ 39 cin>>a[i][j]; 40 if(a[i][j]=='1'){ 41 sum[i][j]=1;//有边 42 add(i,j);//建单向边 43 } 44 } 45 } 46 for(int i=1;i<=n;i++){ 47 for(int j=head[i];j;j=nxt[j]){ 48 int y=ver[j]; 49 ans+=(num[i]-1)*(num[y]-1);//减掉父亲连向儿子这一条边,避免重复运算 50 p=sum[i]&sum[y];//统计有多少个1,即三元环的个数 51 ans-=p.count(); 52 } 53 } 54 printf("%lld\n",ans); 55 return 0; 56 }
原文地址:https://www.cnblogs.com/nlyzl/p/11819254.html
- WP Settings Generator:生成WordPress设置相关代码的工具
- Reactjs 入门基础(三)
- 小谈中文环境下中文排版的font-family 字体选择
- WordPress 的几个高级调试( Debug)技巧
- Customizer Library:主题“自定义”功能的WordPress类库
- Reactjs 入门基础(二)
- WordPress中当评论审核通过时候给评论者发邮件
- Reactjs 入门基础(一)
- Option Framework 框架的三个自定义技巧
- 记录一个在Mac OS X 中本地安装Ghost 的报错问题
- 盘点:2017年发生在上海的科技大新闻 与我们的生活如何密切相关
- 滚雷进口车获5亿元投资 品牌双拼给力十足
- Github 与 Bitbucket 的互助协作
- JavaScript 基础(七) 箭头函数 generator Date JSON
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 30分钟学会pyecharts数据可视化
- 用Keras从零开始6步骤训练神经网络
- Keras结构化数据预处理范例——Titanic生存预测
- 从原理上搞懂如何设置线程池参数大小?
- Keras图像数据预处理范例——Cifar2图片分类
- Keras文本数据预处理范例——IMDB影评情感分类
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof 使用详解
- Go 垃圾回收
- 如何在SpringBoot中异步请求和异步调用
- 实现 memcached 客户端:TCP、连接池、一致性哈希、自定义协议
- 30分钟学会LightGBM
- 三种计算图
- 低阶API示范
- 中阶API示范
- 高阶API示范