这两天打了一场手速练习赛,看博客,重点看的是hdu 3016,题意:有n块板子,一个人从最高的板子开始往下跳,每次只能从一个板子的左或者右端点往下跳,同一个高度只会有一块板子。问你到最下面,能获得的最大分数是多少。如果中间分数<0了,游戏直接结束,输出-1。 先将所有的木板按高度从小到大排个序,然后用线段树来计算从一块木板可以跳到哪一个木板,然后进行单点查询,然后将这段木板更新到这个区间并覆盖。依次求出所有木板间的关系,进行dp。然后是hdu 3308,题意:给定n个数。2种操作。 更新第a个数为b。 查询区间[a,b]的最长连续上升子序列。每一个结点要记录包含左端点的最长连续递增子长度,包含右端点的最长连续递增子长度,以及整个区间的最长递增子长度。区间合并比较麻烦,比如对左连续的话,由左孩子的左连续得来,也可能包括右孩子的左连续,这个时候要进行判断,左孩子的左连续是否是整个区间还有中间的结合是不是递增的。hdu 3433,题意:有n个工人,来做A,B两种任务,其中A任务总共有x件,B任务总共有y件,给定每个工人干一件A任务和B任务所花费的时间。求这些人同时开始干这些任务,最少多长时间能把A、B两种任务都完成。用dp[i][x]表示到第i个人,做了x个A任务,最多能做多少个B任务。果dp[i][x]>=y 就是可以的。然后不断迭代得到ans。hdu 2825题意:给 m 个单词构成的集合,统计所有长度为n的串中,包含至少k个单词的方案数。用dp[i][j][k]表示长度为i匹配到状态j 各个word出现的情况为k的方法数,用二进制判断每一位表示某个单词是否出现过,最开始的时候初始化使得num[i]储存的值是i中二进制下1的个数,即所包含的单词个数,这个i也就是dp的最后一维。
4月19日
最新推荐文章于 2022-04-19 12:04:50 发布