APIO2013 tasksauthor
喜闻乐见的提答题,这道题还是蛮有趣的
数据结构题写得心塞,来一道提答意思意思
如果喜欢这类题的话还可以去做做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的更多相关文章
- UOJ #109「APIO2013」TASKSAUTHOR
貌似是最入门的题答题 刚好我就是入门选手 就这样吧 UOJ #109 题意 太热了不讲了 $ Solution$ 第一个点:$ 105$个数字卡掉$ Floyd$ 直接$101$个点无出边一次询问就好 ...
- 【BZOJ】【3205】【APIO2013】机器人robot
斯坦纳树 好神啊……Orz zyf && PoPoQQQ 为啥跟斯坦纳树扯上关系了?我想是因为每个点(robot)都沿着树边汇到根的时候就全部合起来了吧= =这个好像和裸的斯坦纳树不太 ...
- [APIO2013]
A.机器人 题目大意:给定一个n*m的地图,有一些障碍物和k个机器人,你每次可以选择一个机器人往任意一个方向推,遇到转向器会转向,两个编号相邻的机器人可以合并,求最少推多少次可以全部合并. $n,m\ ...
- bzoj3205 [Apio2013]机器人
3205: [Apio2013]机器人 Time Limit: 15 Sec Memory Limit: 128 MBSubmit: 953 Solved: 227[Submit][Status] ...
- [BZOJ3206][APIO2013]道路费用(最小生成树)
3206: [Apio2013]道路费用 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 568 Solved: 266[Submit][Status ...
- [BZOJ3205][APIO2013]Robot(斯坦纳树)
3205: [Apio2013]机器人 Time Limit: 15 Sec Memory Limit: 128 MBSubmit: 1007 Solved: 240[Submit][Status ...
- [Bzoj3206][Apio2013]道路费用(kruscal)(缩点)
3206: [Apio2013]道路费用 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 536 Solved: 252[Submit][Status ...
- [Bzoj3205][Apio2013]机器人(斯坦纳树)(bfs)
3205: [Apio2013]机器人 Time Limit: 15 Sec Memory Limit: 128 MBSubmit: 977 Solved: 230[Submit][Status] ...
- BZOJ3206 [Apio2013]道路费用
首先我们强制要求几条待定价的边在MST中,建出MST 我们发现这个MST中原来的边是一定要被选上的,所以可以把点缩起来,搞成一棵只有$K$个点的树 然后$2^K$枚举每条边在不在最终的MST中,让在最 ...
随机推荐
- 设置 Xcode 自动生成代码片段
一.什么是代码片段 当在Xcode中输入dowhile并回车后,Xcode会出现下图所示的提示代码: 这就是代码片段,目的是使程序员以最快的速度输入常用的代码片段,提高编程效率.该功能是从Xcode4 ...
- TimeUnit 使用
TimeUnit是java.util.concurrent包下面的一个类,表示给定单元粒度的时间段 主要作用 时间颗粒度转换 延时 常用的颗粒度 TimeUnit.DAYS //天 TimeUnit. ...
- #一周五# VS2015 CTP6, TFS2015 CTP1更新,老衣的开发工具汇总,2015 MVP 社区巡讲
又到周五,这一周博主我工作效率极高,每天更新博客一篇,<快速创建网站>系列已经进程大半了,希望这个系列能够对大家有所帮助.今天周五了,博主要休息一下,就给大家唠叨一下这段时间都发生了什么. ...
- 1、HTML学习 - IT软件人员学习系列文章
本文做为<IT软件人员学习系列文章>的第一篇,将从最基本的开始进行描述,了解的人完全可以跳过本文(后面会介绍一些工具). 今天讲讲Web开发中最基础的内容:HTML(超文本标记语言).HT ...
- 【译】Java中的可变参数
译文链接 http://www.programcreek.com/2014/01/java-varargs-examples/ 什么是Java可变参数 可变参数是Java 1.5引入的一个特性,它允许 ...
- 【JSP】JSP基础学习记录(三)—— JSP的9个内置对象
本节说一下JSP中的9个内置对象.这9个内置对象都是Servlet API接口的实例,只是JSP规范对他们进行了默认初始化(由JSP页面对应Servlet的_jspService()方法来创建这些实例 ...
- 编写BinIoDemo.java的Java应用程序,程序完成的功能是:完成1.doc文件的复制,复制以后的文件的名称为自己的学号姓名.doc。
package zuoye; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; ...
- Android getevent
详细用法如下: 源码复制打印? Usage: getevent [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-d] [-p] [-i] [-l] [-q] ...
- android QQ消息左滑动删除实例(优化版SwipeListViewEX)
仿 QQ消息左滑动删除item消息实例 源代码参考:http://blog.csdn.net/gaolei1201/article/details/42677951 自己作了一些调整,全部代码下载地址 ...
- Linux vim(4)
vim相对于vi做了很多的提升: -VIM支持多集撤销 -VIM可以跨平台运行 —VIM支持语法高亮 -VIM支持图形界面 vim三大模式: command mode vi进入时的默认模式 esc进入 ...