传送门 很妙的题 首先先考虑一个简化的问题,现在有一行格子让你填 你要么填一格 要么填两格 有的格子不让你填 问你填了 $a$ 个一格和填了 $b$ 个两格有多少种方案 那么显然先只考虑放两格的方案,这个可以简单 $dp$ 得到,设 $f[i][j]$ 表示前 $i$ 个格子放了 $j$ 个两格的方 ...
分类:
其他好文 时间:
2019-10-18 12:17:13
阅读次数:
71
#pragma GCC optimize(2) #include <bits/stdc++.h> #define ll long long using namespace std; const int N = 5e5+10; const int mod=20071027; const int sig... ...
分类:
其他好文 时间:
2019-10-16 13:19:47
阅读次数:
59
Hungry Canadian(简单dp) 具体见代码注释 ...
分类:
其他好文 时间:
2019-10-11 20:12:34
阅读次数:
68
遇到一个简单$dp$,觉得很棒在此写下题解 真的非常简单, jddxl 有一个长度$n$括号序列(只有$"()"$ ),给定其中长度为$m$一段,求满足括号匹配方案数 $n,m<=1e6$ $n-m<=4000$ 题解 性质:我们发现一个合法匹配序列左扩号时刻比右括号多(显然),最后左扩号数量等于右 ...
分类:
其他好文 时间:
2019-09-06 12:55:08
阅读次数:
66
"传送门" 题意: 现有$n$个数,每个数的值为$a_i$,现在可以把数划分为多段,每一段的代价为$(\sum_{k=i}^{j}c_i)^2+M$。 问怎么划分,代价最小。 思路: 考虑dp,那么dp式子很简单: $$ dp(i)=min\{dp(j)+(S_i S_j)^2+M\} $$ 注意这 ...
分类:
其他好文 时间:
2019-08-26 23:19:21
阅读次数:
191
原题 题目链接 题目分析 题意很明确,就是要维护单调递增的序列,最后看有多少种单调序列即可,设定一个dp数组,cnt表示数组大小,初始化为0,然后把所有木头从小到大排个序,当遍历到木头i时,如果dp数组里有比木头i还小的,就代替它,否则就dp[cnt++]=木头i,最后cnt就是答案. 代码 ...
分类:
其他好文 时间:
2019-08-25 17:39:57
阅读次数:
73
前几天的题先鸽了 T1 mine 简单$dp$,注意转移意义即可。 我的定义比较麻烦,可是参考我关注的其他大佬的博客。 定义$f_{i,j,k}$表示当前位置$i$,当前元素是$j$,上一个元素是$k$的方案数。i维可以滚起来。 没啥好说的,稍微麻烦点的就是$?$和$1$了,其他的就模拟转移就可以了 ...
分类:
其他好文 时间:
2019-08-16 22:54:46
阅读次数:
127
"题目传送门" 题意: 输入n,给出两组均为 n个数字的数组a和b,轮流从a和b数组中取出一个数字,要求严格按照当前所选数字的数组下标比上一个所选数字的数组下标更大,计算能够取出的数字加起来的总和最大能为多少。 测试样例1: 输入: 5 9 3 5 7 3 5 8 1 4 5 输出:29 提示:选择 ...
分类:
其他好文 时间:
2019-08-04 19:58:15
阅读次数:
72
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1087 分析:简单dp;dp[i] = max (dp[i], dp[j] + a[i]) ...
分类:
其他好文 时间:
2019-08-04 19:23:28
阅读次数:
79