FJoi2017 1月20日模拟赛 直线斯坦纳树(暴力+最小生成树+骗分+人工构造+随机乱搞)
【题目描述】
给定二维平面上n个整点,求该图的一个直线斯坦纳树,使得树的边长度总和尽量小。
直线斯坦纳树:使所有给定的点连通的树,所有边必须平行于坐标轴,允许在给定点外增加额外的中间节点。
如下图所示为两种直线斯坦纳树的生成方案,蓝色点为给定的点,红色点为中间节点。
【输入格式】
第一行一个整数n,表示点数。
以下n行,每行两个整数表示点的x,y坐标。
【输出格式】
第一行一个整数m,表示中间节点的个数。
必须满足m
<= 10 * n
以下m行,每行2个整数表示中间节点的坐标。
以下n+m-1行,每行2个整数u,v表示编号为u和v的两个节点之间有边直接相连,边的权值为两点的曼哈顿距离,即|x[u]
– x[v]| + |y[u] – y[v]|
输入数据给定的点的编号为1..n,选手输出的中间节点的编号为n+1..n+m
【样例输入】
4
-1
0
0
-1
1
0
0
1
【样例输出】
1
0
0
1
5
2
5
3
5
4
5
【格式说明】
选手可使用test.exe对数据进行测试
在命令行下使用“test
x”即可测试rsmtx.in和rsmtx.out
(注:x必须是一个字符,即“test
1234”等价于“test
1”)
使用“test
@”即可测试样例
测试结束前1小时发布gen.exe,选手将该程序与所有输入输出文件(rsmt0..9
.in /
.out)放在同一目录,运行后生成rsmt-upload.cpp,测试结束时上交rsmt-upload.cpp而非rsmt0..9.out
若选手没有完成某个测试点,可不必生成该测试点的输出文件,gen.exe会自动跳过该测试点。
【得分说明】
若选手的解合法,则该数据点至少得1分
设选手的答案为ans,标程的答案为std。
若ans
>= std,则选手得分为10
* (std/ans)^w,其中w是该测试点的得分系数。
若ans
< std,则所有选手中的最优解作为std,该选手得12分,其他选手的得分为12
* (std/ans)^w
Solution
第一次做提交答案型的题目耶
在线下,我们暴力将所有点O(n*n)枚举,把可能的中间点全数添加(中间点即任意两点的坐标拉成相同的,连个边),跑个prim最小生成树算法就行了。听说直接跑可以ac。我比较弱,人工手模两个点拿20分而已。
标解:前四个数据点,有 n <= 8,使用人工构造、随机化搜索算法、状态压缩动态
规划等均可求出最优解。
第 5 个至第 8 个数据点,所有的点排布在两行上,即点的 y 坐标只有 2 种取
值。故我们可以根据 x 坐标的顺序从左至右进行状态压缩 DP,状态为当前列上
的两个点的连通情况和是否有需要加入斯坦纳树的点,共四种情况:两个点属于
一个连通块;两个点不属于同一个连通块,此时有 3 种情况:两个块内都存在需
要加入斯坦纳树的点,其中某个块存在需要加入斯坦纳树的点(因为有 2 个连通
块,故这种情况有 2 种)。依据这种状态设计进行状压 DP 即可,值得注意的是本
题需要输出方案,故还需保存 DP 过程中的转移路径,并编写程序输出。
最后 2 个数据点为纯随机数据点,适合模拟退火等随机化搜索算法,或一些贪心+构造的策略,是开放性的问题,也可以参考《FLUTE: Fast Lookup Table
Based Rectilinear Steiner Minimal Tree Algorithm for VLSI Design》等文
献提供的方法。
FJoi2017 1月20日模拟赛 直线斯坦纳树(暴力+最小生成树+骗分+人工构造+随机乱搞)的更多相关文章
- FJoi2017 1月20日模拟赛 恐狼后卫(口糊动规)
Problem 1 恐狼后卫(wolf.cpp/c/pas) [题目描述] 著名卡牌游戏<石炉传说>中有一张随从牌:恐狼后卫.恐狼后卫的能力是使得相邻随从的攻击力提高. 现在有n张恐狼后卫 ...
- FJoi2017 1月20日模拟赛 交错和(等差数列+rmq)
[题目描述] 无限循环数字串S由长度为n的循环节s构成.设s为12345(n=5),则数字串S为123451234512345… 设Si为S的第i位数字,在上面的例子中,S1=1,S2=2,S6=1. ...
- FJoi2017 1月21日模拟赛 comparison(平衡树+thita重构)
题目大意: 经黄学长指出,此题原题出自2014湖北省队互测 没有人的算术 规定集合由二元组(A,B)构成,A.B同时也是两个这样的集合,即A.B本身也是二元组 规定二元组S为严格最小集合,S=(S,S ...
- 2018年5月20日--西安icpc邀请赛打铁总结
2018年5月20日--西安icpc邀请赛打铁总结 事后诸葛亮 大致回顾一下比赛,29号的热身赛和30号的正式赛. 热身赛总共三道题,一个小时,没有AC一道题目. A题是一个几何题目,审题时犯了一个 ...
- 中国式商业智能报表ActiveReports免费公开课,10月20日开讲
ActiveReports公开课全方位报表解决方案,满足商业报表五大需求 [开课时间]10月20日[主讲老师]葡萄城报表产品经理[开课形式]网络在线公开课[活动费用]前50名免费 适合人群:报表开发人 ...
- 2016年12月20日 星期二 --出埃及记 Exodus 21:15
2016年12月20日 星期二 --出埃及记 Exodus 21:15 "Anyone who attacks his father or his mother must be put to ...
- 2016年11月20日 星期日 --出埃及记 Exodus 20:11
2016年11月20日 星期日 --出埃及记 Exodus 20:11 For in six days the LORD made the heavens and the earth, the sea ...
- 2016年10月20日 星期四 --出埃及记 Exodus 19:4
2016年10月20日 星期四 --出埃及记 Exodus 19:4 `You yourselves have seen what I did to Egypt, and how I carried ...
- 【公告】CSDN个人空间将于2014年4月20日全新改版上线
尊敬的用户: 你们好! CSDN个人空间将在2014年4月20日全新改版上线! CSDN个人空间是2008年8月推出的服务,致力于给广大用户提供在线技术分享和资料 ...
随机推荐
- 【废弃】【WIP】JavaScript Object
创建: 2017/11/03 废弃: 2019/02/19 重构此篇.原文归入废弃 增加[废弃中]标签与总体任务 结束: 2019/03/03 完成废弃, 删除[废弃中]标签, 添加[废弃]标签 T ...
- bzoj 1718: [Usaco2006 Jan] Redundant Paths 分离的路径【tarjan】
首先来分析一下,这是一张无向图,要求没有两条路联通的点对个数 有两条路连通,无向图,也就是说,问题转化为不在一个点双连通分量里的点对个数 tarjan即可,和求scc还不太一样-- #include& ...
- 运行Tomcat 遇到的问题以及解决总结
本文持续更新…… 情况一:在eclipse中启动tomcat提示 1. Server Tomcat v8.5 Server at localhost failed to start . 解决方案 方法 ...
- 【知识总结】多项式全家桶(三)(任意模数NTT)
经过两个月的咕咕,"多项式全家桶" 系列终于迎来了第三期--(雾) 上一篇:[知识总结]多项式全家桶(二)(ln和exp) 先膜拜(伏地膜)大恐龙的博客:任意模数 NTT (在页面 ...
- OpenCV2.4.9 + VS2012 + win10 配置
Step1 下载opencv 2.4.9 pack Step2 解压到本地 我解压路径是: C:\OPENCV Step3 添加环境变量: 这里虽然把X64下的VC11(VC11对应VS2012的C+ ...
- Storm概念学习系列之storm的可靠性
这个概念,对于理解storm很有必要. 1.worker进程死掉 worker是真实存在的.可以jps查看. 正是因为有了storm的可靠性,所以storm会重新启动一个新的worker进程. 2.s ...
- JSON基础 JS操作JSON总结
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...
- centos 7 中防火墙的关闭问题
新安装的centos 7 发现有些程序端口是关闭的,想到了防火墙和selinux selinx 好关闭 /etc/sysconfig/selinux 中 追加 SELINUX=disabled 防火 ...
- Android RxJava 2.0中backpressure(背压)概念的理解
英文原文:https://github.com/ReactiveX/RxJava/wiki/Backpressure Backpressure(背压.反压力) 在rxjava中会经常遇到一种情况就是被 ...
- httponlycookie
cookie cookie是目前标识用户身份一项非常流行的技术:设置httponly的cookie客户端是不能通过js来修改的:你以为这样就万事大吉,没有办法伪造了吗? 背景介绍 假设网站A通过设置h ...