【CF】38E Let's Go Rolling! (dp)
前言
这题还是有点意思的。
题意: 给你 \(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)的更多相关文章
- 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 ...
- 【BZOJ】1600: [Usaco2008 Oct]建造栅栏(dp)
http://www.lydsy.com/JudgeOnline/problem.php?id=1600 说好的今天开始刷水.. 本题一开始我以为是排列组合,但是自己弱想不出来,只想到了如果四边有一条 ...
- 【BZOJ】1801 [Ahoi2009]chess 中国象棋(dp)
题目 传送门:QWQ 分析 发现我们关心的不是棋子的位置,我们只关心棋子数量就ok. 首先每行每列最多两个棋子.这是显然的. 然后我觉得本题最难的部分就是对行进行讨论,蒟蒻我一直被限制在了对格点讨论. ...
- 【UVa】And Then There Was One(dp)
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- 【BZOJ】2021: [Usaco2010 Jan]Cheese Towers(dp)
http://www.lydsy.com/JudgeOnline/problem.php?id=2021 噗,自己太弱想不到. 原来是2次背包. 由于只要有一个大于k的高度的,而且这个必须放在最顶,那 ...
- 【bzoj2423】最长公共子序列[HAOI2010](dp)
题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2423 题目大意:求两个字符串的最长公共子序列长度和最长公共子序列个数. 这道题的话,对于 ...
- 【CF908G】New Year and Original Order(动态规划)
[CF908G]New Year and Original Order(动态规划) 题面 洛谷 CF 题解 设\(f[i][j][k][0/1]\)表示当前填到了第\(i\)位,有\(j\)个大于等于 ...
- 【CF1097F】Alex and a TV Show(bitset)
[CF1097F]Alex and a TV Show(bitset) 题面 洛谷 CF 题解 首先模\(2\)意义下用\(bitset\)很明显了. 那么问题在于怎么处理那个\(gcd\)操作. 然 ...
- 【UML】概念、关联、画画(一)
最近画UML画画,于UML观看视频后还没有学会.它是的结果UML九图是不是太懂,我想加深绘制过程的理解,我一个新的水平. 现在我觉得是时候..地介绍一下UML.了解一下它的基本内容.达到深入浅出的效果 ...
随机推荐
- Java 中冒泡排序
package com.nf147.test; public class sort { public static void main(String[] args) { int arr[] = {11 ...
- 北风设计模式课程---单一职责原则(Single Responsibility Principle)
北风设计模式课程---单一职责原则(Single Responsibility Principle) 一.总结 一句话总结: 一个类应该有且只有一个变化的原因:单一职责原则(SRP:Single Re ...
- kvm中添加VNC密码
#virsh edit 虚机名 <graphics type='vnc' port='5901' autoport='no' listen='0.0.0.0' keymap='en-us'/ ...
- java操作JSON字符串转换成对象的时候如何可以不建立实体类也能获取数据
引入依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson& ...
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_02 递归_1_递归概念&分类&注意事项
a方法里面调用自己,但是没有停止的条件 方法没有停止的条件. 栈内存溢出的异常. 只有栈,没有堆内存 先执行main方法压栈执行 main方法里面调用a方法.a方法就会压栈 改成20000
- request.getParameter
request.getParameter(),该API针对的是 form表单entype的值为 application/x-www-form-urlencoded(默认值), 或者参数跟在地址栏上us ...
- sync_binlog innodb_flush_log_at_trx_commit 深入理解
innodb_flush_log_at_trx_commit和sync_binlog 两个参数是控制MySQL 磁盘写入策略以及数据安全性的关键参数.本文从参数含义,性能,安全角度阐述两个参数为不同的 ...
- 【HANA系列】SAP HANA 1.0 SPS 11 新特性
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA 1.0 SPS ...
- (转)http://blog.chinaunix.net/uid-8363656-id-2031644.html CGI 编写
第一章:基础的基础 回CGI教程目录 1.1 为什么使用CGI? 我没有把什么是CGI放在基础篇的第一段,是因为实在很难说明白到底什么是CGI.而如果你先知道CGI有什么作用,将会很好的理解CGI ...
- FileSystemObject详解
FSO是FileSystemObject 或 Scripting.FileSystemObject 的缩写,为 IIS 内置组件,用于操作磁盘.文件夹或文本文件.FSO 的对象.方法和属性非常的多,这 ...