【JZOJ 5415】【NOIP2017提高A组集训10.22】公交运输

JZOJ5415. 【NOIP2017提高A组集训10.22】公交运输 Description城市中有一条长度为n的道路,每隔1的长度有一个公交车站,编号从0到n,学校在0号车站的位置。其中每个公交车站(除了n号车站)有两个属性ci和vi,代表从这个公交车站出发的公交车的性质。ci代表这个从i出发的公交车,相邻两个停靠站之间的距离。vi表示每坐1站的花费。 注意,一辆公交车出发后会向n号车站的方向行进。同时,一名乘客只能从起点站上车,但可以从任意停靠站下车。校庆志愿者 阅读详情

Description

城市中有一条长度为n的道路,每隔1的长度有一个公交车站,编号从0到n,学校在0号车站的位置。其中每个公交车站(除了n号车站)有两个属性ci和vi,代表从这个公交车站出发的公交车的性质。ci代表这个从i出发的公交车,相邻两个停靠站之间的距离。vi表示每坐1站的花费。
注意,一辆公交车出发后会向n号车站的方向行进。同时,一名乘客只能从起点站上车,但可以从任意停靠站下车。校庆志愿者小Z为了帮助校友查询有关城市交通费用的问题,想知道从0号车站(也就是学校)出发,到达每个公交车站的最小花费,于是他找到了你。

Solution

先按c的大小和%c余数分组,

带log的做法显然,就是维护一堆直线嘛,
这题看起来不能用斜率优化,但其实是可以用斜率优化的,

试想,对于同一组,它们前面的都可以到达后面的,
在最优的情况下,把这些直线按位置i排序,那么它们的vi都是增的,
证明显然:因为你前面的可以走到后面的嘛,既然你前面的vi大于你后面的,那么干嘛不先走到后面那个点,再用这个小一点的vi来往后走,

那么现在题目就变成了,每次在一堆直线中加入一个斜率比前面都要大的,怎么维护,

显然,斜率大前期可能优,但很快就不优了,到后面还优的一般都是斜率小的,
又因为我们每次是先删掉斜率比新加的大的,所以用一个栈来维护,
栈里的元素,斜率单调递减,每次查询就比较连续的两个,如果劣就弹栈,

但这样显然有错,就算保证斜率是单调的,也不能保证栈顶到栈底就是x越大越优,
所以在插入的时候,你就要判断一下交点的位置,这个画3条线的情况就可以看出来了,(懒)

复杂度:O(n∗10)

Code

#include <cstdio>
#include <algorithm>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define JS(q,w,I) ((q)*(I)+(w))
using namespace std;
const int N=1000500,INF=2147483640;
int read(int &n)
{
    char ch=' ';int q=0,w=1;
    for(;(ch!='-')&&((ch<'0')||(ch>'9'));ch=getchar());
    if(ch=='-')w=-1,ch=getchar();
    for(;ch>='0' && ch<='9';ch=getchar())q=q*10+ch-48;n=q*w;return n;
}
int m,n,ans,mxc;
int c[N],va[N];
int f[N];
int za[11][11][2001];
int za1[11][11][2001];
int JA(int k,int b,int k1,int b1){return (b1-b)/(k-k1);}
int main()
{
    int q,w;
    read(n),read(mxc);
    fo(i,0,n-1)read(c[i]),read(va[i]),f[i+1]=INF;
    q=c[0];
    za[q][0][za[q][0][0]=1]=va[0];
    fo(i,1,n)
    {
        fo(j,1,mxc)
        {
            q=i%j;
            if(!za[j][q][0])continue;
            for(;za[j][q][0]>1&&JS(za[j][q][za[j][q][0]],za1[j][q][za[j][q][0]],i/j)
                >=JS(za[j][q][za[j][q][0]-1],za1[j][q][za[j][q][0]-1],i/j);za[j][q][0]--);
            f[i]=min(f[i],JS(za[j][q][za[j][q][0]],za1[j][q][za[j][q][0]],i/j));
        }
        if(f[i]==INF){printf("-1 ");continue;}
        printf("%d ",f[i]);
        if(i==n)break;
        q=c[i];
        w=i%c[i];
        for(;za[q][w][0]&&za[q][w][za[q][w][0]]>=va[i];za[q][w][0]--);
        for(;za[q][w][0]>1&&
        JA(za[q][w][za[q][w][0]],za1[q][w][za[q][w][0]],za[q][w][za[q][w][0]-1],za1[q][w][za[q][w][0]-1])<
        JA(za[q][w][za[q][w][0]],za1[q][w][za[q][w][0]],va[i],f[i]-(i/q)*va[i]);za[q][w][0]--);
        za[q][w][++za[q][w][0]]=va[i];
        za1[q][w][za[q][w][0]]=f[i]-(i/q)*va[i];
    }
    printf("\n");
    return 0;
}
【NOIP2017提高A组集训10.22】公交运输 Description城市中有一条长度为n的道路,每隔1的长度有一个公交车站,编号从0到n,学校在0号车站的位置。其中每个公交车站(除了n号车站)有两个属性ci和vi,代表从这个公交车站出发的公交车的性质。ci代表这个从i出发的公交车,相邻两个停靠站之间的距离。vi表示每坐1站的花费。 注意,一辆公交车出发后会向n号车站的方向行进。同时,一名乘客只能从起点站上车,但可以从任意停靠站下车。校庆志愿 阅读详情

相关推荐

Latext安装(二)WinEdt安装+激活教程

常用的LaTeX安装方案是TeXLive + WinEdt。TeXLive 是LaTeX的运行环境,而 WinEdt 则是编写LaTeX文档的编辑器。安装好TexLive之后,再安装WinEdt。这里介绍的是WinEdt的安装和激活教程。

j_l_sheng的博客 4万+

【JZOJ5415】【NOIP2017提高A组集训10.22】[斜率优化]公交运输

Description城市中有一条长度为n的道路,每隔1的长度有一个公交车站,编号从0到n,学校在0号车站的位置。其中每个公交车站(除了n号车站)有两个属性ci和vi,代表从这个公交车站出发的公交车的性质。ci代表这个从i出发的公交车,相邻两个停靠站之间的距离。vi表示每坐1站的花费。 注意,一辆公交车出发后会向n号车站的方向行进。同时,一名乘客只能从起点站上车,但可以从任意停靠站下车。校庆志愿者

dance in th dark的博客 991

专栏丨华为HN8145XR光猫获取超级管理员密码

摘要:本文详细介绍了华为HN8145xr光猫获取超级管理员权限的完整步骤。首先通过ONT使能工具补全shell,然后利用Telnet登录光猫后台进行操作。文章提供了多种获取超级密码的方法,包括配置文件解密、一键查询工具等,并针对联通光猫特别说明了默认密码格式(CUAdmin+后八位数字)。此外,还介绍了恢复出厂设置、修改SSID等实用操作,帮助用户完全掌控光猫设备。文末附有详细的命令行操作指南,适合有一定技术基础的用户参考。

8259

JZOJ5415. 【NOIP2017提高A组集训10.22】公交运输 DP

题意不说了。有点鬼畜,比赛只会50分,花了30分钟思考一无所获,连按模分组都没想到迟早退役。 然后花了十分钟打50分扔了这题。巨亏。 其实比赛还剩一个小时的时候发现是斜率优化,但是没时间打所以就放了。。 事实上这并不是简单的斜率优化,,因为如果直接做不能保证他的斜率是单调递增的。 首先先把点按模分组,只有%c相同的点才能被到达。 然后就可以直接斜率优化了,每次先枚举c,对于栈中的点,我们把

老臣 443

炼丹-Pyecharts: JupyterLab无法render_notebook

炼丹-Pyecharts: JupyterLab无法render_notebook问题描述Jupyter-Lab 环境下render_notebook显示空白 问题描述Jupyter-Lab 环境下render_notebook显示空白 首先需要使用pyecharts自带的config来申明一下使用pyecharts的运行环境 from pyecharts.globals import Curre...

MichaelZzzzz的博客 4687

四足机器人机械结构设计:从腿型到驱动的全面解析

本文全面解析了四足机器人机械结构设计的核心要点。资深工程师老张深入探讨了并联腿与串联腿的选型策略、不同腿型布局对稳定性的影响,并详细对比了皮带轮与连杆驱动方式的优劣。文章结合实战经验,强调了足端设计、材料选择及整体结构轻量化等关键细节,为机器人开发者提供了从理论到实践的宝贵指导。

assembly8low的博客 632

[JZOJ5415]【NOIP2017提高A组集训10.22】公交运输

Description 城市中有一条长度为n的道路,每隔1的长度有一个公交车站,编号从0到n,学校在0号车站的位置。其中每个公交车站(除了n号车站)有两个属性ci和vi,代表从这个公交车站出发的公交车的性质。ci代表这个从i出发的公交车,相邻两个停靠站之间的距离。vi表示每坐1站的花费。 注意,一辆公交车出发后会向n号车站的方向行进。同时,一名乘客只能从起点站上车,但可以从任意停靠站下车。

Never give in. 309

网络安全面试题

在当今社会网络安全行业越来越发达,也有越来越多的人去学习,为了更好地进行工作,除了学好知识外还要应对企业的面试。 所以在这里我归总了一些网络安全方面的常见面试题,希望对大家有所帮助。 windows常见 1:描述tcp/udp的区别及优劣,及其发展前景 TCP—传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能...

fzx_hsaj的博客 6万+

JZOJ 5415. 【NOIP2017提高A组集训10.22】公交运输

JZOJ 5415. 【NOIP2017提高A组集训10.22】公交运输 Description城市中有一条长度为n的道路,每隔1的长度有一个公交车站,编号从0到n,学校在0号车站的位置。其中每个公交车站(除了n号车站)有两个属性ci和vi,代表从这个公交车站出发的公交车的性质。ci代表这个从i出发的公交车,相邻两个停靠站之间的距离。vi表示每坐1站的花费。 注意,一辆公交车出发后会向n号车站的方向行进。同时

Felix-Lee的博客 502

PWM控制技术+Simulink仿真详解

想要理解SVPWM控制技术,首先要了解PWM控制技术。 PWM控制技术就是对脉冲宽度进行调制的技术,通过对一系列脉冲宽度进行调制来等效获得所需要的波形(包括形状和幅值)。 PWM控制的基本原理:冲量(窄脉冲的面积)相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果(输出响应波形)基本相同,即面积等效原理;用一系列幅值相等,宽度按一定规律变化的高频脉冲序列代替期望的输出波形,多用于逆变电路的控制; PWM信号生成的方法有:计算法、调制法、跟踪法,主要对调制法进行详解 ...

小师兄的学习记录 5万+

shader多图叠加变换

shader Shader "Paint3D/AddTexture" { Properties { _MainTex ("Main Texture", 2D) = "white" {} _MainColor("Main Color", Color)=(1,1,1,1) _AddTex0 ("Texture0", 2D) = "white" {} _AddTex1 ("Texture1", 2D) = "white" {} .

李长江的博客 908

【NOIP 2017】赛季正式打响!

传送门: NOIP2017 检查清单 2017的赛季正式打响了!加油干啊同志们,这里就记录一下我到底干了什么吧~,10_21【JZOJ 5407】【NOIP2017提高A组集训10.21】Deep 【JZOJ 5408】【NOIP2017提高A组集训10.21】Dark 【JZOJ 5409】【NOIP2017提高A组集训10.21】Fantasy小结T1没有去尝试找规律,不能懒啊 T3有

1135

基于Simulink的间接功率控制的矩阵变换器

通过上述步骤,我们成功设计并实现了基于 Simulink 的间接功率控制的矩阵变换器仿真模型。该模型能够通过控制输入电流和输出电压,实现对功率的间接控制,适用于电机驱动、可再生能源系统、电力传输等领域。通过虚拟场景仿真、参数优化和性能评估,验证了系统的稳定性和高效性,并通过调整 PI 控制器参数和优化调制算法,进一步提升了系统的性能。

MHD0815的博客 296

【JZOJ 5415】 公交运输

Description城市中有一条长度为n的道路,每隔1的长度有一个公交车站,编号从0到n,学校在0号车站的位置。其中每个公交车站(除了n号车站)有两个属性ci和vi,代表从这个公交车站出发的公交车的性质。ci代表这个从i出发的公交车,相邻两个停靠站之间的距离。vi表示每坐1站的花费。 注意,一辆公交车出发后会向n号车站的方向行进。同时,一名乘客只能从起点站上车,但可以从任意停靠站下车。校庆志愿者

LYD729 456

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

JZOJ 5415 公交运输

公交运输Description城市中有一条长度为 nn的道路,每隔11的长度有一个公交车站,编号从00到nn。 其中每个公交车站(除了nn号车站)有两个属性cic_i和viv_i。 cic_i代表这个从i出发的公交车,每相邻两个停靠站之间的距离。viv_i表示每坐11站的花费。 注意,一辆公交车出发后会向nn号车站的方向行进。同时,一名乘客只能从起点站上车,但可以从任意停靠站下车。 求从00

XianHaoMing的博客 607

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【集训】jzoj 2017.7.15 noip模拟赛A 总结

7.15的比赛要注意: 0. 摆好蒟蒻心态,不要有心理落差. 1. 先打暴力再打正解,有助于思考与查错。(日常) 2. 首次思考时间控制在1h, 每一题都要保证至少思考20分钟。(第三题基本连题意都没研究出来,何谈思考) 3. 记得多根据数据范围与问题想一下学过的算法。 4. 不要被自己的思路带跑,当想了十几分钟没什么想法的时候,考虑回溯。 吐槽一下这个背景故事,太容易

一位蒟蒻的小博客 387

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

JZOJ 3419. 【NOIP动态规划专题】最大利润

目录: 分析: 代码: 分析: 首先是用树形dp,这个小编就不废话了,小编将着重点放在动态方程上: 我们用f[i][1]f[i][1]f[i][1]表示在i点开饭店,f[i][0]f[i][0]f[i][0]则相反,而我们就可以进行分类讨论了: 1)f[i][1]=∑f[to][0]f[i][1]=∑f[to][0]f[i][1]=\sum f[to][0].即在i点...

qq_35786326的博客 369

【JZOJ】【离散化】【差分】幻灯片

幻灯片 第一行,一个nnn 接下来每行五个整数x1,y1,x2,y2,kx1,y1,x2,y2,kx1,y1,x2,y2,k,代表(x1,y1)(x1,y1)(x1,y1)到(x2,y2)(x2,y2)(x2,y2)是kkk颜色, 颜色可以重叠,但是会变成其他颜色,一个数字代表一个颜色 样例输入 3 2 2 3 3 2 2 0 4 4 1 1 1 3 5 3 样例输出 4 思路 ...

Maple的博客 397

【JZOJ】LAGNO

LAGNO 有一个n∗nn*nn∗n的棋盘,上面有白棋和黑棋,“...”代表没有棋子,“BBB”代表黑棋(BlackBlackBlack),“WWW”代表白棋(WhiteWhiteWhite) 被黑棋夹在中间的白棋会变黑棋,然后更新白棋的黑棋就不能再更新其他白棋,求下一步棋子后,最多能吃多少白棋 输入 样例输入 ........ ........ ........ ...BW... ...WB.....

Maple的博客 390

【JZOJ4824】【NOIP2016提高A组集训第1场10.29】配对游戏

题目描述 流行的跳棋游戏是在一个有m*n个方格的长方形棋盘上玩的。棋盘起初全部被动物或障碍物占满了。在一个方格中,‘X’表示一个障碍物,一个‘0’~‘9’的个位数字表示一个不同种类的动物,相同的个位数字表示相同种类的动物。一对动物只有当它们属于同一种类时才可以被消去。消去之后,他们所占的方格就成为空方格,直到游戏结束。要消去一对动物的前提条件是:这对候选动物所在的方格必须相邻...

weixin_30709061的博客 133

【NOIP 2016 提高组】愤怒的小鸟

DescriptionSolution一题很显然的状压DP, 显然的转移是n3n^3的, 优化: 1. 很显然两个点决定一条抛物线后,可以预处理还能打到那些点。 2. 贪心的想,既然一个点迟早要打,为何不现在就打了它,复杂度:O(2n∗n)O(2^n*n)Code#include <iostream> #include <cstdio> #include <cstdlib> #include

1482

【JZOJ 3853】帮助Bsny

DescriptionBsny的书架乱成一团了,帮他一下吧! 他的书架上一共有n本书,我们定义混乱值是连续相同高度书本的段数。例如,如果书的高度是30,30,31,31,32,那么混乱值为3;30,32,32,31的混乱值也为3。但是31,32,31,32,31的混乱值为5,这实在是太乱了。 Bsny想尽可能减少混乱值,但他有点累了,所以他决定最多取出k本书,再随意将它们放回到书架上。你能帮助

1335

【JZOJ 4599】西行妖

Description 在幻想乡白玉楼有一棵终年不开花的樱树叫西行妖,西行寺幽幽子曾经为了让它开花而大量收集春度,然后被城管教训了一顿… 现在,幽幽子得到城管的允许,收集了S点春度,让西行妖重新开花。 西行妖可以被看成是一棵有n个节点的树,每个叶子节点被分配了1点春度就能开花(幽幽子不会无意义地使用她的春度,于是最多只会给同一个叶子节点分配1点春度),对于非叶子节点i,如果它有至少有1个儿子开花,

1140

【51NOD 1383】整数分解为2的幂

Description任何正整数都能分解成2的幂,给定整数N,求N的此类划分方法的数量!由于方案数量较大,输出Mod 1000000007的结果。 比如N = 7时,共有6种划分方法。7=1+1+1+1+1+1+1 =1+1+1+1+1+2 =1+1+1+2+2 =1+2+2+2 =1+1+1+4 =1+2+4Solution显然,当n为奇数时(除了1),fn=fn−

1031
上一篇: 【JZOJ 5414】【NOIP2017提高A组集训10.22】幸运值
下一篇: 【JZOJ 5416】【NOIP2017提高A组集训10.22】密码
HOWARLI
博客等级 码龄11年 109粉丝 378原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值