码迷,mamicode.com
首页 > Windows程序 > 详细

APIO2013 taskauthor

时间:2016-04-27 17:12:53      阅读:394      评论:0      收藏:0      [点我收藏+]

标签:

喜闻乐见的提答题,这道题还是蛮有趣的

数据结构题写得心塞,来一道提答意思意思

如果喜欢这类题的话还可以去做做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);
}

APIO2013 taskauthor

标签:

原文地址:http://www.cnblogs.com/zzqsblog/p/5439311.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!