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

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

如果喜欢这类题的话还可以去做做uoj83

这题是给出了两个问题,一个最短路,一个无向图染色问题。

Data 1

Floyd VS Dijkstra

嗯107个整数,我们只要给一个n=101,下面一坨0 Floyd就狗带了

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
printf("101\n");
for(int i=;i<=;i++) puts("");
puts("");
printf("%d %d\n",,);
}

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(""); int mm=;
for(int i=;i<;i++)
{
int mx=min(mm,),mxx=mx; mm-=mx;
if(i!=) ++mx;
printf("%d",mx);
if(i!=) printf(" %d 2333",i-);
for(int j=;j<=mxx;j++) printf(" %d 2333",i);
putchar();
}
puts("");
for(int i=;i<=;i++) printf("99 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=*(<<),n=; //可能要调一下
printf("%d\n",n);
for(int i=;i<n;i++)
{
if(i==n-) {puts(""); continue;}
else if(i&) printf("1 %d %d\n",i+,-(bs/=));
else printf("2 %d %d %d %d\n",i+,-,i+,-);
}
puts("");
for(int i=;i<=;i++) printf("0 %d\n",n-);
}

UPD:这道题的改进版出现在IPSC2015 D,大家可以试做一下。

Data 5

Dijkstra 艹 Bellman-Ford

需要把Data 2稍加优化(人肉二分)

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int N=; int cnt=;
printf("%d\n",N), cnt++; int mm=;
for(int i=;i<N;i++)
{
int mx=min(mm,),mxx=mx; mm-=mx;
if(i!=) ++mx;
printf("%d",mx), cnt++;
if(i!=) printf(" %d 2333",i-), cnt+=;
for(int j=;j<=mxx;j++) printf(" %d 2333",i), cnt+=;
putchar();
}
puts(""), ++cnt;
for(int i=;i<=;i++) printf("%d 0\n",N-), cnt+=;
cerr<<"cnt="<<cnt<<"\n";
}

Data 6

Bellman-Ford 艹 Dijkstra

用Data 4即可。

Data 7

这回是一个平面图染色问题。

我们发现Gamble1是不会T的,现在我们就要让RecursiveBacktracking T掉。

我随机生成了个树,随机加了一坨边,就T了。

#include <iostream>
#include <stdio.h>
#include <map>
using namespace std;
map<int,bool> ms[];
int main()
{
int n=,m=;
printf("%d %d\n",n,m);
for(int i=;i<n;i++)
{
int p=rand()%i;
printf("%d %d\n",i,p), --m;
ms[i][p]=ms[p][i];
}
while(m)
{
int a=rand()%n,b=rand()%n;
if(ms[a][b]||a==b) continue;
printf("%d %d\n",a,b);
ms[a][b]=ms[b][a]=;
--m;
}
}

Data 8

要让RecursiveBacktracking A掉而且数据范围有下限

随便搞啦

这份代码生成粗来类似这样

随手加了一点重边什么的

#include <iostream>
#include <stdio.h>
#include <map>
using namespace std;
map<int,bool> ms[];
#define BS 4
int main()
{
int n=/BS*BS+,m=;
printf("%d %d\n",n,m);
for(;;)
{
for(int i=;i<n;i++)
{
if(i==n-) continue;
if(i%BS==)
{
for(int j=;j<BS;j++)
{
--m;
printf("%d %d\n",i,i+j);
if(!m) exit();
}
}
else
{
--m;
printf("%d %d\n",i,(i/BS+)*BS);
if(!m) exit();
}
}
}
}

感觉这道题答出的还行,大概做了2h的样子

APIO2013 tasksauthor的更多相关文章

  1. UOJ #109「APIO2013」TASKSAUTHOR

    貌似是最入门的题答题 刚好我就是入门选手 就这样吧 UOJ #109 题意 太热了不讲了 $ Solution$ 第一个点:$ 105$个数字卡掉$ Floyd$ 直接$101$个点无出边一次询问就好 ...

  2. 【BZOJ】【3205】【APIO2013】机器人robot

    斯坦纳树 好神啊……Orz zyf && PoPoQQQ 为啥跟斯坦纳树扯上关系了?我想是因为每个点(robot)都沿着树边汇到根的时候就全部合起来了吧= =这个好像和裸的斯坦纳树不太 ...

  3. [APIO2013]

    A.机器人 题目大意:给定一个n*m的地图,有一些障碍物和k个机器人,你每次可以选择一个机器人往任意一个方向推,遇到转向器会转向,两个编号相邻的机器人可以合并,求最少推多少次可以全部合并. $n,m\ ...

  4. bzoj3205 [Apio2013]机器人

    3205: [Apio2013]机器人 Time Limit: 15 Sec  Memory Limit: 128 MBSubmit: 953  Solved: 227[Submit][Status] ...

  5. [BZOJ3206][APIO2013]道路费用(最小生成树)

    3206: [Apio2013]道路费用 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 568  Solved: 266[Submit][Status ...

  6. [BZOJ3205][APIO2013]Robot(斯坦纳树)

    3205: [Apio2013]机器人 Time Limit: 15 Sec  Memory Limit: 128 MBSubmit: 1007  Solved: 240[Submit][Status ...

  7. [Bzoj3206][Apio2013]道路费用(kruscal)(缩点)

    3206: [Apio2013]道路费用 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 536  Solved: 252[Submit][Status ...

  8. [Bzoj3205][Apio2013]机器人(斯坦纳树)(bfs)

    3205: [Apio2013]机器人 Time Limit: 15 Sec  Memory Limit: 128 MBSubmit: 977  Solved: 230[Submit][Status] ...

  9. BZOJ3206 [Apio2013]道路费用

    首先我们强制要求几条待定价的边在MST中,建出MST 我们发现这个MST中原来的边是一定要被选上的,所以可以把点缩起来,搞成一棵只有$K$个点的树 然后$2^K$枚举每条边在不在最终的MST中,让在最 ...

随机推荐

  1. Android 手机卫士--打包生成apk维护到服务器

    项目打包生成apk过程: 1.生成签名文件,并且指定所在位置 2.使用生成的签名文件,给工程打包生成一个apk 本文地址:http://www.cnblogs.com/wuyudong/p/59033 ...

  2. iOS 内存问题

    malloc: *** error for object 0x15f8a3558: incorrect checksum for freed object - object was probably ...

  3. net2.0对于递归变量的处理方式不同引发的递归问题

    同样的代码,用NET2.0执行产生的效果与其它框架使用的不同,导致报错. 认真查找原因后发现该程序的编写人员隐式的使用了一个公共变量,使之在递归过程中不断的被改写,使得1次递归后就破坏了原来的循环体, ...

  4. LCS(Longest Common Subsequence 最长公共子序列)

    最长公共子序列 英文缩写为LCS(Longest Common Subsequence).其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S 称为已 ...

  5. Java集合分组

    public class Data { private Long id ; private Long courseId ; private String content ; public Long g ...

  6. HTML(六)——表单验证、正则表达式、事件

    1.表单验证<form></form> (1).非空验证(去空格) (2).对比验证(跟一个值对比) (3).范围验证(根据一个范围进行判断) (4).固定格式验证:电话号码, ...

  7. Netty 异步的、事件驱动的网络应用程序框架和工具

    Netty是由JBOSS提供的一个Java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序. 项目地址:https://githu ...

  8. (企业面试部分)超详细思路讲解SQL语句的查询实现,及数据的创建。

    企业面试部分详细的SQL问题,思路讲解 第一步:创建数据库表,及插入数据信息 --Student(S#,Sname,Sage,Ssex) 学生表 CREATE TABLE student( sno ) ...

  9. 安装了SQL2005再安装SQL 2008R2,提示此计算机上安装了 Microsoft Visual Studio 2008 的早期版本和检查是否安装了 SQL Server 2005 Express 工具的解决方案

    工作电脑上安装了SQL 2005, 但是客户电脑上安装的是SQL 2008R2,有时候连接他们的库调试没法连接,很不方便.然后又安装了个SQL2008 R2,期间遇到这两个问题,网上搜索了一下收到了解 ...

  10. SQL 笔记

    --查询某一列在哪个表里 SELECT name , object_id , type , type_desc FROM sys.objects WHERE object_id IN ( SELECT ...