传送门

题意

在一条直线上有n个教室,现在要设置糖果店,使得最后成本最小,满足以下两个条件:

1.若该点为糖果店,费用为cost[i];

2.若不是,则为loc[i]-最近的糖果店的loc

分析

dp方程不好想,我们观察一下,如果在第i个点设置最后一个糖果店,那么它将影响到它之前的糖果店,那么第i个点的费用必然由前i-1个的位置上费用最小的糖果店转移过来,这里糖果店费用计算为\(cost[i]+\sum_{j=i+1}^n(dis[j]-dis[i])\),那么转移方程为$$dp[i]=dp[j]+cost[i]-(n-i+1)*(dis[i]-dis[j])$$

最后取dp[1~n]其中最小的即可

trick

1.注意爆int

2.注意dp{1]的计算

3.注意位置的排序

代码

#include <bits/stdc++.h>
using namespace std; #define ll long long
#define F(i,a,b) for(int i=a;i<=b;++i)
#define R(i,a,b) for(int i=a;i<b;++i)
#define mem(a,b) memset(a,b,sizeof(a))
#pragma comment(linker, "/STACK:102400000,102400000")
inline void read(int &x){x=0; char ch=getchar();while(ch<'0') ch=getchar();while(ch>='0'){x=x*10+ch-48; ch=getchar();}} int n;
struct node
{
ll loc,cost;
bool operator<(const node &p)const
{
return loc<p.loc;
}
}a[3030];
ll dp[3030]; int main()
{
while(scanf("%d",&n)!=EOF)
{
mem(dp,0);
for(int i=1;i<=n;++i) scanf("%lld %lld",&a[i].loc,&a[i].cost);
sort(a+1,a+1+n);
dp[1]=a[1].cost;
F(i,2,n) dp[1]+=a[i].loc-a[1].loc;
F(i,2,n)
{
dp[i]=1e18;
F(j,1,i-1)
{
dp[i]=min(dp[i],a[i].cost+dp[j]-(n-i+1)*(a[i].loc-a[j].loc));
}
}
//F(i,1,n) printf("%lld\n",dp[i]);
ll ans=2e9;
F(i,1,n)
{
ans=min(ans,dp[i]);
}
printf("%lld\n",ans);
}
return 0;
}

最新文章

  1. 修改客户端连接的服务器IP地址(内部使用)
  2. fedora23 tweak tool不工作解决方案
  3. 使用selenium控制滚动条(非整屏body)
  4. Windows技巧 - 右键菜单【在此处打开bash】
  5. SqlServer 2008 R2定时备份数据库,并且发送邮件通知
  6. jq的选项卡tab
  7. Scala学习之: Hello Word!
  8. 简单的缓存代理HTTP服务器
  9. Flex4/Flash多文件上传(带进度条)实例分享
  10. 查文件大小列表 MySQL问题
  11. css案例学习之全局声明*{} 与body{}的区别
  12. JavaEE(13) - JPA属性映射
  13. Linux下hosts、host.conf、resolv.conf
  14. [Spark内核] 第37课:Task执行内幕与结果处理解密
  15. 神经网络训练tricks
  16. Spring Boot 配置随机数技巧
  17. windows7系统最大支持多少内存
  18. 使用css实现移动端导航条滚动
  19. Instrumentation 两种方法 premain Agent
  20. ASM配置管理

热门文章

  1. VB.net版机房收费系统——结账功能实现(调错与优化)
  2. python day-15 匿名函数 sorted ()函数 filter()函数 map()函数 递归 二分法
  3. java的gradle项目的基本配置
  4. Designing a RESTful API with Python and Flask 201
  5. jQuery.ajaxSetup()
  6. 使用tencent协议发起临时会话
  7. 怎样在QML中利用Sprite来做我们须要的动画
  8. css简单的数学运算
  9. 树的深度优先遍历和广度优先遍历的原理和java实现代码
  10. RestClient写法