CDOJ 1288 旅游的Final柱 构造题
旅游的Final柱
题目连接:
http://acm.uestc.edu.cn/#/problem/show/1288
Description
柱神要去打Final啦(≧▽≦)/啦啦啦
柱神来到了异国他乡的普吉岛,柱神决定好好游览一番。
普吉岛的景点编号为11到NN,景点之间由双向的道路连接着,所有的道路的长度都是11。
柱神希望访问所有的景点,但是又不想耽搁太长的时间,所以柱神决定每天访问一个景点。
为了好好陶冶情操,柱神并不在路上花费太多的时间,所以柱神不会在连续的两天访问两个最短距离超过KK的景点。
由于柱神忙着打Final,所以旅行的方案就交个你了。
Input
第一行为两个整数N,KN,K,其中4<=N<=5004<=N<=500,3<=K<=N−13<=K<=N−1。
接下来NN行NN列,第ii行jj列的值aij=1aij=1或者aij=0aij=0。
如果aij=1aij=1,表示从景点ii到景点jj有一条长为11的道路,如果aij=0aij=0,则表示从ii到jj没有直接的道路。
图保证联通。
注意哦:数据以字符串的形式给出,只包含0和1,且aii=0
Output
输出一个11到NN的排列,第ii个数表示第ii天访问的景点编号。输出任意一组解即可。
Sample Input
4 3
0100
1010
0101
0010
Sample Output
1 3 2 4
Hint
题意
题解:
这道题给了你一个无向图,以及一个k,让你输出一个旅游方案,使得这个旅游方案恰好旅行每个点一次,且相邻的两个点之间的距离小于k。
这道题怎么做呢?
话音刚落,小郭同学发言了:“我觉得这个k的数据范围是500,我感觉瞎dfs一波或者bfs一波,再加点点随机化就好了。”
然后小郭同学非常开心的就去写了几发随机化,然后TLE,WA……
暴力显然是过不了了,那应该怎么做呢?
这是一道构造题,应该想想一些聪慧的办法。
这道题最困难的情况是什么呢?
答:他给你的那个无向图就是一颗树,且k就等于3。如果这个能够解决,那么显然原题目也就能解决啦。
这个怎么做呢?想啊想啊想啊。
想到了!
我们随便抓一个点,当做这个树的根,然后把这个点染成白色。然后剩下的点,与白点相连的点就染成黑色,与黑色相连的点就染成白色。
现在这棵树上的点,就只有黑点和白点了。
然后我们这样做:
定义函数dfs(x):
如果现在这个点是白点,那就输出这个点。
走向下一个与这个点相邻的点v,进行函数dfs(v)
如果现在这个点是黑点,那就输出这个点。
这样做之后,我们可以显然的发现,连续输出的两个点,如果都是黑色或者白色的话,距离等于2。连续输出的两个点是不同的颜色的话,距离为1或者3。
距离为3的情况是:
白4
|
黑3
|
白1--黑2
这样会输出1,2,4,3。
啦啦啦,显然这种构造方式,可以使得任意输出的连续两个点的距离小于等于3啦。
然后这道题就解决了~
代码
#include<bits/stdc++.h>
using namespace std;
const int maxn = 505;
string s;
vector<int>E[maxn];
int vis[maxn];
void dfs(int x,int flag)
{
vis[x]=1;
if(flag==0)printf("%d ",x);
for(int i=0;i<E[x].size();i++)
{
if(vis[E[x][i]])continue;
dfs(E[x][i],!flag);
}
if(flag==1)printf("%d ",x);
}
int main()
{
int n,k;
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++)
{
cin>>s;
for(int j=0;j<s.size();j++)
if(s[j]=='1')E[i].push_back(j+1);
}
dfs(1,0);
}
CDOJ 1288 旅游的Final柱 构造题的更多相关文章
- cf251.2.C (构造题的技巧)
C. Devu and Partitioning of the Array time limit per test 1 second memory limit per test 256 megabyt ...
- hdu4671 Backup Plan ——构造题
link:http://acm.hdu.edu.cn/showproblem.php?pid=4671 其实是不难的那种构造题,先排第一列,第二列从后往前选. #include <iostrea ...
- Educational Codeforces Round 7 D. Optimal Number Permutation 构造题
D. Optimal Number Permutation 题目连接: http://www.codeforces.com/contest/622/problem/D Description You ...
- Codeforces 482 - Diverse Permutation 构造题
这是一道蛮基础的构造题. - k +(k - 1) -(k - 2) 1 + k , 1 , k , 2, ....... ...
- BZOJ 3097: Hash Killer I【构造题,思维题】
3097: Hash Killer I Time Limit: 5 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 963 Solved: 36 ...
- CF1110E Magic Stones(构造题)
这场CF怎么这么多构造题…… 题目链接:CF原网 洛谷 题目大意:给定两个长度为 $n$ 的序列 $c$ 和 $t$.每次我们可以对 $c_i(2\le i<n)$ 进行一次操作,也就是把 $c ...
- CodeForces 297C Splitting the Uniqueness (脑补构造题)
题意 Split a unique array into two almost unique arrays. unique arrays指数组各个数均不相同,almost unique arrays指 ...
- HDU 5355 Cake (WA后AC代码,具体解析,构造题)
题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=5355 题面: Cake Time Limit: 2000/1000 MS (Java/Others) ...
- 【构造题 贪心】cf1041E. Tree Reconstruction
比赛时候还是太慢了……要是能做快点就能上分了 Monocarp has drawn a tree (an undirected connected acyclic graph) and then ha ...
随机推荐
- TinyOS在ubuntu 14.04下安装教程
1:打开/etc/apt/sources.list 文件,在文件最底部添加安装源: deb http://tinyos.stanford.edu/tinyos/dists/ubuntu lucid m ...
- struts入门
1.概念
- i春秋第二届春秋欢乐赛RSA256writeup
i春秋第二届春秋欢乐赛writeup 下载之后进行解压 发现四个文件 0x01看到题目是RSA的 又看到public.key 所以直接用kali linux的openssl 0x02可以看到e就是E ...
- Android的休眠与唤醒
Android 休眠(suspend),在一个打过android补丁的内核中,state_store()函数会走另外一条路,会进入到request_suspend_state()中,这个文件在earl ...
- 010 JVM类加载
转自http://www.importnew.com/23742.html 前言 我们知道我们写的程序经过编译后成为了.class文件,.class文件中描述了类的各种信息,最终都需要加载到虚拟机之后 ...
- 大数据系列之kafka-java实现
Java源码GitBub地址: https://github.com/fzmeng/kafka-demo 关于kafka安装步骤可见文章 http://www.cnblogs.com/cnmeng ...
- 《深入理解Java虚拟机》笔记--第三章 、垃圾收集器与内存分配策略
1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言. Java的垃圾收集(Garbage Collection)主要关注堆和方法区的内存回收. 在GC堆进行回收前,第一件 ...
- PDO和mysqli对比
PHP中,如何选择PDO和mysqli呢?本文做个简单的比较 1)总的比较 PDO MYSQLI 数据库支持 12种不同的数据库支持 支持MYSQL API OOP OOP和过程 命名参数 支持 ...
- HDU 1079 Calendar Game(博弈找规律)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1079 题目大意:给你一个日期(包含年月日),这里我表示成year,month,day,两人轮流操作,每 ...
- 常用对称加密算法(DES/AES)类(PHP)
看注释,啥也不说了,欢迎各种跨平台测试! /** * 常用对称加密算法类 * 支持密钥:64/128/256 bit(字节长度8/16/32) * 支持算法:DES/AES(根据密钥长度自动匹配使用: ...