题意:

给你一个邻接矩阵(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]);

    仔细想想 嗯嗯 很有道理
  1. // by SiriusRen
  2. #include <queue>
  3. #include <cstdio>
  4. #include <iostream>
  5. #define int long long
  6. using namespace std;
  7. int n,map[66][66],LCM=1;
  8. struct node{int now,reached,weight;}s;
  9. queue<node>q;
  10. int gcd(int a,int b){return b?gcd(b,a%b):a;}
  11. signed main(){
  12. cin>>n;
  13. for(int i=1;i<=n;i++)
  14. for(int j=1;j<=n;j++)
  15. cin>>map[i][j];
  16. s.now=1;s.reached=2;s.weight=0;
  17. q.push(s);
  18. while(!q.empty()){
  19. node t=q.front();q.pop();
  20. if(t.weight&&LCM%t.weight==0)continue;
  21. if(t.now==2){
  22. LCM=LCM*t.weight/gcd(LCM,t.weight);
  23. continue;
  24. }
  25. for(int i=1;i<=n;i++)
  26. if(map[t.now][i]&&((1<<i)&t.reached)==0){
  27. s.reached=t.reached|(1<<i);
  28. s.now=i;
  29. s.weight=gcd(t.weight,map[t.now][i]);
  30. q.push(s);
  31. }
  32. }
  33. cout<<LCM;
  34. }
  1. // by SiriusRen
  2. #include <iostream>
  3. #define int long long
  4. using namespace std;
  5. int n,f[66][66];
  6. int gcd(int a,int b){return b?gcd(b,a%b):a;}
  7. signed main(){
  8. cin>>n;
  9. for(int i=1;i<=n;i++)
  10. for(int j=1;j<=n;j++)
  11. cin>>f[i][j];
  12. for(int k=1;k<=n;k++)
  13. for(int i=1;i<=n;i++)
  14. for(int j=1;j<=n;j++)
  15. if(f[i][k]&&f[k][j]){
  16. 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]);
  17. else f[i][j]=gcd(f[i][k],f[k][j]);
  18. }
  19. cout<<f[1][2];
  20. }
  1. // by SiriusRen
  2. #include <iostream>
  3. #define int long long
  4. using namespace std;
  5. int n,f[66][66];
  6. int gcd(int a,int b){return b?gcd(b,a%b):a;}
  7. signed main(){
  8. cin>>n;
  9. for(int i=1;i<=n;i++)
  10. for(int j=1;j<=n;j++)
  11. cin>>f[i][j];
  12. for(int k=1;k<=n;k++)
  13. for(int i=1;i<=n;i++)
  14. for(int j=1;j<=n;j++)
  15. if(f[i][k]&&f[k][j]){
  16. 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]);
  17. else f[i][j]=gcd(f[i][k],f[k][j]);
  18. }
  19. cout<<f[1][2];
  20. }

(得意)竟然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. 2017-3-6 leetcode 118 169 189

    今天什么都没发生 ================================================= leetcode118 https://leetcode.com/problems ...

  2. DB-MySQL:MySQL NULL 值处理

    ylbtech-DB-MySQL:MySQL NULL 值处理 1.返回顶部 1. MySQL NULL 值处理 我们已经知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数 ...

  3. docker中出现容器未运行无法进入容器的操作

  4. Asp.net Web Api中使用配置Unity

    第一步:建立web api,添加unity.webapi. 第二步:在添加了该引用之后,在App_Start中会自动生成UnityConfig.cs文件 第三步:添加数据做测试 第四步:展示效果

  5. React组件化开发

    环境搭建: 1.安装node.js 2.安装cnpm  # npm install -g cnpm --registry=https://registry.npm.taobao.org 3.全局安装c ...

  6. 尝试实现bootstrap3网格系统

    这是一篇搁置了很久的博文,个人实现的关键代码如下: // 这是用sass实现的,只是大致实现了网格系统和offset的功能 $size_list: ( xs: 0, sm: 576, md: 992, ...

  7. Django框架详解之template

    模板简介 将页面的设计和python的代码分离开会更干净简洁更容易维护.我们可以使用Django的模板系统来实现这种模式 python的模板:HTML代码+模板语法 模板包括在使用时会被值替换掉的变量 ...

  8. map————两个数组的交集(2)

    class Solution { public: vector<int> intersect(vector<int>& nums1, vector<int> ...

  9. jenkins 展示报告

    1.下载插件 HTML Publisher plugin 2.设置说明 3.展示css 下载插件 (1).Startup Trigger: 可实现在Jenkins节点(master/slave)启动时 ...

  10. NOI 2015 品酒大会 (后缀数组+并查集)

    题目大意:略 40分暴力还是很好写的,差分再跑个后缀和 和 后缀最大值就行了 一种正解是后缀数组+并查集 但据说还有后缀数组+单调栈的高端操作蒟蒻的我当然不会 后缀数组求出height,然后从大到小排 ...