![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
吴俊达9812
这个作者很懒,什么都没留下…
展开
-
焦作网络赛K. Transport Ship
dp边界条件又错了,最开始没加dp[0][0] = 1。以后可以把dp想成一个二维数组,从第一行推到第n行。那么推导第一行的时候就需要第0行。这么想就不容易错了。坑点:dp边界条件#include<bits/stdc++.h>using namespace std;typedef long long LL;typedef long long lint;const l...原创 2019-06-24 14:12:56 · 112 阅读 · 0 评论 -
2018 徐州A Hard to prepare
定义:dp[ i ][ 0 ] 长度为 i ,首尾匹配的合法方案个数dp[ i ][ 1 ] 长度为 i,首尾不匹配的合法方案个数dp[ i ][ 2 ] 长度为 i,首尾相等的合法方案个数 = dp[ i-1 ][ 1 ]转移方程见代码坑点:m*m爆 int。取模意义下的减法需要加模数(尼玛错了n遍了。。。)#include <bits/stdc++.h>...原创 2019-06-27 23:06:20 · 228 阅读 · 0 评论 -
牛客多校第三场 Median
证明:每个点只能是他所能影响到的三个中位数之一(反证法)然后我们定义状态,可以定义 前两个个数的状态,也可以定义 当前一个数的状态。不过状态定义的复杂的话会方便转移。但有一个问题是状态多的话我们必须通过枚举状态,然后判断是否合法来进行转移。(类比于数位dp)边界条件的处理我们需要扩展出前面的状态,这样边界会比较好写。#include <bits/stdc++.h>...原创 2019-09-04 23:43:11 · 100 阅读 · 0 评论 -
icpc ecfinal 西安 I
题意:你有n次操作,每次操作有3种选择,1.造成A+ai点伤害;2.永久给D增加bi;3.永久给A增加ci。(每次操作前执行:A+=D)。问最后最多造成多少伤害。思路:动态规划很重要的一条性质是某一个状态都可以由同侧的状态推出。我们首先考虑时间从小到大的递推方法,我们有两个需要优化的值,一个是最大化当前的攻击输出,另一个是最大化A+B 的和。两个优化目标我们一般考虑将其中一个维度当做...原创 2019-10-04 17:47:13 · 360 阅读 · 0 评论