题目
题意: 在大小为0-m的一维数轴上,给定n个柱子xi,每个点均有其限速ai.即在x[i]到x[i+1]一段速度为ai.现在可以删除至多 k个柱子,求从0到m的最短时间。(0处必有柱子,且不能删除)
思路: n = 500.猜测是一个n^3的算法,dp.
dp[i][j]表示前i个柱子,删除j个,且不删除第i个的最小花费.
dp2[i][j]表示前i个柱子,删除j个,且删除第i个的最小花费.
此处的最小花费是前从0到i+1的最小花费,不然不好写,绕了半天才看懂.

dp2[i][j] = min(dp2[i-1][j-1],dp[i-1][j-1]) + a[i] * (x[i+1] - x[i])
dp[i][j] = min(dp[i][j],dp2[t][i-t] + a[t] * (a[x+1]-x[i-t+1]) *), 1 <= t <= j

时间复杂度: O(n^3)
代码:

// Problem: C. Road Optimization
// Contest: Codeforces - Codeforces Round #765 (Div. 2)
// URL: https://codeforces.com/contest/1625/problem/C
// Memory Limit: 128 MB
// Time Limit: 3000 ms
//
// Powered by CP Editor (https://cpeditor.org)#include<iostream>
#include<cstdio>
#include<algorithm>
#include<complex>
#include<cstring>
#include<cmath>
#include<vector>
#include<map>
#include<unordered_map>
#include<list>
#include<set>
#include<queue>
#include<stack>
#define OldTomato ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr)
#define fir(i,a,b) for(int i=a;i<=b;++i)
#define mem(a,x) memset(a,x,sizeof(a))
#define p_ priority_queue
// round() 四舍五入 ceil() 向上取整 floor() 向下取整
// lower_bound(a.begin(),a.end(),tmp,greater<ll>()) 第一个小于等于的
// #define int long long //QAQ
using namespace std;
typedef complex<double> CP;
typedef pair<int,int> PII;
typedef long long ll;
// typedef __int128 it;
const double pi = acos(-1.0);
const int INF = 0x3f3f3f3f;
const ll inf = 1e18;
const int N = 502;
const int M = 1e6+10;
const int mod = 1e9+7;
const double eps = 1e-6;
inline int lowbit(int x){ return x&(-x);}
template<typename T>void write(T x)
{if(x<0){putchar('-');x=-x;}if(x>9){write(x/10);}putchar(x%10+'0');
}
template<typename T> void read(T &x)
{x = 0;char ch = getchar();ll f = 1;while(!isdigit(ch)){if(ch == '-')f*=-1;ch=getchar();}while(isdigit(ch)){x = x*10+ch-48;ch=getchar();}x*=f;
}
int n,m,k,T;
int x[N];
int a[N];
int dp[N][N]; //不删除第i个
int dp2[N][N]; //删除第i个
void solve()
{mem(dp,0x3f);mem(dp2,0x3f);int ans = 0x3f3f3f3f;cin>>n>>m>>k;for(int i=1;i<=n;++i) cin>>x[i];for(int i=1;i<=n;++i) cin>>a[i];x[n+1] = m;if(n == 1){ans = (m - x[1]) * a[1];cout<<ans; return ;}dp[1][0] = dp2[1][0] = (x[2]-x[1]) * (a[1]);for(int i=2;i<=n;++i){for(int j=0;j<=min(i-1,k);++j) //删除多少个{//不删第i个dp[i][j] = min(dp2[i-1][j],dp[i-1][j]) + (x[i+1] - x[i]) * a[i];// if(i == 2 && j == 0) cout<<x[i+1]<<" "<<a[i]<<endl;for(int t=1;t<=j;++t) //删第i个,枚举从哪个转移{// int de = i - t;dp2[i][j] = min(dp2[i][j],dp[i-t][j-t] + a[i-t] * (x[i+1]-x[i-t+1]));}// cout<<i<<" "<<j<<":"<<dp2[i][j]<<endl;}}for(int j=0;j<=k;++j) ans = min({ans,dp[n][j],dp2[n][j]});cout<<ans;
}
signed main(void)
{  T = 1;// OldTomato; cin>>T;// read(T);while(T--){solve();}return 0;
}

codeforces765-div2 C(dp一生之敌)相关推荐

  1. 马赛克,一生之敌,是时候说再见了【兄弟,借一部说话】

    马赛克,小伙伴们的一生之敌,终于可以说再见了! 何恺明大神的新作,Kaiming 讲故事能力和实验能力,一如既往的强! MAE 的论文,21 年的 11 月份就发出来了. 但是一直没有开源,我也就一直 ...

  2. “年终盘点一对一”之一生之敌孙狗!

    书接上文: "年终盘点一对一"想要进步的同学 "年终盘点一对一"之前端架构师 "年终盘点一对一"之大公司来的同事 "年终盘点一对一 ...

  3. 用shell批量改变打错标签的名字(打标签是一生之敌)

    打标签真是一生之敌:这两天打了1500张标签,交了才发现所有的命名都没大写(emo)但是再打一遍也是不大可能的,于是组长给了一个建议:写一个脚本来修改所有的命名.我能怎么办,写呗~ 由于打标签生成的j ...

  4. 在idea中连接Linux的mysql数据库(我的一生之敌防火墙)

    我发现我一生最大的敌人就是防火墙. 这是报错信息: 起初我已为是我连接数据库的配置有问题然后我就试了试主机上面的mysql结果意外发现我代码和配置文件都没有错. 然后我又尝试连接远程数据库也就是阿里云 ...

  5. 一生之敌(unsigned long long)

    2014: 一生之敌 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 519  Solved: 59 [Submit][Status][Web Boar ...

  6. Ubuntu16.04(GTX1660ti)cuda10.0和cudnn7.6环境配置 (环境乃一生之敌!!!)

    Ubuntu16.04(GTX1660ti)cuda10.0和cudnn7.6环境配置 (环境乃一生之敌!!!) 第一项:安装显卡驱动 1.下载显卡驱动,到https://www.nvidia.com ...

  7. ZCMU-2014: 一生之敌(数学+枚举)

    2014: 一生之敌 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 723  Solved: 116 [Submit][Status][Web Boa ...

  8. 2017年浙江中医药大学大学生程序设计竞赛-B:一生之敌(思维)

    时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言262144K 64bit IO Format: %lld 题目描述 大家都知道Alice和Bob两个人是一生之 ...

  9. 乔布斯与盖茨罕见合影:一生之敌 并肩而行

    11月30日消息,比尔·盖茨(Bill Gates)和史蒂夫·乔布斯(Steve Jobs)自始自终保持着亦敌亦友的关系.他们之间的复杂关系开始于20世纪70年代后期,当时微软公司的大部分收入来自为苹 ...

最新文章

  1. Ubuntu 14.04 opencv 2.4.9 安装
  2. java linux 时区_java同步/设置Linux系统时间
  3. Vue实现Todo List
  4. 前端用Sass实现星级评定效果,简单快捷实现星级切换。
  5. CentOS 6.8 安装FTP及添加用户
  6. 16 操作系统第四章 文件管理 文件的基本操作 文件共享 文件保护 文件系统的层次结构
  7. android oom工具,Android OOM-Heap,MAT工具检测内存泄露
  8. easyui datagrid中添加右键菜单事件
  9. 同样是创业,同样是两年,有的已经做了几千万,这边已经内斗死了
  10. nodejs fs模块
  11. Pycharm配置运行/调试时的工作目录
  12. 学习HanNLP2015年12月4日 16:24:53
  13. 软件实习项目4——校园一卡通管理系统(实验准备与设计)
  14. MacOS Big Sur 11.2.3 (20D91) with Clover 5131 and OC 0.6.7 and PE 三EFI分区原版DMG黑苹果镜像
  15. SpringBoot项目实现qq邮箱验证码登录
  16. Win10添加Loopback网卡
  17. 前端传参日期只有年月日,后台给日期设置23时59分59秒和0时0分0秒
  18. SDNU-1014 页码问题
  19. 王家林人工智能AI第14课:通过K-Nearest Neighbors改进在Social Network上销售汽车推荐系统的精准性 老师微信13928463918
  20. 计算机三级考试网络技术资料,计算机三级考试2017网络技术辅导资料

热门文章

  1. 开启认知智能战略,加速爱数成为大数据基础设施领航者
  2. 有哪些优秀的职场沟通基础思路?
  3. SAP中重复制造生产计划编制——工作中心能力
  4. 从零开始的人工智能和机器学习,该从哪里入手呢?
  5. 2022年全球与中国直流电子负载市场现状及未来发展趋势
  6. android配置vlc_Android : VLC for Android 环境搭建及编译
  7. 湖南超级计算机研学,长理学子赴德研学 探访马克思故乡感受科研魅力
  8. 公司职位中英对照 大全(转载)
  9. 让熟透的UBUNTU见鬼吧,我们要用OPENSUSE!
  10. 开发手机群控系统(自动化配置篇)