寒假集训专题三 贪心与动态规划
贪心与动态规划
斐林试剂捏
这个作者很懒,什么都没留下…
展开
-
【贪心与动态规划】训练题L - Priest John‘s Busiest Day
题意N对情侣结婚,在婚礼上需要举行一个占据婚礼一半时间且不能被打断的仪式,要求判断神父是否可以完成所有情侣的仪式思路首先对每一对情侣排序按照时间顺序排序,再做判断。首先第一场婚礼必然是从头开始举行仪式,如果开始的时间点加上这场仪式的时间,再加上下一场仪式的比下一场婚礼结束的时间来的早那么则可行,需要注意的是,如果开始时间点加这场仪式的时间小于下一场婚礼开始的时间的时候,下一场仪式开始的时间应该是下一场婚礼开始的时间。代码#include<map>#include<原创 2022-02-09 16:05:03 · 215 阅读 · 0 评论 -
【贪心与动态规划】训练题H - Palindromic Subsequence
题意要求输出一个字符串的最大回文子序列,在此基础上要求字典序最前思路使用dp[j][i]表示从j到i的回文串的长度,ans[j][i]表示从j到i符合题目要求的字符串正向遍历这个串,如果新加入的字符(位置为i)正好与前面位置为j相等,则可以构成回文,dp[j][i]=dp[j+1][i-1]+2,此时ans[j][i]为s[j]+中间的串+s[i]如果不相等的话,那么不构成回文串,那么ans就不能把左右两个字母都加进去,只能放置一个,就看[j+1][i]和[j][i-1]的长度(dp原创 2022-02-09 14:11:50 · 80 阅读 · 0 评论 -
【贪心与动态规划】训练题E - Partitioning by Palindromes
题意(越来越顺手了 开心子)给定一个字符串,按照回文串分割,要求计算出最少的份数思路首先划分的要求是回文串,可以用二维数组ok[i][j]来表示,从i到j是否为回文串。dp【i】数组则表示,从0到i最少可分割成多少份。如果从s[j+1]到s[i]都为回文串,那么dp[i]=dp[j]+1。代码#include<map>#include<cmath>#include<stack>#include<queue>#inclu原创 2022-02-08 21:13:37 · 180 阅读 · 0 评论 -
【贪心与动态规划】训练题G - Children‘s Game
题意给出若干数,要求输出他们拼接成的最大的数思路这题是出乎意料的简单()主要是,不能直接根据字典序大小排列,而需要考虑的是两个串相加的大小,也就有了底下的cmp函数代码#include<map>#include<cmath>#include<stack>#include<queue>#include<cstdio>#include<vector>#include<string>#inc原创 2022-02-08 18:41:03 · 191 阅读 · 0 评论 -
【贪心与动态规划】训练题C- Jin Ge Jin Qu hao
题意给出几首歌的时间和所剩余的时间,加上劲歌金曲(为什么不是情歌王(bushi)),要求先满足唱尽量多的歌,其次尽量晚的离开KTV思路这首歌要么唱,要不然就得唱完,相当于01背包问题,除此之外,除了唱的歌要多以外,还要求唱的时间尽量长。如果用song[]来存每首歌的时间,不难分析出dp的方程我们用dp[j]来表示还剩j秒的时候,可以唱的最大的歌曲数。由于要达到最优解,那么必然是剩下最后一秒的时候点上劲歌金曲,所以要从t-1开始遍历因为各种小问题WA真的太搞心态了。。。代码#原创 2022-02-08 18:14:50 · 353 阅读 · 0 评论 -
【贪心与动态规划】训练题B - Watering Grass
题意一个矩形草地,一排洒水机,求可以覆盖这个草地最少需要打开几个洒水机思路由于洒水机的洒水的洒水范围是圆形,我们需要计算的,是洒水范围与草地相交的弦长l(通过勾股定理可以算出);那么洒水机的有效范围可以用圆心位置+-l来表示。通过比较每一次洒水机的最右端与下一个洒水机的最左端来判断哪些洒水机需要打开。注意,如果第一个洒水机的最左端大于0的话,说明必然无法覆盖,直接输出-1;最后一个洒水机的最右端如果没有超过草地的话,同样无法完全覆盖,输出-1.但是不知道为什么TLE了两次....原创 2022-02-08 17:14:49 · 79 阅读 · 0 评论 -
【贪心与动态规划】训练题A - Smallest Sub-Array
题意:求连续最短的子序列,是其包括【1,K】思路:一开始无脑上去暴力然后果不其然的TLE了()本题可以使用滑动窗口算法来解决原创 2022-02-07 19:51:46 · 67 阅读 · 0 评论