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中,让在最 ...
随机推荐
- Condition的await-signal流程详解
转载请注明出处:http://blog.csdn.net/luonanqin 上一篇讲了ReentrantLock的lock-unlock流程,今天这篇讲讲Condition的await-signal ...
- 【CoreData】分页查询和模糊查询
在CoreData实际使用中,分页查询和模糊查询是必不可少的,接下来演示一下: 首先 // 1.创建模型文件 (相当于一个数据库里的表) // New File ———— CoreData ———— ...
- iOS 播放GIF动态图片!!!!!
////////////////////////////////////////////////////////////////////////////////////////// //// Vie ...
- ios 返回指定导航控制器
UINavigationController *navigationVC = self.navigationController; NSMutableArray *viewControllers = ...
- 在【Xamarin+Prism开发详解三:Visual studio 2017 RC初体验】中分享了Visual studio 2017RC的大致情况,同时也发现大家对新的Visual Studio很是感兴趣。于是发时间深入研究了一下Visual Studio 2017RC 是不是和微软Connect()://2016上说得一样神。
总共列出了12点,耐心点慢慢看! 1,添加了不少[代码样式]的设置项目. 通过合理的设置每个人都能写出优美的代码,而且团队项目也可以达到统一代码风格. this首选项:可以设置[字段,属性,方法,事件 ...
- JavaScript Patterns 6.7 Borrowing Methods
Scenario You want to use just the methods you like, without inheriting all the other methods that yo ...
- MYSQL数据回流
一般的网站应用中,总会有部分二次数据(处理过的原始数据)展现给前台,比如,拿购物网站来说,购买进口奶粉最多的用户群体:哪类产品消费增长趋势最旺盛:用户的消费历史归类等都是二次数据.由于这部分 ...
- Java堆、栈和常量池
摘录自 http://www.cnblogs.com/xiohao/p/4296088.html 1. 栈(stack)与堆(heap)都是Java用来在RAM中存放数据的地方.与C++不同,Java ...
- Visual Studio 2012中文旗舰版(序列号和下载地址)
序列号:YKCW6-BPFPF-BT8C9-7DCTH-QXGWC 链接: http://pan.baidu.com/s/1pLGhDjl 密码: 3udq
- Java Dom解析的三个实例
概述 Dom解析的文章已经烂大街了.在这里,只举三个场景下如何编码的例子: xml内有多个同名节点,获取这多个同名节点 已获取到某个节点,生成这个节点的xml描述 修改节点某属性的值 详细的讲解看官请 ...