其实这个题是抄的题解啦…… 题解给了一个图,按照那个图模拟一遍大概就能理解了。

题意:

  有一段程序,给你一个C值(程序中某常量),让你构造一组数据,使程序输出"doge"
   那段代码大概是 SPFA的SLF优化。其实题目的意思是让我们构造一组数据,使得总的出队次数大于C。
        数据范围 C<=23,333,333。输出的图中最多有100个点,没有重边、自环、负环。

思路:

  SLF: 设队首元素为 i, 队列中要加入节点 j, 在        时加到队首而不是队尾, 否则和普通的 SPFA 一样加到队尾.

  这个优化是基于贪心的思想,因为出当前结点的的距离越小,那么他可能更新点就越多,从而达到优化的目的。

  因为是贪心,我们可以“欺骗”他一下。
        我们可以让距离比较大的结点加入队列,那么他会比较晚出队,但是,他会经过一系列的会更新原来更新过的结点,那么被更新的点会重新入队。那么被更新点原来的更新路径会重新被更新一次。

 

题解:来自这里

代码: 先在程序中把图建出来,然后在输出图。这样做会简单一些。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <cstdlib>
 5 #include <cmath>
 6 #include <algorithm>
 7 #include <string>
 8 #include <queue>
 9 #include <stack>
10 #include <vector>
11 #include <map>
12 #include <set>
13 #include <functional>
14 #include <time.h>
15
16 using namespace std;
17
18 const int INF = 1<<30;
19 const int MAXN = 105;
20
21 int myPow(int d, int n) {
22     int res = 1;
23     while (n>0) {
24         if (n&1) res *= d;
25         d *= d;
26         n >>= 1;
27     }
28     return res;
29 }
30
31 vector<pair<int, int> > G[MAXN];
32 int n, m;
33
34 void getGraph() {
35     for (int i = 0; i < MAXN; i++)
36         G[i].clear();
37     n = 1;
38     for (int i = 30; i >= 0; i--) {
39         G[n].push_back(make_pair(n+1, 0));
40         G[n].push_back(make_pair(n+2, (i!=0) ? (-myPow(2, i-1)) : 0));
41         G[n+1].push_back(make_pair(n+2, -myPow(2, i)));
42         n += 2;
43     }
44     m = 0;
45     for (int i = 1; i <= n; i++)
46         m += G[i].size();
47 }
48
49 void output() {
50     printf("%d %d\n", n, m);
51     for (int i = 1; i <= n; i++)
52         for (int j = 0; j < G[i].size(); j++)
53             printf("%d %d %d\n", i, G[i][j].first, G[i][j].second);
54
55 }
56
57 int main() {
58     #ifdef Phantom01
59         freopen("HDU4889.txt", "r", stdin);
60     #endif //Phantom01
61
62     getGraph();
63     int C;
64     while (scanf("%d", &C)!=EOF) {
65         output();
66     }
67
68     return 0;
69 }

View Code

转载于:https://www.cnblogs.com/Phantom01/p/3878177.html

HDU 4889 Scary Path Finding Algorithm相关推荐

  1. [多校联考-西南大学附中]切面包(线段树/概率与期望)+ Slow Path Finding Algorithm(拓扑排序/DP)+ 分数转化(数论)

    文章目录 T1:分数转换 题目 题解 代码实现 T2:Slow Path Finding Algorithm 题目 题解 代码实现 T3:切面包 题目 题解 代码实现 T1:分数转换 题目 Time ...

  2. HDU 5385 The path(贪心、构造、最短路径树)

    HDU 5385 题目大意:给定一个图,dis表示第i个点到1点的最短路,dis1=0,给有向图上的边赋权值(1~n)满足dis1<dis2<dis3<--<disk>d ...

  3. hdu 5385 The path

    http://acm.hdu.edu.cn/showproblem.php?pid=5385 题意: 给定一张n个点m条有向边的图,构造每条边的边权(边权为正整数),令d(x)表示1到x的最短路,使得 ...

  4. hdu 3631 Shortest Path(Floyd)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3631 Shortest Path Time Limit: 3000/1000 MS (Java/Oth ...

  5. hdu 5636 Shortest Path(Floyd最短路)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5636 解题思路: 这道题可以用Floyd解决,不过需要特殊处理一下: 实际上我们只需要利用添加的那三条 ...

  6. HDU 4338 Simple Path 点双连通+lca

    [题目大意] 给你一个无向图.问,从点u到点v,若是只走简单路径,有多少个点不能到达? [思路] 这题肯定是要双连通缩点的,以前老是觉得点双连通不会用来缩点,因为割点可以属于多个连通集合,现在立马打脸 ...

  7. Fast-planner代码阅读2-TopoReplan (path searchiing部分)

    文章目录 1. 总体流程 2.Topo Path Finding Algorithm主要算法及图例 3. topoPath路径搜索代码流程 3.1 createGraph() 3.1.1 findVi ...

  8. 「多校联考」第三周二场

    「多校联考」第三周二场 T1 分数转换 题目 考场思考(正解) T2 Slow Path Finding Algorithm (SPFA) 考场思路 正解 T3 切面包 考场思路 正解 这套题是真的很 ...

  9. 《生物信息学:导论与方法》--新一代测序NGS:转录组分析RNA-Seq--听课笔记(十四)

    第八章 新一代测序NGS:转录组分析RNA-Seq 8.1 转录组介绍 A transcriptome is a collection of all the transcripts present i ...

  10. (Shortest Paths Algorithm)

    最短路算法(Shortest Paths Algorithm) 假如你有一张地图,地图上给出了每一对相邻城市的距离,从一个地点到另外一个地点,如何找到一条最短的路? 最短路算法要解决的就是这类问题.定 ...

最新文章

  1. provide和inject,Vue父组件直接给孙子组件传值
  2. 共享程序集和强命名程序集(3):强命名程序集的一些作用
  3. 数据库表设计的随笔(分库分表)
  4. 转Python 标准库 urllib2 的使用细节
  5. 《JAVA练习题目2》 输入十个学生的考试成绩,将及格学生的成绩从高到低排序输出。
  6. visualvm远程监控jvm_8款JVM性能调优监控工具(提高开发效率)
  7. 宝峰uv5r怎么设置信道_极蜂D301对讲机和宝峰UV5R 半月评
  8. oracle停止trace日志,关闭ORACLE客户端trace日志
  9. 企业实战05:Oracle数据库_操作表中数据
  10. 扩增子测序引入的假阳性稀有类群干扰对微生物群落多样性、构建机制及相互作用的研究...
  11. 学生静态网页设计作品之我的家乡
  12. HrbustOJ 1167 每种面值的货币要多少
  13. 三角(Triangle)
  14. 【Python百日进阶-Web开发-Feffery】Day344 - fac数据展示02:AntdBadge徽标数
  15. 数组元素全排列、组合 C语言代码
  16. 芯片短缺并没有妨碍英特尔创下“有史以来业绩最好的一年”
  17. 【程序人生】拿到offer就稳了?实习期你还得“忍”一下
  18. notification自定义铃声
  19. 简易全双工物联网远程控制门禁设计方案
  20. JK短裙少女怎么画?

热门文章

  1. Java微信公众平台开发之素材管理
  2. 计算机网络与通信毕业论文题目,数据通信与网络系统毕业论文题目(692个).doc...
  3. Fastadmin读取数据库配置
  4. 需要u3d资源吗,免费送哦
  5. 僵尸网络是什么;僵尸网络有什么特点
  6. linux 查看开机启动项
  7. python中import re_彻底搞懂Python 中的 import 与 from import
  8. 如何直接通过电脑查看路由器密码
  9. 可汗学院公开课——统计学笔记Task1
  10. UVM寄存器模型:reg adapter实现和集成