https://codeforces.com/contest/1206/problem/D

题意:

思路:

如果有3个数二进制有一位都是1,那么答案就是3。否则最多有64*2个正整数。对于64*2个正整数,求最小环即可。

假题E+触及知识盲区场。。

#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define FI first
#define SE second
#define MP make_pair
#define PII pair<int,int>
const LL mod = 1e9+7;
const int MX = 1e6+5;
LL a[MX];
int g[300][300];
int mp[300][300];
vector<LL>v;
int floyd(int n){for(int i=0;i<n;i++){for(int j=0;j<n;j++)mp[i][j]=g[i][j];}int ans=INT_MAX/4;for(int k=0;k<n;k++){ //小于k的任意两点都距离都已求出for(int i=0;i<k;i++){for(int j=i+1;j<k;j++){ans=min(ans,g[i][j]+mp[i][k]+mp[j][k]); //枚举包含k的环,i,j最短路中不包含k}}for(int i=0;i<n;i++){for(int j=0;j<n;j++){g[i][j]=min(g[i][j],g[i][k]+g[k][j]);}}}if(ans==INT_MAX/4)return -1;return ans;
}
int cnt[100];
int main(){int n;cin>>n;for(int i=1;i<=n;i++)scanf("%I64d",&a[i]);for(int i=0;i<300;i++)for(int j=0;j<300;j++) g[i][j]=INT_MAX/3;for(int i=1;i<=n;i++){int wei=1;LL tt=a[i];while(tt){if(tt%2) cnt[wei]++;wei++;tt/=2;}}for(int i=1;i<100;i++) if(cnt[i]>=3){puts("3");return 0;}for(int i=1;i<=n;i++){if(a[i]) v.push_back(a[i]);}for(int i=0;i<v.size();i++){for(int j=i+1;j<v.size();j++) {if((v[i]&v[j])!=0) g[i][j]=g[j][i]=1;}}cout<<floyd(v.size())<<'\n';return 0;
}

CF #580 Div. 2 D. Shortest Cycle//floyd求最小正环(模板相关推荐

  1. 多源最短路径Floyd、Floyd求最小环【模板】

    Floyd算法:用来找出每对点之间的最短距离.图可以是无向图,也可以是有向图,边权可为正,也可以为负,唯一要求是不能有负环.  1.初始化:将Map[][]中的数据复制到Dist[][]中作为每对顶点 ...

  2. AcWing 854. Floyd求最短路(模板)

    题目链接 https://www.acwing.com/problem/content/856/ 思路 我们用d[k][i][j]来表示经过前k个点中,或者说以前k个点作为中转更新从i到j最短路,那么 ...

  3. 最小环 floyd java_干货|Floyd求最小环(CF Shortest Cycle)

    作者:Water_Fox 来源:牛客网 You are given nn integer numbers a1,a2,-,ana1,a2,-,an. Consider graph on nn node ...

  4. Codeforces Round #580 (Div. 2)

    Solutions A. Choose Two Numbers 题意: 给出\(A,B\)两个集合,\(A,B\) 集合分别选一个数\(a,b\) ,使得\(a+b\notin\ A,B\) 思路: ...

  5. 2019.11.2图论专题(AtCoder Splatter Painting、President and Roads、Shortest Cycle、ISlands II)

    D:AtCoder Grand Contest 012 Splatter Painting 题目描述 Squid喜欢在图中为一些顶点染色(毕竟是鱿鱼 ) 现在有一张由 N 个顶点和 M 条边组成的简单 ...

  6. CF #366(div.2) C 模拟,思维

    CF #366(div.2)  C.  Thor 题意:一个手机n个联系人,有q个操作.每次给出ty和ai,如ty==1,表示收到ai的一条信息:如ty==2,表示将ai发的信息都看掉:如ty==3, ...

  7. CF #371 (Div. 2) C、map标记

    1.CF #371 (Div. 2)   C. Sonya and Queries  map应用,也可用trie 2.总结:一开始直接用数组遍历,果断T了一发 题意:t个数,奇变1,偶变0,然后与问的 ...

  8. cf #823 Div.2(A~C)

    Cf #823 Div.2 文章目录 Cf #823 Div.2 [A. Planets](https://codeforces.com/contest/1730/problem/A) [B. Mee ...

  9. cf #818 Div.2(A~C)

    Cf #818 Div.2 文章目录 Cf #818 Div.2 [A. Madoka and Strange Thoughts](https://codeforces.com/contest/171 ...

最新文章

  1. SQL Server 高可用性(三)共享磁盘
  2. 网络编程中的大端和小端
  3. 047_Divider分割线
  4. MSSQL 2008 数据库变成可疑状态
  5. Adobe的学者约翰—沃洛克博士
  6. java zip解压_Java语言入门第一课
  7. sip中的100trying到底有啥用
  8. mac mysql 链接_mac上搭建mysql环境配置和Navicat连接mysql
  9. mysql如何查看表拥有的键_如何查看表或列的所有外键?
  10. 甭给《程序员》把脉——你不是主编
  11. 一文带你了解 JVM 的垃圾回收机制
  12. 我觉得我应该养成经常翻收藏夹的习惯
  13. 逻辑谬误_大规模分布式计算的谬误
  14. 计算机炫酷功能,【实用】上班族必备!10个实用电脑炫酷小技巧~
  15. hard sigmoid函数
  16. openGL之API学习(五十五)凹凸贴图技术
  17. Java线程池原理与实例详解
  18. CSDN学霸课表——系统集成项目管理工程师(软考中级)
  19. oracle静默安装报错,静默安装Oracle11gR2 [FATAL] [INS-32015]报错
  20. 中标麒麟matlab,中标麒麟(龙芯CPU)--忘记root密码怎么修改?

热门文章

  1. C-V2X车载终端的 “集成”之路
  2. 标注成本降低5倍!LaserMix:通用半监督LiDAR点云分割框架(新加坡南洋理工大学)...
  3. 华为交换机命令 端口速率_华为交换机端口限速配置
  4. 群硕董事长刘英武:要去挑战伟大的目标
  5. indesign如何画弧线_教大家INdesign怎么绘制虚线描边连接双箭头的效果
  6. 关于cmd运行java文件问题的解决
  7. Java中字符串的比较
  8. 使用集成开发工具创建WEB应用
  9. ubuntu18 成功安装谷歌浏览器代理插件 SwitchyOmega
  10. smc数显压力表设定方法_smc真空压力表说明书ZSE30ISE30ACN.pdf