Educational Codeforces Round 58 (Rated for Div. 2) F dp + 优化(新坑) + 离线处理
https://codeforces.com/contest/1101/problem/F
题意
有n个城市,m辆卡车,每辆卡车有起点\(s_i\),终点\(f_i\),每公里油耗\(c_i\),可加油次数\(r_i\),每辆卡车的油箱大小一样,每次加油都会加满,在城市之间不能加油,问最小油箱大小能满足每辆卡车顺利到达终点
题解
- n<=400,m<=250000,考虑离线处理出任意两个城市能加油k次的最小油耗,然后对于每辆卡车询问
- 定义dp[l][r][k]为区间[l,r]能分成(k+1)段各段的最小值
- \(dp[l][r][k]=min(max(dp[l][i][k-1],a[r]-a[i])),l \leq i \leq r\),\(O(n^4)\),会超时
- 观察一下,\(dp[l][i-1][k-1]\leq dp[l][i][k-1]\),\((a[r]-a[i-1]) \geq (a[r]-a[i])\)
- 即随着i的增加,max()的左边越来越大,右边越来越小,那么min()的点一定在\(dp[l][i][k-1]\)和\(a[r]-a[i]\)最接近的时候,队列维护一下,\(O(n^3)\)
- 然后滚掉第一维,空间\((n^2)\),对于每个\(s_i\)离线处理
- 注意dp初始化问题
代码
#include<bits/stdc++.h>
#define ll long long
#define MAXN 500005
using namespace std;
struct N{
ll t,c,r;
N(ll t=0,ll c=0,ll r=0):t(t),c(c),r(r){}
};
vector<N>G[MAXN];
ll a[505],dp[505][505],s,t,c,r,ans;
int n,m;
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=m;i++){
scanf("%lld%lld%lld%lld",&s,&t,&c,&r);
G[s].push_back(N(t,c,r));
}
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
dp[j][0]=a[j]-a[i];
int p=i;
for(int k=1;k<=n;k++){
dp[j][k]=a[j]-a[i];
while(p+1<=j&&dp[p+1][k-1]<=a[j]-a[p+1])p++;
dp[j][k]=min(dp[j][k],min(dp[p+1][k-1],a[j]-a[p]));
}
}
for(auto u:G[i])
ans=max(dp[u.t][u.r]*u.c,ans);
}
cout<<ans;
}
Educational Codeforces Round 58 (Rated for Div. 2) F dp + 优化(新坑) + 离线处理的更多相关文章
- Educational Codeforces Round 58 (Rated for Div. 2) 题解
Educational Codeforces Round 58 (Rated for Div. 2) 题目总链接:https://codeforces.com/contest/1101 A. Min ...
- Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings
Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings 题目连接: http://cod ...
- Educational Codeforces Round 71 (Rated for Div. 2)-F. Remainder Problem-技巧分块
Educational Codeforces Round 71 (Rated for Div. 2)-F. Remainder Problem-技巧分块 [Problem Description] ...
- Educational Codeforces Round 58 (Rated for Div. 2) D 树形dp + 数学
https://codeforces.com/contest/1101/problem/D 题意 一颗n个点的树,找出一条gcd>1的最长链,输出长度 题解 容易想到从自底向长转移 因为只需要g ...
- Educational Codeforces Round 58 (Rated for Div. 2) G 线性基
https://codeforces.com/contest/1101/problem/G 题意 一个有n个数字的数组a[],将区间分成尽可能多段,使得段之间的相互组合异或和不等于零 题解 根据线性基 ...
- Educational Codeforces Round 58 (Rated for Div. 2)
A. Minimum Integer 水 #include<bits/stdc++.h> #define clr(a,b) memset(a,b,sizeof(a)) using name ...
- Educational Codeforces Round 58 (Rated for Div. 2) (前两题题解)
感慨 这次比较昏迷最近算法有点飘,都在玩pygame...做出第一题让人hack了,第二题还昏迷想错了 A Minimum Integer(数学) 水题,上来就能做出来但是让人hack成了tle,所以 ...
- Educational Codeforces Round 50 (Rated for Div. 2) F - Relatively Prime Powers(数学+容斥)
题目链接:http://codeforces.com/contest/1036/problem/F 题意: 题解:求在[2,n]中,x != a ^ b(b >= 2 即为gcd)的个数,那么实 ...
- Educational Codeforces Round 42 (Rated for Div. 2)F - Simple Cycles Edges
http://codeforces.com/contest/962/problem/F 求没有被两个及以上的简单环包含的边 解法:双联通求割顶,在bcc中看这是不是一个简单环,是的话把整个bcc的环加 ...
随机推荐
- 虚拟机安装及ubuntu-16.04.3-desktop-amd64.iso映像文件的安装
虚拟机安装及ubuntu-16.04.3-desktop-amd64.iso映像文件 搞了大半天才搞清楚装linux的前提是要先安装虚拟机的 先下载虚拟机,在然后创建虚拟机,在虚拟机里面再安装linu ...
- 去除编辑器的HTML标签
去除HTML携带的标签常用函数 string strip_tags(string str); 编辑器存放内容到数据库时p标签会转换成这种<p></p> 需要使用htmlspec ...
- mysql,Can 't connect to local MySQL server through socket '/tmp/mysql.sock '(2) "
# mysql -uroot -pEnter password:ERROR 2002 (HY000): Can't connect to local MySQL server through sock ...
- NYOJ37-回文字符串(dp)
37-回文字符串 内存限制:64MB 时间限制:3000ms 特判: No通过数:88 提交数:177 难度:4 题目描述: 所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如& ...
- CSS 背景图像 background属性简写
background属性简写 background属性可以像margin padding属性一样,有简写方法,它的简写顺序是: background-color background-image ba ...
- 云笔记项目-MyBatis返回自增类型&堆栈对象补充理解
在云笔记项目中,讲到了MySql的自增,MyBatis查询到自增类型数据后可以设置返回到参数属性,其中学习了MySql的自增写法,堆栈对象等知识. MySql数据类型自增 建立一张Person表,其中 ...
- find 递归/不递归 查找子目录的方法
1.递归查找(find 命令 是递归遍历文件夹的) 命令:find . -name “*.txt” //当前路径下递归查找以.txt结尾的文件夹 2.不递归查找 find . -name “*.txt ...
- poj2528(线段树+离散化)
题目链接:https://vjudge.net/problem/POJ-2528 题意:在区间[1,1e7]内染色,依次染n(<=1e4)中颜色,给出每种颜色染色的范围,可重叠,求最终有多少种颜 ...
- ToastUtils 工具类
package com.example.grenaderose.redthunder.utils; import android.content.Context; import android.os. ...
- pandas的一些
在具体谈及骚操作之前先捋一遍基本的统计特征函数 方法名 函数功能 所属库 sum() 计算数据样本的综合(按照列计算) pandas mean() 计算数据样本的算术平均数 pandas var() ...