CCF压缩编码和玲珑杯1066 - Buy Candy(平行四边形优化)
来源:互联网 发布:数据正态分布统计方法 编辑:程序博客网 时间:2024/06/09 05:42
玲珑杯1066 - Buy Candy(传送门)
题解
就是个简单的石子合并,一般的石子合并问题我们用
dp[i][j] = min{dp[i][k]+dp[k+1][j]+w[i][j]}
我们用S[i][j]保存当前让dp[i][j]最优的k值,接着我们需要记住的就是,这个k值一定在S[i][j-1]到S[i+1][j]之间,不要问为什么,记住,如果有时间可以自己去了解里面的缘由
如此这道题目就可以用平行四边形优化了
代码
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long long LL;const int MAXN = 1e3 + 5;const LL INF = (1LL << 60);int n, m;LL B[MAXN], A[MAXN];LL dp[MAXN][MAXN], S[MAXN][MAXN];LL sum[MAXN];LL f(LL x) { LL ret = 0; LL tmp = 1; for(int i = 1; i <= m + 1; i ++) { ret += A[i] * tmp; tmp *= x; } return ret;}int main() { int _; scanf("%d", &_); while(_ --) { scanf("%d", &n); for(int i = 1; i <= n; i ++) { scanf("%lld", &B[i]); } scanf("%d", &m); for(int i = 1; i <= m + 1; i ++) { scanf("%lld", &A[i]); } sum[0] = 0; for(int i = 1; i <= n; i ++) { sum[i] = sum[i - 1] + B[i]; } for(int i = 1; i <= n; i ++) { dp[i][i] = 0; S[i][i] = i; } for(int len = 1; len < n; len ++) { for(int i = 1; i + len <= n; i ++) { int end = i + len; LL tmp = INF; int mink = i; //k在S[i][end-1]和S[i+1][end]之间 for(int k = S[i][end - 1]; k <= S[i + 1][end]; k ++) { if(dp[i][k] + dp[k + 1][end] + f(sum[end] - sum[i - 1]) < tmp) { tmp = dp[i][k] + dp[k + 1][end] + f(sum[end] - sum[i - 1]); mink = k; } } dp[i][end] = tmp; S[i][end] = mink; } } printf("%lld\n", dp[1][n]); } return 0;}
CCF压缩编码(传送门)
题解
首先要知道huffman编码是怎么来的,然后就是要保证有序,所以合并从huffman的合并最小的两个变成了合并相邻两个让其总和最小又是石子合并问题
代码和上面的没多大区别,可以说更加简单了
1 0
- CCF压缩编码和玲珑杯1066 - Buy Candy(平行四边形优化)
- 石子合并,四边形不等式优化(Buy Candy,玲珑杯 Round#6 A lonlife 1066)
- ccf 201612-4 压缩编码 石子合并问题(DP+平行四边形优化)
- “玲珑杯”ACM比赛 Round #21-A- 西方制度 (区间DP+平行四边形优化)
- [ifrog 1066 - Buy Candy] 四边形优化的石子合并
- CCF 压缩编码
- CCF CSP 压缩编码
- ccf-压缩编码
- ccf 压缩编码
- CCF 压缩编码
- ccf认证压缩编码
- 四边形优化DP CCF 201612-04权压缩编码
- Huffman编码-石子问题+平行四边形优化
- CCF 201612-4 压缩编码
- ccf 201612-4压缩编码
- ccf 201612-4 压缩编码
- 第九次CCF 压缩编码
- 201612-4 压缩编码 ccf
- 关于分页插件pagination的应用及遇到的问题(用ajax请求数据进行拼接后分页显示)
- AE删除要素
- 招商软文如何写:推广诱人的广告——文芳阁传媒有话说
- GBDT 深入理解
- 一个斐波那契数列题 HDU 2041
- CCF压缩编码和玲珑杯1066 - Buy Candy(平行四边形优化)
- 基于同音字的验证码
- socket.Io demo
- 设计模式-java实现
- JavaScript Math
- java常用工具类分享
- IntelliJ idea插件开发环境配置
- 很好的CNN学习资料
- (十三)函数指针