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

题意:

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

思路:

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

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

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

 

题解:来自这里

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

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <string>
#include <queue>
#include <stack>
#include <vector>
#include <map>
#include <set>
#include <functional>
#include <time.h> using namespace std; const int INF = <<;
const int MAXN = ; int myPow(int d, int n) {
int res = ;
while (n>) {
if (n&) res *= d;
d *= d;
n >>= ;
}
return res;
} vector<pair<int, int> > G[MAXN];
int n, m; void getGraph() {
for (int i = ; i < MAXN; i++)
G[i].clear();
n = ;
for (int i = ; i >= ; i--) {
G[n].push_back(make_pair(n+, ));
G[n].push_back(make_pair(n+, (i!=) ? (-myPow(, i-)) : ));
G[n+].push_back(make_pair(n+, -myPow(, i)));
n += ;
}
m = ;
for (int i = ; i <= n; i++)
m += G[i].size();
} void output() {
printf("%d %d\n", n, m);
for (int i = ; i <= n; i++)
for (int j = ; j < G[i].size(); j++)
printf("%d %d %d\n", i, G[i][j].first, G[i][j].second); } int main() {
#ifdef Phantom01
freopen("HDU4889.txt", "r", stdin);
#endif //Phantom01 getGraph();
int C;
while (scanf("%d", &C)!=EOF) {
output();
} return ;
}

最新文章

  1. 为什么说在使用多条件判断时switch case语句比if语句效率高?
  2. codeforces 425C
  3. js的语句
  4. 【60】Spring总结之基础架构(1)
  5. day02 python数据类型
  6. Python-cookie,session
  7. jquery 3.4.0
  8. Codeforces828 D. High Load
  9. C# 方法中的this参数
  10. JEECG前后端分离UI框架实战版本抢先体验(ng2-admin+Angular4+AdminLTE+WebStorm)
  11. JQuery对CheckBox的一些相关操作
  12. bzoj 1188
  13. HDU 5884 Sort(二分+优先队列)
  14. nginx如何做到TCP的负载均衡
  15. codevs 1052 地鼠游戏 优先队列
  16. 5种调优Java NIO和NIO.2的方式
  17. Angular7教程-04-Angular常用操作(下)
  18. 数据库字符集与排序规则(Character Set And Collation)
  19. php mysql apache字符集(二) (转)
  20. TCP的3次握手/4次握手

热门文章

  1. Uva 1605 Building for UN【构造法】
  2. webpack中optimization 的 runtimeChunk 是干嘛的
  3. How Javascript works (Javascript工作原理) (五) 深入理解 WebSockets 和带有 SSE 机制的HTTP/2 以及正确的使用姿势
  4. NOIp模拟赛二十八
  5. HYSBZ-1040 骑士 基环树上的树状dp
  6. iview中单击行,使得checkbox状态的方法
  7. 6款 jQuery Lightbox图片查看触控插件
  8. 【图灵杯 A】谷神的赌博游戏
  9. fileOP
  10. 转:强制Visual Studio以管理员身份运行