前言

这题还是有点意思的。

题意: 给你 \(n\) (\(n<=3000\)) 个弹珠,它们位于数轴上。给你弹珠的坐标 \(x_i\) 在弹珠 \(i\) 上面花费 \(C_i\) 的钱 可以使弹珠在原地不动 (\(-10^9<=x_i,C_i<=10^9\)),游戏开始时,所有的弹珠向左滚动,直到碰到定在原地不动的弹珠,其花费是其滚动的距离。总花费=开始前的花费+弹珠滚动的花费,问最小的花费是多少

题解

首先划分出阶段,,我们可以先将弹珠排序,前 \(i\) 个弹珠,最后一个固定的弹珠是 \(j\) \((j<i)\)

\(=>\) 设 \(f_{i,j}\) 表示 前 \(i\) 个弹珠,最后一个固定的弹珠是 \(j\) \((j<i)\) 的最小花费

可以这样想,当最后一个定点 \(j\) 在 \(i\) 时,是不是就要在 \(i\) 的前面找到一个最小的定点继承 所以要找 \(1<=k<i\) 中 \(f_{i-1,k}\) 最小的这个点,然后加上定 \(i\) 点的花费

而当最后一个定点 \(j\) 不在 \(i\) 时 只要在 \(f_{i-1,j}\) 的基础上加上点 \(i\) 到点 \(j\) 的距离

转移:

  • \(f_{i,j}=\min\{f_{i-1,k}\} + C_i (i==j)\)

  • \(f_{i,j}=f_{i-1,j}+x_i-x_j (j<i)\)

Code

// int下INF=0x3f3f3f3f
// long long 下 INF=1e19
#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cmath>
#define int long long
#define INF 1e19
using namespace std;
inline int read() {
int x=0,f=1; char ch=getchar();
while(ch<'0' || ch>'9') { if(ch=='-') f=-1; ch=getchar(); }
while(ch>='0'&&ch<='9') { x=(x<<3)+(x<<1)+(ch^48); ch=getchar(); }
return x * f;
}
const int N = 3007;
int n;
int f[N][N];
struct Marbles { //弹珠
int x,c;
}a[N];
bool cmp(Marbles x,Marbles y) {
return x.x < y.x;
}
signed main()
{
n = read();
for(int i=1;i<=n;++i)
a[i].x = read(), a[i].c = read();
sort(a+1, a+1+n, cmp);
int minn;
f[1][1] = a[1].c;
for(int i=2;i<=n;++i) {
minn = INF;
for(int j=1;j<i;++j) {
f[i][j] = f[i-1][j] + a[i].x - a[j].x;
minn = min(minn, f[i-1][j]);
}
f[i][i] = minn + a[i].c;
}
int ans = INF;
for(int i=1;i<=n;++i)
ans = min(ans, f[n][i]);
cout<<ans<<endl;
return 0;
}

【CF】38E Let's Go Rolling! (dp)的更多相关文章

  1. Codeforces Problem - 38E - Let's Go Rolling!(DP)

    E. Let's Go Rolling! time limit per test 2 seconds memory limit per test 256 megabytes input standar ...

  2. 【BZOJ】1600: [Usaco2008 Oct]建造栅栏(dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1600 说好的今天开始刷水.. 本题一开始我以为是排列组合,但是自己弱想不出来,只想到了如果四边有一条 ...

  3. 【BZOJ】1801 [Ahoi2009]chess 中国象棋(dp)

    题目 传送门:QWQ 分析 发现我们关心的不是棋子的位置,我们只关心棋子数量就ok. 首先每行每列最多两个棋子.这是显然的. 然后我觉得本题最难的部分就是对行进行讨论,蒟蒻我一直被限制在了对格点讨论. ...

  4. 【UVa】And Then There Was One(dp)

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  5. 【BZOJ】2021: [Usaco2010 Jan]Cheese Towers(dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2021 噗,自己太弱想不到. 原来是2次背包. 由于只要有一个大于k的高度的,而且这个必须放在最顶,那 ...

  6. 【bzoj2423】最长公共子序列[HAOI2010](dp)

    题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2423 题目大意:求两个字符串的最长公共子序列长度和最长公共子序列个数. 这道题的话,对于 ...

  7. 【CF908G】New Year and Original Order(动态规划)

    [CF908G]New Year and Original Order(动态规划) 题面 洛谷 CF 题解 设\(f[i][j][k][0/1]\)表示当前填到了第\(i\)位,有\(j\)个大于等于 ...

  8. 【CF1097F】Alex and a TV Show(bitset)

    [CF1097F]Alex and a TV Show(bitset) 题面 洛谷 CF 题解 首先模\(2\)意义下用\(bitset\)很明显了. 那么问题在于怎么处理那个\(gcd\)操作. 然 ...

  9. 【UML】概念、关联、画画(一)

    最近画UML画画,于UML观看视频后还没有学会.它是的结果UML九图是不是太懂,我想加深绘制过程的理解,我一个新的水平. 现在我觉得是时候..地介绍一下UML.了解一下它的基本内容.达到深入浅出的效果 ...

随机推荐

  1. 解决:使用ajax验证登录信息返回前端页面时,当前整个页面刷新。

    源代码如下: function loginform(){ $.ajax({ url:"loginValidate.do", type:'post', data:{"nam ...

  2. js 在输出到页面的5中方式

    1.alert("要输出的内容"); ->在浏览器中弹出一个对话框,然后把要输出的内容展示出来 ->alert都是把要输出的内容首先转换为字符串然后在输出的 2.doc ...

  3. es之IK分词器

    1:默认的分析器-- standard 使用默认的分词器 curl -XGET 'http://hadoop01:9200/_analyze?pretty&analyzer=standard' ...

  4. 小程序swiper实现订单页面

    小程序swiper实现订单页面 myOrder.wxml <!--pages/myorder/myorder.wxml--> <view class="swiper-tab ...

  5. Otto

    导入依赖:implementation 'com.squareup:otto:1.3.8'1定义一个类继承Bus,并且设置单列模式注册和声明订阅者发送事件,最后解除注册与EventBus相同Event ...

  6. jmeter的日常特殊参数化

    1.map转译符号:   如果///Mobile///:///18888888888///   需要再参数化请这样做,////Mobile////://///${Mobile}/////   2.in ...

  7. nginx 和 php

    sudo apt-get install nginx sudo groupadd www sudo useradd -g www www /etc/nginx/nginx.conf service n ...

  8. Django学习之路由系统

    一.Django的路由系统 1.URLconf配置 基本格式: 参数说明: 2.正则表达式详解 基本配置 注意事项 补充说明 3.分组命名匹配 URLconf匹配的位置 捕获的参数永远都是字符串 视图 ...

  9. java操作JSON字符串转换成对象的时候如何可以不建立实体类也能获取数据

    引入依赖 <dependency>    <groupId>com.alibaba</groupId>    <artifactId>fastjson& ...

  10. kafka 和 rocketMQ 的数据存储

    kafka 版本:1.1.1 一个分区对应一个文件夹,数据以 segment 文件存储,segment 默认 1G. 分区文件夹: segment 文件: segment 的命名规则是怎样的? kaf ...