数轴上n<=500个站可以买东西,每个站位置Xi,库存Fi,价格Ci,运东西价格是当前运载重量的平方乘距离,求买K<=10000个东西到达点E的最小代价。

f[i,j]--到第i站不买第i站东西的最大值,转移时决策的是买上一个站的东西,f[i,j]=f(i-1,k)+(j-k)*C(i-1)+j*j*(Xi-Xi-1)。

这个拆一下就可以单调队列了。

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 #include<algorithm>
 5 #include<queue>
 6 //#include<iostream>
 7 using namespace std;
 8
 9 int T,E,n;
10 #define maxn 511
11 struct Point{int x,f,c;}a[maxn];
12 bool cmp(const Point &a,const Point &b) {return a.x<b.x;}
13 #define LL long long
14 #define maxm 10011
15 LL f[maxm];const LL inf=1e15;
16 LL que[maxm],head,tail,id[maxm];
17 int main()
18 {
19     scanf("%d%d%d",&T,&E,&n);
20     for (int i=1;i<=n;i++)
21         scanf("%d%d%d",&a[i].x,&a[i].f,&a[i].c);
22     sort(a+1,a+1+n,cmp);a[++n].x=E;
23     for (int i=1;i<=T;i++) f[i]=inf;f[0]=0;
24     for (int i=2;i<=n;i++)
25     {
26         head=tail=0;
27         for (int j=0;j<=T;j++)
28         {
29             LL tmp=f[j]-1ll*a[i-1].c*j;
30             while (head<tail && que[tail-1]>=tmp) tail--;
31             while (head<tail && id[head]<j-a[i-1].f) head++;
32             que[tail]=tmp;id[tail++]=j;
33             f[j]=que[head]+1ll*a[i-1].c*j+1ll*j*j*(a[i].x-a[i-1].x);
34         }
35     }
36     printf("%lld\n",f[T]);
37     return 0;
38 }

View Code

转载于:https://www.cnblogs.com/Blue233333/p/7574814.html

BZOJ2059: [Usaco2010 Nov]Buying Feed 购买饲料相关推荐

  1. bzoj2059[Usaco2010 Nov]Buying Feed 购买饲料*

    bzoj2059[Usaco2010 Nov]Buying Feed 购买饲料 题意: 约翰开车来到镇上,他要带K吨饲料回家.如果他的车上有X吨饲料,每公里就要花费X^2元,开车D公里就需要D* X^ ...

  2. [DP/单调队列]BZOJ 2059 [Usaco2010 Nov]Buying Feed 购买饲料

    首先我想吐槽的是题目并没有表明数据范围... 这个题目 DP方程并不难表示. dp[i][j]表示前i个地点携带了j个货物的最小花费 dp[i][j] = dp[i-1][k] + (j-k) * c ...

  3. bzoj2020[Usaco2010 Jan]Buying Feed, II*

    bzoj2020[Usaco2010 Jan]Buying Feed, II 题意: FJ开车去买食物,如果他的车上有X份食物.每走一里就花费X元. 城市总共E里路,FJ从0开始走,到E结束(不能往回 ...

  4. bzoj 1618: [Usaco2008 Nov]Buying Hay 购买干草(完全背包)

    1618: [Usaco2008 Nov]Buying Hay 购买干草 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1196  Solved: 62 ...

  5. 洛谷 P2616 [USACO10JAN]购买饲料II Buying Feed, II

    P2616 [USACO10JAN]购买饲料II Buying Feed, II 题目描述 Farmer John needs to travel to town to pick up K (1 &l ...

  6. Buying Feed, 2010 Nov (单调队列优化DP)

    约翰开车回家,又准备顺路买点饲料了(咦?为啥要说"又"字?)回家的路程一共有 E 公里, 这一路上会经过 K 家商店,第 i 家店里有 Fi 吨饲料,售价为每吨 Ci 元.约翰打算 ...

  7. 洛谷 P4544 [USACO10NOV]Buying Feed G)(单调队列优化DP)

    题目链接:P4544 [USACO10NOV]Buying Feed G 建议做这题前先做下这题P1886 滑动窗口 /[模板]单调队列 我们可以用dp[i][j]表示当前走到前i个点,已经买了j吨饲 ...

  8. NYOJ 248 BUYING FEED (贪心)

    BUYING FEED 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 Farmer John needs to travel to town to pick up K ...

  9. bzoj 1676: [Usaco2005 Feb]Feed Accounting 饲料计算(差分)

    1676: [Usaco2005 Feb]Feed Accounting 饲料计算 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 252  Solved ...

最新文章

  1. PythonGUI开发:59行代码开发小型商店添加系统
  2. 解决 /usr/share/git-cola/bin/ssh-askpass: 3: exec: wish: not found
  3. 讨论.NET Core 配置对GC 工作模式与内存的影响
  4. PyTorch 1.6、TensorFlow 2.3、Pandas 1.1 同日发布!都有哪些新特性?
  5. 机器学习基础(二十八) —— 数据规格化
  6. 记单表数据较多的数据库查询实例及测试结果
  7. 分享一个非常强大且好用的绘图控件QCustomPlot
  8. Immervision推出由计算机视觉社区开发的首台具有智能视觉的仿人机器人JOYCE
  9. 支付宝授权登陆php,支付宝app登录授权的infoStr授权登录流程
  10. JBoot 全网上最好用的 API 文档工具
  11. 如何使用select()函数
  12. Java面向对象程序设计综合练习2(编程题)
  13. ClickOnce介绍
  14. deepin升级到20.2,开机显示deepin LOGO之后屏幕黑屏解决办法
  15. NOI / 1.7编程基础之字符串题目排名状态提问15:整理药名
  16. 卖罐头(冬季每日一题 32)
  17. ubuntu删除虚拟网卡
  18. CSRF Token has been associated to this client
  19. 一篇关于PCA的深度好文
  20. 第三十二章 投光物和多光源总结

热门文章

  1. Java过滤器详细文档,简介,实例,应用
  2. mongodb从2.6迁移到3.0过程
  3. Android数据库升级、降级、创建(onCreate() onUpgrade() onDowngrade())的注意点
  4. 泥鳅般的const(一个小Demo彻底搞清楚)
  5. 纯数学教程 Page 325 例LXVIII (15) 调和级数发散
  6. db2 命令选项解释
  7. JavaScript实现图片旋转构成3D圆环代码
  8. 为什么不用小驼峰也能查到数据库数据_为什么不用驼峰命名创建表名和字段?...
  9. 大数据与大量数据处理_我们如何处理和使用如此大量的数据?
  10. onenote组织知识体系_如何提升组织的安全专业知识