题意:

给你一个邻接矩阵(n<=25)问所有1到2路径的gcd的lcm是多少。

一些经验(WA/TLE的经验):

1.

无脑暴搜

是会TLE的…….

2.

关于精度



dyf神牛说了:long long就能过 (何必再写个高精呢)

3.

是不是只有我智障把LCM写错了……

思路:

  1. 暴搜+剪枝

    显然的剪枝:若已得的LCM能够除得尽当前解。剪掉。(gcd&lcm的性质)

    然后就32msAC了……

    差距很大有木有
  2. Floyd 就可以搞(不过看看数据范围根本没有往这个方面想啊……)

    f[i][j] = lcm(f[i][j], gcd(f[i][k], f[k][j]));

    如果是新的边f[i][j]=gcd(f[i][k],f[k][j]);

    仔细想想 嗯嗯 很有道理
// by SiriusRen
#include <queue>
#include <cstdio>
#include <iostream>
#define int long long
using namespace std;
int n,map[66][66],LCM=1;
struct node{int now,reached,weight;}s;
queue<node>q;
int gcd(int a,int b){return b?gcd(b,a%b):a;}
signed main(){
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>map[i][j];
s.now=1;s.reached=2;s.weight=0;
q.push(s);
while(!q.empty()){
node t=q.front();q.pop();
if(t.weight&&LCM%t.weight==0)continue;
if(t.now==2){
LCM=LCM*t.weight/gcd(LCM,t.weight);
continue;
}
for(int i=1;i<=n;i++)
if(map[t.now][i]&&((1<<i)&t.reached)==0){
s.reached=t.reached|(1<<i);
s.now=i;
s.weight=gcd(t.weight,map[t.now][i]);
q.push(s);
}
}
cout<<LCM;
}
// by SiriusRen
#include <iostream>
#define int long long
using namespace std;
int n,f[66][66];
int gcd(int a,int b){return b?gcd(b,a%b):a;}
signed main(){
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>f[i][j];
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(f[i][k]&&f[k][j]){
if(f[i][j])f[i][j]=f[i][j]*gcd(f[i][k],f[k][j])/gcd(gcd(f[i][k],f[k][j]),f[i][j]);
else f[i][j]=gcd(f[i][k],f[k][j]);
}
cout<<f[1][2];
}
// by SiriusRen
#include <iostream>
#define int long long
using namespace std;
int n,f[66][66];
int gcd(int a,int b){return b?gcd(b,a%b):a;}
signed main(){
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>f[i][j];
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(f[i][k]&&f[k][j]){
if(f[i][j])f[i][j]=f[i][j]*gcd(f[i][k],f[k][j])/gcd(gcd(f[i][k],f[k][j]),f[i][j]);
else f[i][j]=gcd(f[i][k],f[k][j]);
}
cout<<f[1][2];
}

(得意)竟然Code Length第一~

POJ 2132 暴搜OR Floyd的更多相关文章

  1. POJ 1945 暴搜+打表 (Or 暴搜+判重)

    思路: 呃呃 暴搜+打表 暴搜的程序::稳稳的TLE+MLE (但是我们可以用来打表) 然后我们就可以打表过了 hiahiahia 可以证明最小的那个数不会超过200(怎么证明的我也不知道),然后就直 ...

  2. POJ 1414 暴搜

    题意比较复杂 (但是很好理解) 大概意思是给你等边三角形(详见题目中的图). 最后一行有n个数,下一次要填的数是c. 里面预先已经填好了数字.(0为未填) 得分的标准是这个分数的连通块周围没有空的地方 ...

  3. POJ 3188暴搜

    题意: 思路: 裸的暴搜 --. 但是要注意如果你不用所有的按键就能输出最优解的话一定要把所有的字母都安排到一个位置-. 我的一群PE就是这么来的-- 为什么写的人这么少-- // by Sirius ...

  4. POJ 2133 暴搜

    题意: 思路: 按照题意暴搜 注意 如果目标串==给的串 答案是2 //By SiriurRen #include <cstdio> #include <cstring> #i ...

  5. POJ - 2676 暴搜 注意实现细节

    经典sudoku问题 按部就班就好 一定要注意细节 大于1还是大于等于1 r c越界判断 judge时0的特判 blabla居然磨了2个小时 改了很多地方所以实现得有点冗余,反正能A吧 /*H E A ...

  6. POJ 1543 暴搜

    题意:输出a^3=b^3+c^3+d^3的所有a,b,c,d的值. b,c,d由小到大且b,c,d都大于1. 思路: 按照题意写就好.... // by SiriusRen #include < ...

  7. POJ 1950暴搜

    思路: 暴力枚举好了..每回判断一下-- 用long long会超时 但是10^20会爆int... 不过仔细想一想 超过10^9的数肯定拼不回0啊-- 猥琐用int AC了 (当然可以打表 ) // ...

  8. poj 3080 Blue Jeans(水题 暴搜)

    题目:http://poj.org/problem?id=3080 水题,暴搜 #include <iostream> #include<cstdio> #include< ...

  9. [POJ 1204]Word Puzzles(Trie树暴搜&amp;AC自己主动机)

    Description Word puzzles are usually simple and very entertaining for all ages. They are so entertai ...

随机推荐

  1. BZOJ 1786 DP

    思路: 肯定从小往大填合适了 f[i][j]表示第i个数是j的最少逆序对数 f[i][j]=min(f[i-1][k]+cost,f[i][j]) 优化一下成O(nk)就好啦~ (不优化也可以过的-) ...

  2. CentOS 6.7操作系统安装

    如果由于是显卡驱动不兼容的话,在选择安装界面按tab键,进入命令行,然后在命令行后加上 nodmraid 关键字回车开始安装. 接下来选择hard driver   选择最后一个分区进行系统安装,然后 ...

  3. MeayunDB-高性能分布式内存数据库

    MeayunDB(www.meayun.com)是一款分布式的NoSQL列式内存数据库,由C#编写,主要为高性能,高并发,高可伸缩及大数据系统提供技术解决方案.基于MeayunDB,可以简单,快速的构 ...

  4. java导出html页面

    http://blog.csdn.net/zhyh1986/article/details/8727523#t6 http://blog.csdn.net/zuozuofuwaiwai/article ...

  5. jQuery优化性能的十种方法

    1,总是从ID选择器开始继承 例如: <div id="content"> <form method="post" action=" ...

  6. gcp – 源于CP的高级命令行文件拷贝工具

    作者:linux 出处:http://linux.cn/thread/11868/1/1/ gcp – 源于CP的高级命令行文件拷贝工具 几周前,我们讨论了高级拷贝(修改于cp命令,让其可以显示复制进 ...

  7. Proxifier安装与使用

    Proxifier安装与使用 1.Proxifier官网可能打不开,这是一个下载地址,提取码为p1l8. 用户名随意填 注册码下边 5EZ8G-C3WL5-B56YG-SCXM9-6QZAP G3ZC ...

  8. js数组并集,交集,差集

    js数组并集,交集,差集的计算方式汇总 一. new Set 方式实现 这种方式实现起来比较简单,原理就是参考new Set可以去重的功能 ,关于去重可以点击 https://www.haorooms ...

  9. CSS3属性之text-overflow:ellipsis,指定多行文本中任意一行显示...

    对于text-overflow:ellipsis,文本超出部分显示...,但要实现这个效果,却有一些必备条件,如下: div{ overflow:hidden; white-space:nowrap; ...

  10. nodejs安装与概述

    第一部分:安装与测试 1 官方下载地址 https://nodejs.org/en/ 2 测试是否安装成功? window下打开CMD窗口   输入:node -v  => 显示安装的nodej ...