博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2014ACM-ICPC广州站题解(摘自闭幕式)
阅读量:6756 次
发布时间:2019-06-26

本文共 1097 字,大约阅读时间需要 3 分钟。

第39届ACM-ICPC亚洲区广州站题解

Ltysky摘抄自闭幕式题目分析

Problem A

满足px+qy=c的点(x,y)在一条直线上,而c的值由直线的截距确定,所以最大化c,就要在糖果(x,y)点集的凸包上根据斜率确定一个顶点,所以本题需要动态凸包算法,但是动态凸包只能处理加点,要删点的话需要结合陈丹琦分治。

Problem B

坑题,栅栏可以套另一个,这种情况下面积是大的。

Problem C

将字符串建trie图,然后满足条件的字符串分为以下两类:

  1. 它是一个前缀,同时也是一个后缀。这样的话这个前缀对应节点的fail指针应该指向非根节点
  2. 它不是一个前缀,这是用一个简单的动态规划算法,用dp[i][j]表示后面前缀长度是i,然后j表示从根节点开始沿trie图走完两个前缀之后所在节点,i>=1

首先枚举所有前缀p,如果p在trie树中没有儿子c,则dp[1][p->c]+=1,其中p->c表示从p开始走字母c所到达的节点。

之后,对于dp[i][j],枚举一个字母c,如果j->c所在节点在trie树中的深度不小于i+1,则dp[i+1][j->c]+=dp[i][j]。j->c的深度表示后一个前缀最长可以为多长,所以自然应该不小于i+1。

最后累加所有的dp[i][j]即为答案。

Problem D

由Apollonius圆定理,区域的边界是一个圆。求圆与简单多边形的面积交即可。(模板题)

Problem G

(P/Q)^2的范围可以用两个有理数确定,也就是P/Q的范围可以用两个二次根式确定。求两个二次根式连分数展开序列,在序列的公共前缀后面进行讨论确定P/Q。

Problem H

首先,如果不上高速,可以覆盖的区间显然是一个圆,然后,如果可以上高速公路,肯定沿着一条与高度公路称定角的线段上高速,再沿着同样的角下来是最优的。所以,可以简单地得出沿着高速公路走能覆盖的部分是一个菱形,求圆和菱形的面积并即可。

Problem J

考虑直径的中点(如果直径长度是偶数,可以假设在正中间增加了一个点,它的度数固定为2),则它有两棵(直径为偶数)或三棵(直径为奇数)二叉子树,其中应有两棵的高度为d/2,然后转化为有限制的有根数奇数的问题。首先预处理H_i表示高度为i的不同构的有根二叉树的数目。如有两棵子树,答案为C(H[d/2],2),否则为C(H[d/2],2)*(H[1]+H[2]+…+H[d/2-1])+C(H[d/2],3)

Problem K

水题

 

转载于:https://www.cnblogs.com/litengyao/p/4121731.html

你可能感兴趣的文章
geeksforgeeks-Array-Rotate and delete
查看>>
Shell if else
查看>>
iOS之 block,代替代理作为回调函数
查看>>
Linux信号(signal) 机制分析
查看>>
【iOS开发-59】LOL案例:单组tabView、alertView样式、实现监听,以及用reloadData数据刷新...
查看>>
STL_算法_Heap算法(堆排)(精)
查看>>
聊聊前端工程师的职业规划(转)
查看>>
Javascript高级程序设计 -- 第三章 -- 总结
查看>>
AWS 学习之路(技术专业人员Training and Certification)架构解决方案1
查看>>
打字游戏
查看>>
熟悉并了解uml的使用(一)
查看>>
Java中++,--,前缀后缀表达值的不同,与^的值计算
查看>>
week06 codelab01 react-router 去官网学习
查看>>
nginx的基础应用
查看>>
用Zend_xmlrpc构建webservice服务器
查看>>
python中的类继承之super
查看>>
SublimeText3按ctrl+b执行python无反应
查看>>
linux之各个文件夹作用
查看>>
posix多线程有感--线程高级编程(条件变量属性)
查看>>
linux内核mem_cgroup浅析
查看>>