HDU 3045 (斜率优化)
来源:互联网 发布:unity3d 像素画风 编辑:程序博客网 时间:2024/05/17 23:30
题目链接:点击这里
题意:n个数,分成若干块,每一块的数量不能小于k,每一块的花费是所有的数减去块中最小值的和。每一块和的最小值。
显然要排序以后分块,设fi 表示(1,i)分块后的最小和,那么有fi=min{fj+sumi−sumj−aj+1∗(i−j)∥∥i−j≥k}
假设j 比k 更优(k≤j) fj+sumi−sumj−aj+1×(i−j)≤fk+sumi−sumk−ak+1×(i−k)
整理一下就是斜率式子了fj+j×aj+1−sumj−fk−k×ak+1+sumkaj+1−ak+1≤i
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <cmath>#include <queue>using namespace std;#define maxn 400005long long dp[maxn];int n, k, que[maxn];long long a[maxn], sum[maxn];long long scan () { char ch=' '; while(ch<'0'||ch>'9')ch=getchar(); long long x=0; while(ch<='9'&&ch>='0')x=x*10+ch-'0',ch=getchar(); return x;}long long up (int i, int j) { return dp[i]+1LL*i*a[i+1]-sum[i] - (dp[j]+1LL*j*a[j+1]-sum[j]);}long long down (int i, int j) { return a[i+1]-a[j+1];}int main () { while (scanf ("%d%d", &n, &k) == 2) { sum[0] = 0; for (int i = 1; i <= n; i++) a[i] = scan ();; sort (a+1, a+1+n); for (int i = 1; i <= n; i++) sum[i] = sum[i-1]+a[i]; dp[0] = 0; for (int i = 1; i < k*2 && i <= n; i++) { dp[i] = sum[i] - 1LL*i*a[1]; } int L = 0, R = 0; que[R++] = 0; que[R++] = k; for (int i = 2*k; i <= n; i++) { while (L+1 < R && up (que[L+1], que[L]) <= 1LL*i*down (que[L+1], que[L])) L++; int j = que[L]; dp[i] = dp[j] + sum[i]-sum[j]-a[j+1]*(i-j); while (L+1 < R && up (i-k+1, que[R-1])*down (que[R-1], que[R-2]) <= up (que[R-1], que[R-2])*down (i-k+1, que[R-1])) R--; que[R++] = i-k+1; } printf ("%lld\n", dp[n]); } return 0;}
0 0
- HDU 3045 (斜率优化)
- HDU 3045 Picnic Cows【dp斜率优化】
- HDU 3045 Picnic Cows 斜率优化DP
- HDU 3045 Picnic Cows (斜率优化DP)
- HDU - 3045 Picnic Cows(斜率优化)
- hdu 3045 Picnic Cows(斜率优化dp)
- hdu 3045 Picnic Cows 斜率优化dp
- HDU-3045 Picnic Cows 【DP+斜率优化】
- HDU 3045 DP斜率优化 解题报告
- HDU-3045 Picnic Cows 斜率优化DP
- Hdu-2993斜率优化
- hdu 3507(斜率优化)
- HDU 3507 斜率优化
- HDU 2829 (斜率优化)
- HDU 3480 (斜率优化)
- 【斜率优化dp】HDU 2993
- hdu 4258(斜率优化DP)
- hdu 3507 斜率优化dp
- 211. Add and Search Word - Data structure design
- bzoj2720: [Violet 5]列队春游
- C++独孤九剑第八式——平沙落雁(运行时浅剖析)
- LoaderManager访问SD里面的数据库
- C语言反转数组(reverse函数)
- HDU 3045 (斜率优化)
- CTO、技术总监、首席架构师的区别
- NULL指针
- 计算机的总线结构
- iOS 时间/ 日期选择器 UIDatePicker
- 浅析CSS——元素重叠及position定位的z-index顺序
- 设置页码
- 社会化营销宣传材料发布周期及内容安排
- 212. Word Search II