CF38E Let's Go Rolling!
CF38E Let's Go Rolling!
考虑 \(\text{DP}\)。
先将弹珠按坐标升序排序。
定义 \(f_i\) 为最后一个选择原地不动的是第 \(i\) 个弹珠的最小答案。
考虑转移。由于 \(n\leq 3000\),可以直接枚举上一个原地不动的弹珠 \(j\),转移方程
为:
\]
其中第一个弹珠必须选择原地不动: \(f_1=c_1\),以及 \(calc(i,j)\) 为 \((j,i]\) 区间内的弹珠向左滚动的代价之和。
推导一下 \(calc(i,j)\):
calc(i,j)
&=\sum_{k=j+1}^{i} (x_k-x_j)\\
&=-(i-j)\cdot x_j + \sum_{k=j+1}^{i}x_k
\end{aligned}
\]
用前缀和优化即可。
最终答案为 \(\max \{ f_i+calc(n,i)|1\leq i \leq n \}\)。
记得开 long long。
代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int INF=1e18;
const int N=3005;
int n;
int f[N],s[N];
struct node{
int x,c;
bool operator < (const node& b) const {return x < b.x;}
}a[N];
inline int calc(int i,int j){return s[i]-s[j]-a[j].x*(i-j);}
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i].x>>a[i].c;
sort(a+1,a+n+1);
for(int i=1;i<=n;i++) s[i]=s[i-1]+a[i].x;
int ans=INF;
for(int i=1;i<=n;i++){
f[i]=INF;
if(i==1) f[i]=a[i].c;
for(int j=1;j<i;j++) f[i]=min(f[i],f[j]+calc(i-1,j)+a[i].c);
ans=min(ans,f[i]+calc(n,i));
}
cout<<ans;
return 0;
}
CF38E Let's Go Rolling!的更多相关文章
- Rolling Cursor Invalidations with DBMS_STATS.AUTO_INVALIDATE (文档 ID 557661.1)
Rolling Cursor Invalidations with DBMS_STATS.AUTO_INVALIDATE (文档 ID 557661.1) 转到底部 In this Documen ...
- Oracle RAC环境下如何更新patch(Rolling Patch)
Oracle RAC数据库环境与单实例数据库环境有很多共性,也有很多异性.对于数据库补丁的更新同样如此,都可以通过opatch来完成.但RAC环境的补丁更新有几种不同的更新方式,甚至于可以在零停机的情 ...
- rolling hash
也是需要查看,然后修改,rolling hash, recursive hash, polynomial hash, double hash.如果一次不够,那就2次.需要在准备一个线段树,基本的线段树 ...
- 从Kali 2.0 转至 Kali Rolling
1. 修改官方软件库列表 编辑/etc/apt/sources.list,注释掉原有内容,然后添加下述内容. # kali rolling deb http://http.kali.org/kali ...
- HDOJ(HDU) 2135 Rolling table
Problem Description After the 32nd ACM/ICPC regional contest, Wiskey is beginning to prepare for CET ...
- Rolling cURL: PHP并发最佳实践
Rolling cURL: PHP并发最佳实践 在实际项目或者自己编写小工具(比如新闻聚合,商品价格监控,比价)的过程中, 通常需要从第3方网站或者API接口获取数据, 在需要处理1个URL队列时, ...
- Kali Rolling在虚拟机安装后的设置
Kali Linux在2016年的第一个发行版——Kali Rolling是Debian的即时更新版,只要Debian中有更新,更新包就会放入Kali Rolling中,供用户下载使用.它为用户提供了 ...
- Kali Rolling 下利用rtl-sdr跟踪飞机路线
环境 kali rolling 状态:未升级发行版,仅用 "apt-get upgrade " 命令更新了软件 原料 RTL-SDR电视棒一个,芯片是RTL2832U 原理 我国民 ...
- kali Rolling 安装QQ
------------------------------------------------------------------- 环境: kali Rolling 64位 所需软件包: Wi ...
- Rolling Hash(Rabin-Karp算法)匹配字符串
您可以在我的个人博客中访问此篇文章: http://acbingo.cn/2015/08/09/Rolling%20Hash(Rabin-Karp%E7%AE%97%E6%B3%95)%E5%8C%B ...
随机推荐
- Xamarin.Android 特性-ActivityAttribute -中文说明
using System; // 指定该特性用于类,并且不可重复或被继承 [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, ...
- SpringBoot--学会配置日志
理解SpringBoot 的日志设计 在项目中导入spring-boot-starter.jar依赖,它会传递 导入spring-boot-starter-logging.jar依赖,依赖关系如下图: ...
- SciTech-EECS-Computer Network:OSI: 链路:mac地址+集线器/交换机⇒子网⇒网络层:ip地址+路由器+
SciTech-EECS-Computer Network:OSI: 链路:mac地址+集线器/交换机⇒子网⇒网络层:ip地址+路由器+ OSI: 链路:mac地址+集线器/交换机⇒子网⇒网络层:ip ...
- 解决报错:错误1130- Host xxx is not allowed to connect to this MariaDb server 九五小庞
在云服务器上面搭建了MariaDb(MariaDB是MySQL源代码的一个分支),但是远程链接不上. 首先,你要确保服务器安全组3306端口已经开放. 在确保端口开放的情况下,如果出现错误代码1130 ...
- Win11双击文件夹卡死转圈打不开的问题
有一部分雨林木风官网的win11专业版用户,在使用电脑鼠标双击文件夹时,出现无法打开,而且箭头也是一直在转圈圈的问题,这是个什么情况呢?本文中,雨林木风小编将为大家分享详细的解决方法,希望可以帮助到有 ...
- Win10纯净版软件闪退无法运行的问题
最近不少雨林木风官网用户在使用Win10电脑的时候都遇到了这么一个问题,在运行某些软件的时候,程序直接闪退无法正常的额运行 ,遇到这种问题我们具体应该怎么解决呢?下面小编就带着大家一起看看吧! Win ...
- 3d的单向平台检测
https://www.youtube.com/watch?v=qwwjwb7XlUc using UnityEngine; [RequireComponent(typeof(BoxCollider) ...
- AI 是搭子不是替代者:我用大模型工具(cursor,trae)编程的一年经验总结
大模型 + Cursor 编程实践经验分享:AI 不是替代者,而是开发加速器! 从使用大模型编程至今,尤其是在 Cursor 编辑器 + AI 编程助手(如 GPT-4.1.Claude.Gemini ...
- markdown符号双下标如何实现? 行内公式 | 上标下标 | 行内公式 | 单独公式快
实现效果: 一.行内公式: \(J^x_{ij}\) 二.换行单独的公式块: \[J^x_{ij} \] 如何实现? 一.行内公式: $J^x_{ij}$ 二.换行单独的公式块: $$ J^x_{ij ...
- Tomcat控制台输出乱码问题
Tomcat在控制台的输出显示中文乱码 找到Tomcat安装目录 Tomcat\apache-tomcat\conf\logging.properties 在logging.properties中有关 ...