POJ 2132 暴搜OR Floyd
题意:
给你一个邻接矩阵(n<=25)问所有1到2路径的gcd的lcm是多少。
一些经验(WA/TLE的经验):
1.
无脑暴搜
是会TLE的…….
2.
关于精度
dyf神牛说了:long long就能过 (何必再写个高精呢)
3.
是不是只有我智障把LCM写错了……
思路:
- 暴搜+剪枝
显然的剪枝:若已得的LCM能够除得尽当前解。剪掉。(gcd&lcm的性质)
然后就32msAC了……
差距很大有木有 - 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的更多相关文章
- POJ 1945 暴搜+打表 (Or 暴搜+判重)
思路: 呃呃 暴搜+打表 暴搜的程序::稳稳的TLE+MLE (但是我们可以用来打表) 然后我们就可以打表过了 hiahiahia 可以证明最小的那个数不会超过200(怎么证明的我也不知道),然后就直 ...
- POJ 1414 暴搜
题意比较复杂 (但是很好理解) 大概意思是给你等边三角形(详见题目中的图). 最后一行有n个数,下一次要填的数是c. 里面预先已经填好了数字.(0为未填) 得分的标准是这个分数的连通块周围没有空的地方 ...
- POJ 3188暴搜
题意: 思路: 裸的暴搜 --. 但是要注意如果你不用所有的按键就能输出最优解的话一定要把所有的字母都安排到一个位置-. 我的一群PE就是这么来的-- 为什么写的人这么少-- // by Sirius ...
- POJ 2133 暴搜
题意: 思路: 按照题意暴搜 注意 如果目标串==给的串 答案是2 //By SiriurRen #include <cstdio> #include <cstring> #i ...
- POJ - 2676 暴搜 注意实现细节
经典sudoku问题 按部就班就好 一定要注意细节 大于1还是大于等于1 r c越界判断 judge时0的特判 blabla居然磨了2个小时 改了很多地方所以实现得有点冗余,反正能A吧 /*H E A ...
- POJ 1543 暴搜
题意:输出a^3=b^3+c^3+d^3的所有a,b,c,d的值. b,c,d由小到大且b,c,d都大于1. 思路: 按照题意写就好.... // by SiriusRen #include < ...
- POJ 1950暴搜
思路: 暴力枚举好了..每回判断一下-- 用long long会超时 但是10^20会爆int... 不过仔细想一想 超过10^9的数肯定拼不回0啊-- 猥琐用int AC了 (当然可以打表 ) // ...
- poj 3080 Blue Jeans(水题 暴搜)
题目:http://poj.org/problem?id=3080 水题,暴搜 #include <iostream> #include<cstdio> #include< ...
- [POJ 1204]Word Puzzles(Trie树暴搜&AC自己主动机)
Description Word puzzles are usually simple and very entertaining for all ages. They are so entertai ...
随机推荐
- 杂项-公司:YKK
ylbtech-杂项-公司:YKK YKK的全称为Yoshida Kogyo Kabushikigaisha.YKK是拉链行业的鼻祖,代表着行业标准,因为采用日本精确的工艺,原料和管理方法,YKK价格 ...
- js写发布微博文本框---2017-04-14
实现效果: 1.文本框输入内容,低端字数对应减少 2.当文本框内容超出时,会显示字数超出多少 效果图如下: 实现代码: <!DOCTYPE html><html> <he ...
- Linq、延迟加载、直接加载
1.集合常用扩展方法 Where.Max.Min.OrderBy. Select.//投影后的IEnumerable对象可以通过,AsQueryable转换数据类型 First.FirstOrDefa ...
- SwipeRefreshLayout的使用,下拉刷新
1. <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android ...
- RunLoop主要处理以下6类事件
1.Observer事件,runloop中状态变化时进行通知.(微信卡顿监控就是利用这个事件通知来记录下最近一次main runloop活动时间,在另一个check线程中用定时器检测当前时间距离最后一 ...
- 随手记之TCP Keepalive笔记-tcp_keepalive_timer
这里可以找到大部分处理逻辑,net/ipv4/Tcp_timer.c: static void tcp_keepalive_timer (unsigned long data) { struct so ...
- ZBrush中如何实现智能对称
ZBrush软件智能化和人性化的工作流程让用户在创作中提高工作效率,体验创作乐趣,说起智能化不得不提的就是ZBrush 4R8®给我们提供的智能对称功能,所谓的智能对称就是当您在编辑其中一半的物体模型 ...
- day15 函数对象以及作用域
目录 函数对象 函数对象的四大功能 函数的嵌套 名称空间和作用域 名称空间 考试必考 作用域 global nonlacal LEGB原则 函数对象 ==Python中一切皆对象== 函数名也可以看成 ...
- hdu1698 Just a hook 线段树区间更新
题解: 和hdu1166敌兵布阵不同的是 这道题需要区间更新(成段更新). 单点更新不用说了比较简单,区间更新的话,如果每次都更新到底的话,有点费时间. 这里就体现了线段树的另一个重要思想:延迟标记. ...
- git diff patch方法
UNIX世界的软件开发大多都是协作式的,因此,Patch(补丁)是一个相当重要的东西,因为几乎所有的大型UNIX项目的普通贡献者,都是通过 Patch来提交代码的.作为最重要的开源项目之一,Linux ...