喜闻乐见的提答题,这道题还是蛮有趣的
数据结构题写得心塞,来一道提答意思意思
如果喜欢这类题的话还可以去做做uoj83。
这题是给出了两个问题,一个最短路,一个无向图染色问题。
Data 1
Floyd VS Dijkstra
嗯107个整数,我们只要给一个n=102,下面一坨0 Floyd就狗带了
#include <iostream> #include <stdio.h> using namespace std; int main() { printf("102\n"); for(int i=1;i<=102;i++) puts("0"); puts("1"); printf("%d %d\n",1,102); }
Data 2
啥Floyd 艹 Bellman-Ford?
看了一下代码…似乎真的可以随便艹掉。
Floyd:O(n^3),询问O(1)。
Bellman-Ford:询问O(ne)。
似乎随机数据一波就行?然而随机数据烂了。
这个点就是想让我们得到一个让bellman-ford和理论复杂度相差无几的数据。
其实很简单啊…加一坨没用的自环,然后剩下的搞一个5->4->3->2->1这样的链即可。
#include <iostream> #include <stdio.h> using namespace std; int main() { puts("80"); int mm=1500; printf("%d ",mm); for(int i=1;i<=mm;i++) printf("%d %d ",0,2333); putchar(10); for(int i=1;i<=79;i++) printf("1 %d 2333\n",i-1); puts("10"); for(int i=1;i<=10;i++) printf("79 0\n"); }
Data 3
Bellman-Ford vs Floyd
用data 1即可
Data 4
Floyd 艹 Dijkstra!限制157个数!
咦似乎文件名叫“ModifiedDijkstra”看起来非常厉害
看了一下代码似乎没什么问题
咦可以有负权边…
怎么搞呢?如图所示。
这里的更新顺序会变成0,2,4,3,4,1,2,4,3,4,这样再接上去几个就成了指数级啦
#include <iostream> #include <stdio.h> using namespace std; int main() { int bs=3*(1<<17),n=35; //可能要调一下 printf("%d\n",n); for(int i=0;i<n;i++) { if(i==n-1) {puts("0"); continue;} else if(i&1) printf("1 %d %d\n",i+1,-(bs/=2)); else printf("2 %d %d %d %d\n",i+1,-1,i+2,-2); } puts("10"); for(int i=1;i<=10;i++) printf("0 %d\n",n-1); }
时间: 2024-10-10 12:24:26