Buy Low, Buy Lower
给出一个数列,求其中最长的下降子序列以及构成该长度的方法数。(需要使用高精度)
在数列末尾增加一个0
第一问,f[i]表示以a[i]为结尾的最长下降子序列的长度,则:
f[i]=max{f[j]}+1(j
Street Race
给出一张有向图,有源点和汇点,该图满足如下条件,称为“良好的跑道”:
每一个点都可以由源点到达;
任意一个点都可以到汇点;
汇点不通向任何点。
求:
(1)从源点出发到达汇点必须经过的点
(2)“中间路口”,即原图可以被该点分为两部分,两部分均为“良好的跑道”,且该点分别为这两部分的汇点和源点的点。
第一问实质上是在求有向图的割点,枚举每一个点,将该点删去后对原图进行广度优先搜索,若源点无法到达汇点,则为割点;
第二问,首先从源点出发进行深度优先搜索,对图中的点进行分层(类似于Dinic)。本问中点一定满足第一问的条件,因此枚举第一问中得到的点,从该点开始进行深度优先搜索,若能到达层数小于该点的点,则该点不符合条件;否则将其加入答案。
Letter Game
给出一些可以使用的字母及每个字母对应的分值,并给出一些词语,找出得分最高的词语或词对。
首先对可使用的字母统计每个字母的出现次数,然后在读入单词的过程中统计每个单词中每个字母的数量及该单词的得分,若该单词中某个字母的数量大于可用数量,则删除该单词。在剩下的单词中进行枚举,找出得分最高的单词或词对即可。