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中,让在最 ...
随机推荐
- 【读书笔记】iOS-ARC-不要向已经释放的对象发送消息
一,在AppDelegate.m中写入如下代码: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOpti ...
- 安卓--shape简单使用
shape 先看下,系统自带的EditText和Button的外形 下面看加了shape后的效果 简单点讲,shape可以为组件加上背景边框,圆角之类的可以配合selector使用 shapeXXX. ...
- OC NSArray 数组
# OC NSArray 数组 NSArray常用方法 获取数组中第一位元素 array.firstObject 获取数组中最后一个元素 array.lastObject 获取数组中指定索引下标的元素 ...
- [转]android笔记--Intent和IntentFilter详解
Intent用于启动Activity, Service, 以及BroadcastReceiver三种组件, 同时还是组件之间通信的重要媒介. 使用Intent启动组件的优势1, Intent为组件的启 ...
- AEAI DP开发平台精要
1 背景概述 相信很多了解数通畅联软件的人对AEAI DP应用开发平台并不陌生,笔者在入职第一天就开始接触AEAI DP,使用AEAI DP开发过AEAI WM.AEAI CRM以及中国XXXX管理系 ...
- npm常用命令小结
目录(更新于2016.09.23): 1.认识和使用NPM 2.npm包安装模式 3.npm包管理(package的安装.卸载.升级.查看.搜索.发布,其他等) npm install [-g] 本地 ...
- Linux 系统中用户切换
1. Linux系统中用户切换的命令为su,语法为: su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]] 参 ...
- MongoDB ServerStatus返回信息
ServerStatus返回信息 ServerStatus返回mongodb中很多信息 http://docs.mongodb.org/manual/reference/command/serverS ...
- Mongodb源代码阅读笔记:Journal机制
Mongodb源代码阅读笔记:Journal机制 Mongodb源代码阅读笔记:Journal机制 涉及的文件 一些说明 PREPLOGBUFFER WRITETOJOURNAL WRITETODAT ...
- Sql Server之旅——第十四站 深入的探讨锁机制
上一篇我只是做了一个堆表让大家初步的认识到锁的痉挛状态,但是在现实世界上并没有这么简单的事情,起码我的表不会没有索引对吧,,,还 有就是我的表一定会有很多的连接过来,10:1的读写,很多码农可能都会遇 ...