【BZOJ4953】lydsy七月月赛 F DP
【BZOJ4953】lydsy七月月赛 F
题解:设f[i][j]表示第i个强度取为j时的最小误差。那么每次转移时,我们只计算j'和j之间的像素点带来的误差,于是有:
$f[i][j]=min(f[i-1][k]+g(k..mid,k)+g(mid+1...j,j))|mid={k+j\over 2}$
其中,$g(a,b)=P_a*(a-b)^2\\=P_a*a*a-2*P_a*a*b+2*P_a*b*b$
于是维护P_a*a*a,P_a*a,P_a的前缀和即可。
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
typedef long long ll;
ll s0[300],s1[300],s2,f[300][300],ans;
int n,m;
int main()
{
scanf("%d%d",&n,&m);
int i,j,k,mid;
for(i=1;i<=n;i++) scanf("%d",&j),scanf("%lld",&s0[j]),s1[j]=j*s0[j],s2+=j*j*s0[j];
for(i=1;i<=255;i++) s0[i]+=s0[i-1],s1[i]+=s1[i-1];
memset(f,0x3f,sizeof(f));
ans=1ll<<60;
for(i=1;i<=m;i++)
{
if(i==1) for(j=0;j<=255;j++) f[1][j]=s0[j]*j*j-2*s1[j]*j;
else for(j=i-1;j<=255;j++)
{
for(k=i-2;k<j;k++)
{
mid=j+k>>1;
f[i][j]=min(f[i][j],f[i-1][k]+(s0[mid]-s0[k])*k*k+(s0[j]-s0[mid])*j*j-2*(s1[mid]-s1[k])*k-2*(s1[j]-s1[mid])*j);
}
}
if(i==m)
for(j=i-1;j<=255;j++) f[i][j]+=(s0[255]-s0[j])*j*j-2*(s1[255]-s1[j])*j,ans=min(ans,f[i][j]);
}
printf("%lld",ans+s2);
return 0;
}
【BZOJ4953】lydsy七月月赛 F DP的更多相关文章
- 【BZOJ4956】lydsy七月月赛 I 乱搞
[BZOJ4956]lydsy七月月赛 I 题面 题解:傻题,Floyd传递闭包即可~ #include <cstdio> #include <cstring> #includ ...
- 【BZOJ4952】lydsy七月月赛 E 二分答案
[BZOJ4952]lydsy七月月赛 E 题面 题解:傻题...二分答案即可,精度有坑. #include <cstdio> #include <cstring> #incl ...
- 【BZOJ4950】lydsy七月月赛 C 二分图最大匹配
[BZOJ4950]lydsy七月月赛 C 题面 题解:比较直接的想法就是:每行,每列的最大值都留下,剩下的格子都变成1.但是如果一个格子既是行的最大值又是列的最大值,那么我们只需要把它留下即可.这就 ...
- 【BZOJ5073】[Lydsy十月月赛]小A的咒语 DP(错解)
[BZOJ5073][Lydsy十月月赛]小A的咒语 题解:沙茶DP,完全不用后缀数组. 用f[i][j]表示用了A的前i个字符,用了j段,最远能匹配到哪.因为显然我们能匹配到的地方越远越好,所以我们 ...
- 【BZOJ5072】[Lydsy十月月赛]小A的树 树形DP
[BZOJ5072][Lydsy十月月赛]小A的树 题解:考虑我们从一个联通块中替换掉一个点,导致黑点数量的变化最多为1.所以我们考虑维护对于所有的x,y的最大值和最小值是多少.如果询问的y在最大值和 ...
- 【BZOJ4919】[Lydsy六月月赛]大根堆 线段树合并
[BZOJ4919][Lydsy六月月赛]大根堆 Description 给定一棵n个节点的有根树,编号依次为1到n,其中1号点为根节点.每个点有一个权值v_i. 你需要将这棵树转化成一个大根堆.确切 ...
- 【BZOJ4922】[Lydsy六月月赛]Karp-de-Chant Number 贪心+动态规划
[BZOJ4922][Lydsy六月月赛]Karp-de-Chant Number Description 卡常数被称为计算机算法竞赛之中最神奇的一类数字,主要特点集中于令人捉摸不透,有时候会让水平很 ...
- 【BZOJ5074】[Lydsy十月月赛]小B的数字 数学
[BZOJ5074][Lydsy十月月赛]小B的数字 题解:题目是问你ai*bi>=sum,bi>=0这个不等式组有没有解.因为a<=10,容易想到取ai的lcm,然后变成lcm*b ...
- 【BZOJ5071】[Lydsy十月月赛]小A的数字 发现性质
[BZOJ5071][Lydsy十月月赛]小A的数字 题解:一般遇到这种奇奇怪怪的操作,常用的套路是将原序列差分一下,或者求个前缀和什么的.本题就是直接对原序列求前缀和,然后发现一次操作相当于交换两个 ...
随机推荐
- PAT 甲级1002 A+B for Polynomials (25)
1002. A+B for Polynomials (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue T ...
- HDU1071 The area
Ignatius bought a land last week, but he didn't know the area of the land because the land is enclos ...
- comet realization with ajax&php
1.prepare front-end code, meta content-type cannot be ignored! as to the xhr, status should be 3 < ...
- 转 Python爬虫入门二之爬虫基础了解
静觅 » Python爬虫入门二之爬虫基础了解 2.浏览网页的过程 在用户浏览网页的过程中,我们可能会看到许多好看的图片,比如 http://image.baidu.com/ ,我们会看到几张的图片以 ...
- HDU 3068 Manacher
题目链接:http://hdu.hustoj.com/showproblem.php?pid=3068 今天学习一下马拉车算法,虽然mg讲过,但是没有系统去学. 算法学习:参考博客 马拉车模板题. # ...
- vsCode 开发微信小程序插件
用 vsCode 开发微信小程序可以配置以下插件,让开发更美好: 1. vscode weapp api 2. vscode wxml 3. vscode-wechat 4. Easy WXLESS ...
- (1)hello world
操作系统安装SDK https://www.microsoft.com/net/download/windows 选择对应的操作系统 wget -q https://packages.micr ...
- (5)Unity3d GUI
- 洛谷—— P2880 [USACO07JAN]平衡的阵容Balanced Lineup
https://www.luogu.org/problemnew/show/P2880 题目背景 题目描述: 每天,农夫 John 的N(1 <= N <= 50,000)头牛总是按同一序 ...
- 洛谷—— P2895 [USACO08FEB]流星雨Meteor Shower
P2895 [USACO08FEB]流星雨Meteor Shower 题目描述 Bessie hears that an extraordinary meteor shower is coming; ...