摘要: 题目 传送门 思路 对于一个队伍而言,他不可能选择跳过当前操作,即在每一个操作值后,都有一个英雄不能被选择 我们一定会在前m大力量的英雄中进行选择 所以我们设$dp[i]$表示状态为i的最大差值 只需要考虑下一个操作即可 代码 #include<iostream> #include<algorith 阅读全文
posted @ 2020-08-09 16:24 loney_s 阅读(111) 评论(0) 推荐(0)
摘要: 题目 传送门 思路 想到DP状态的定义应该不难 设$dp[i][j]$为前i列,已经确定了最大值的状态为j 注意我们并不需要知道每一行的最大值具体是什么 预处理一个数组$temp[i][j]$表示第i行,如果选的数为j的状态,所能到达的和的最大值 用$temp$就可以转移$dp$了 注意转移的时候要 阅读全文
posted @ 2020-08-09 16:09 loney_s 阅读(101) 评论(0) 推荐(0)
摘要: 题目 传送门 思路 看到这道题,应该下意识的会设$dp[i]$最优方案能构成i 但是转移就很麻烦,主要是要考虑优先级的问题 这里我们人为的将其分成3个优先级,这里的优先级主要是为了考虑括号和!的问题 设$f,g,h$三种函数 其中f和!,()同级,g和&同级,h和|同级 对于f,只需要考虑h加上括号 阅读全文
posted @ 2020-08-09 16:02 loney_s 阅读(160) 评论(0) 推荐(0)
摘要: 题目 传送门 思路 首先有一个性质,如果我们已经确定了哪些人作为队员,那么其余的观众一定是贪心地从大到小的去选 首先将人按他们在观众上能提供的贡献进行排序 设$dp[i][j]$为前i个人,排球队员的状态为j 再有一个性质,如果我们设j中为cnt个1, 如果i>cnt+k,那么第i个人一定不会被选为 阅读全文
posted @ 2020-08-09 15:45 loney_s 阅读(103) 评论(0) 推荐(0)
摘要: 题目 传送门 思路 比较显然的一点,这道题对于一个方案,所有出现的数字的最小出现次数是有单调性的 考虑二分出所有出现数字的最小出现次数 设$dp[i][j]$表示前i个数,已经达到目标状态的数的状态为j 因为题目中要求数是连续的 所以我们只需要考虑接下来的一段全部是哪一个数字即可,用这一点进行转移 阅读全文
posted @ 2020-08-09 15:34 loney_s 阅读(173) 评论(0) 推荐(0)
摘要: 题目 传送门 思路 对于所有的变化,我们发现最多只有4*4 考虑$dp[i][j]$表示前i个数,i,i-1,i-2,i-3的状态为j的最小方案数 对于转移而言,其实我们只需要将所有的操作矩阵的左上角保证在i-3行即可 感觉这道题更像一个暴力 代码 #include<iostream> #inclu 阅读全文
posted @ 2020-08-09 15:30 loney_s 阅读(102) 评论(0) 推荐(0)
摘要: 题目 传送门 思路 经过打表可以发现,出现的最大值最大只能为20, 我们设$dp[i][j]$表示最后一刀切在i和i+1之间,已经有的状态为j 转移的话暴力枚举接下来的一个区间即可 考虑到要舍去第一刀前面的内容,所以对于所有的$dp[i][0]$都要赋上1的初值 最后的答案即为$\sum_\sum_ 阅读全文
posted @ 2020-08-09 15:26 loney_s 阅读(110) 评论(0) 推荐(0)
摘要: 题目 传送门 思路 首先我们考虑如果只有$x$和$.$该如何去做 设$dp[i][j]$表示前i列,第i列的状态为j,前i-1列均被填满的方案总数 先考虑横着放 对于$dp[i][j]$这个状态,那么必须先将其中的0填满,再先外转移,同时要保证骨牌是横着放对$dp[i+1][j']$是合法的 再考虑 阅读全文
posted @ 2020-08-09 15:07 loney_s 阅读(157) 评论(0) 推荐(0)