【luoguP4544】[USACO10NOV]购买饲料Buying Feed
2024-08-29 23:10:29
首先把商店按坐标排序
\(dp_{i,j}\)表示前i个商店买了j吨饲料并运到终点的花费,二进制拆分优化转移
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#define int long long
using namespace std;
const int N=10010;
int n,E,K,dp[N];
struct Data{
int x,f,c;
} a[N];
inline bool cmp(Data p,Data q){
return p.x<q.x;
}
signed main()
{
scanf("%lld%lld%lld",&K,&E,&n);
for(int i=1;i<=n;++i)
scanf("%lld%lld%lld",&a[i].x,&a[i].f,&a[i].c);
sort(a+1,a+1+n,cmp);
memset(dp,0x3f,sizeof(dp));
dp[0]=0;
for(int i=1;i<=n;++i){
int sum=0;
for(int k=1;sum+k<=a[i].f;k<<=1){
sum+=k;
for(int j=K;j>=k;--j)
dp[j]=min(dp[j],dp[j-k]+a[i].c*k+(j*j-(j-k)*(j-k))*(E-a[i].x));
}
int k=a[i].f-sum;
for(int j=K;j>=k;--j)
dp[j]=min(dp[j],dp[j-k]+a[i].c*k+(j*j-(j-k)*(j-k))*(E-a[i].x));
}
printf("%lld\n",dp[K]);
return 0;
}
最新文章
- 类模板的static成员
- 【周年版】Cnblogs for Android
- 使用UEditor 的时候,ajax注意使用同步的方法
- mongodb备忘
- phpeclipse常用快捷键
- Scrapy源码学习(二)
- SQL Server的三种物理连接之Hash Join(三)
- 解决VirtualBox下安装虚拟机(Ubuntu)出错(不能为虚拟电脑Ubuntu打开一个新的任务)的有关问题
- EL表达式的简单实用
- mybatis choose标签的使用
- SQL Server创建Job, 实现执行相同脚本而产生不同作业计划的探究
- Python:Day26 socket
- Java实现简单计算器、抽票程序
- PM九步法
- spring cloud(一)带你进入分布式
- 【Codeforces 1120C】Compress String
- 《精通Python网络爬虫》
- wx小程序自定义组件与页面之间参数传递
- Matlab练习——rpy2tr函数与自己实现的ZYX欧拉角的结果不同的问题
- kafka生产消费原理笔记