摘要:1. 题目描述公司里有$n, n \in [1, 200]$个人,他们间的关系构成树状结构。除老板外,每个员工都有唯一一个直属上司,要求从中选择尽量多的人,但是不能同时选择员工和他的直属上司,问最多能选多少人,以及可行解是否是唯一的?2. 基本思路这显然又是一个树形DP的题目,经典模型——树的最大独
阅读全文
摘要:1. 题目描述某树形网络由$n, n \in [1, 10^4]$台计算机组成。现从中选择一些计算机作为服务器,使得每当普通计算机恰好与一台服务器连接(并且不超过一台)。求需要指定服务器的最少数量2. 基本思路这显然是一个求最优解的问题,并且该网络拓扑结构为树形。因此,考虑树形DP。关键是考虑有哪些
阅读全文
摘要:1. 题目描述有两个长度为$10^5$的字符串,其中一个仅包含小写字母,称之为源串;另一个包含?与*通配符的模式串,并且通配符的个数不超过10。求模式串是否能匹配源串?2. 基本思路这其实是一道RegularExpression-Matching问题。一般化的解法就是构建自动机,然后去在这个自动机上
阅读全文
摘要:1. 题目描述有长度为$n \in [1, 10^5]$的序列,表示一个打乱的循环排列,即每当$[1 \cdots n]$中的数字全部出现后,再重新产生一个随机的覆盖$[1 \cdots n]$的序列。给定的序列并不是一个完整的循环序列,而是一个子序列。求完整的循环序列共有多少可能?2. 基本思路这
阅读全文
摘要:1. 题目描述给定$n \times m, n、m \in [1, 10]$的方格,求不同形状的$[1 \cdots 10]$联通块的个数?所谓不同形状,表示不能通过平移、旋转、镜像实现相同的形状。2. 基本思路显然数据不大, 那么可以打表。首先考虑,这个表怎么打?不妨使用$cn$表示连通块数。那么
阅读全文
摘要:1. 题目描述由$n \times n, n \in [1, 5]$的正方形由$2 \times n \times (n+1)$根木棍组成,可能已经有些木棍被破坏,求至少还需破坏多少木根,可以使得不存在任何正方形?2. 基本思路这是一道非常有趣的题目,可以使用IDA*解也可以用DLX解。可以试试5
阅读全文
摘要:1. 题目描述$m \times n$的迷宫(最大为$16 \times 16$)包含最多3个点,这些点可以同时向相邻方向移动或保持停止,使用小写字母表示起始位置,使用大写字母表示中止位置。求最少经过多少时间,这些点可以从起始位置移动到对应的终止位置。2. 基本思路这是很经典的路径搜索问题,一般采用
阅读全文
摘要:1. 题目描述给定一个正整数$n$,求经过多少次乘法或除法运算可以从$x$得到$x^n$?中间结果也是可以复用的。2. 基本思路实际结果其实非常小,肯定不会超过20。因此,可以采用IDA*算法。注意几个剪枝优化就好了:(1)每次新计算的值必须从未出现过;(2)每次新计算的值进行还可以执行的运算次数的
阅读全文
摘要:1. 简介clrscode3e是《算法导论(第三版)》使用的伪代码的宏包,clrs其实表示的是Cormen、Leiserson、Rivest和Stein。它有个更老的版本clrscode,这个宏包CTEX自带。《算法导论》中的伪代码风格与clrscode3e的风格完全一致,要比lstlistings
阅读全文
摘要:1. 题目描述给定一个$2 \times 2 \times 2$的魔方,当某个面上的4个小块颜色均相同时,称这个面为complete。求对这个魔方进行$n \in [1,7]$次旋转(沿某个面顺时针或者逆时针)的过程中,求complete的面总和的最大值。魔方及索引如下图所示:2. 基本思路及代码解
阅读全文
摘要:1. 题目描述给定一个长为$n \in [1, 4000]$的字符串,求其中长度最长的子串,并且该子串在原串中出现至少$m$次,并求最右起始位置。2. 基本思路两种方法:二分+后缀数组,或者二分+哈希。(1) 二分+后缀数组对子串长度进行二分,若不同后缀的公共前缀超过这个值,则对计数值累加。若计数值
阅读全文
摘要:1. 题目描述挺简单的一道题,给定$n$个大整数,求出现最多的次数。2. 基本思路这题是可以使用哈希做,ELFHash等哈希都可以过。3. 代码
阅读全文
摘要:1. 题目描述$A[i]$表示二级制表示的$i$的数字之和。求$1 \le i < j \le n$并且$A[i]>A[j]$的$(i,j)$的总对数。2. 基本思路$n \le 10^300$。$n$这么大,显然只能用数位DP来做,我们可以预先处理一下将$n$表示成二进制,然后再进行DP。$dp[
阅读全文
摘要:1. Watchmen1.1 题目描述给$n$个点,求曼哈顿距离等于欧式距离的点对数。1.2 基本思路由$|x_i-x_j|+|y_i-yj| = \sqrt{(x_i-x_j)^2+(y_i-yj)^2}$可以推出$x_i=x_j$或者$y_i=y_j$。所以变得超级简单了,排序后对两种情况分别累
阅读全文
摘要:1. 题目描述有$k$个伞兵跳伞,有$m$个汇点。当伞兵着陆后,需要走向离他最近的汇点。如何选择这$m$个结点,可以使得士兵最终行走的距离的期望最小。求这个最小的期望。2. 基本思路假设已经选好了这$m$个汇点,这也就确定了每个士兵的可能着陆点需要继续行走的距离。因此,这个期望为\begin{ali
阅读全文
摘要:1. 题目描述一个人沿着一条长度为n个链行走,给出了每秒钟由i到j的概率($i,j \in [1,n]$)。求从1开始走到n个时间的期望。2. 基本思路显然是个DP。公式推导也相当容易。不妨设$dp[i], i \in [1,n]$表示由i到n的期望时间。\begin{align} dp[i] &=
阅读全文
摘要:1. 题目描述K沿着$0,1,2,\cdots,n-1,n-2,n-3,\cdots,1,$的循环节不断地访问$[0, n-1]$个时光结点。某时刻,时光机故障,这导致K必须持续访问时间结点。故障发生在结点x处,方向为d,在访问k个结点后时光机以概率$P_k%$的概率修复好,k不超过m。求当K最终访
阅读全文
摘要:1. 题目描述一个长度为n个队列,每次取队头的4个人玩儿游戏,每个人等概率赢得比赛。胜者任然处在队头,然而败者按照原顺序依次排在队尾。连续赢得m场比赛的玩家赢得最终胜利。求第k个人赢得最终胜利的概率。2. 基本思路显然是个概率DP,dp[i][j]表示第1个玩家已经连续赢得i局比赛时,第j个人赢得最
阅读全文
摘要:1. 题目描述长度为n的等待队列,tomato处于第m个,有如下四种可能:(1)激活失败,概率为$p_1$,队列中的顺序不变;(2)连接失败,概率为$p_2$,队头玩家重新排在队尾;(3)激活成功,概率为$p_3$,队头出队;(4)服务器down机,概率为$p_4$,队伍停止。问当服务器当机时,to
阅读全文
摘要:1. 题目描述有n个球,第i个球的伤害值为$2^i-1, i \in [1,n]$。有甲乙两个人,每次由甲选择n个球中的一个,用它以相同概率攻击自己或者乙,同时彻底消耗这个球。这样的攻击最多进行n次。一旦甲的伤害值高于乙,则甲输,否则甲胜。问甲胜的概率是多少。2. 基本思路还是一步步推导。令dp[k
阅读全文
摘要:1. 题目描述对于m面的骰子。有两种查询,查询0表示求最后n次摇骰子点数相同的期望;查询1表示最后n次摇骰子点数均不相同的期望。2. 基本思路由期望DP推导,求得最终表达式。(1) 查询0 不妨设$dp[k]$表示当前已经有k次相同而最终实现n次相同的期望。 \begin{align} dp[0]
阅读全文
摘要:1. 题目描述有n个点,求能覆盖这n个点的半径最小的圆的圆心及半径。2. 基本思路算法模板http://soft.cs.tsinghua.edu.cn/blog/?q=node/1066定义Di表示相对于P[1]和P[i]组成的最小覆盖圆,如果P[2..i-1]都在这个圆内,那么当前的圆心和半径即为
阅读全文