Codeforces Round #185 (Div. 1) B - Cats Transport DP 斜率优化

【FPGA的基础快速入门23--------OV5640摄像头VGA显示】 FPGA的基础学习--------OV5640摄像头VGA显示OV5640简介二级目录三级目录 OV5640简介 OV5640同OV7725一样,都是Omni Vision(豪威科技)公司生产的CMOS图像传感器。 OV5640支持更高的分辨率(500W像素)、采集速率,具有更高的图像处理性能,主要应用在手机、数码相机、电脑多媒体等领域。 OV5640支持LED补光、MIPI(移动产业处理器接口)输出接口和DVP(数字视频并行)输出接口选择、ISP(图像信号处理)以及AFC (自动聚焦控制)等功能。 OV 阅读详情

将小猫对应对应到起点就是很板的题目了额

比如miao是在h[i]  ,h[i]这个点距离原点的距离是x,miao出现的时候为y,对应以后的距离就是y-x,说明从y-x时刻出发能达到该miao

样例对应以后排序就是 0 0 0 8 9 10 记为d数组

那你选择从0  和 10 出发,花费就是 0+0+0+2+1+0 =3

  1. 很容易得出dp转移方程了额 :  DP[K][I] = MIN{ DP[K-1][J] + COST(J,I) }     (j < i ; cost(j,i)  是指 在i处出发的人要取得从 j+1 到i 的miao的花费)
  2. 定义 sumd,    sumd[i] = segma( d[k])  ( 1<=k <=i)  ,所以  cost(j,i)  就等于 d[i]*(i-j) - (sumd[i]-sumd[j])
  3. 再展开dp转移方程: dp[k][i] = min( dp[k-1][j] + d[i] * i - d[i]*j - sumd[i] + sumd[j])
  4. 化简之后就是:  dp[k-1][j] + sumd[j]    =  d[i]  * j  + dp[k][i] -d[i]*i + sumd[i]
  5. 令 y = dp[j-1][j] + sumd[j]   ,  x = j,   G = dp[k][i] - d[i] * i + sumd[i]     ; 那么原式变为y = d[i] * x + G
其中G就是我们间接要求的,剩下就是用栈维护一个凸包,将复杂度降为 n^2
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <algorithm>
#define fr(i,s,n) for(int i = s;i<n;++i)
typedef long long ll;
using namespace std;
ll dp[110][101000];
ll d[100010];
ll sumd[100010];
int n,m,p;
int dis[100010];
int tot = 1;

struct STA{
    struct Sta{
        ll x,y;
        Sta(ll a,ll b):x(a),y(b){}
        Sta(){}
    }s[100010];
    int top,now;
    void init(){
        top = -1;
        now = 0;
    }
    void P(ll a,ll b){
        if( top < 1) s[++top] = Sta(a,b);
        else{
            while(1){
                if( top == 0){
                    s[++top] = Sta(a,b);
                    break;
                }
                ll y1 = b-s[top].y;
                ll x1 = a-s[top].x;
                ll y2 = s[top].y - s[top-1].y;
                ll x2 = s[top].x - s[top-1].x;
                if( y1 * x2 > y2 * x1){
                    s[++top] = Sta(a,b);
                    break;
                }
                else{
                    top --;
                }
            }
        }
    }
}S;
double cal(int x){
    return double (S.s[x+1].y - S.s[x].y)/ double(S.s[x+1].x - S.s[x].x );
}
int main(){
    scanf("%d%d%d",&n,&m,&p);
    fr(i ,  2, n+1){
        scanf("%d",&dis[i]);
        dis[i] = dis[i-1]+dis[i];
    }
    int h,t;
    fr(i , 0 ,m){
        scanf("%d%d",&h,&t);
        d[tot++] = t-dis[h];
    }
    sort(d+1,d+tot);
    S.init();
    fr(i , 1 ,tot) sumd[i] = sumd[i-1] + d[i];
    fr(i , 1 ,tot) dp[1][i] = d[i] * i - sumd[i];
    fr( k ,2, p+1){
        fr(i ,k,tot){
            S.P( i-1 , dp[k-1][i-1] + sumd[i-1] );
            while( S.now < S.top && cal(S.now) < double(d[i]) ){
                S.now++;
            }
            dp[k][i] = S.s[S.now].y - S.s[S.now].x * d[i] + i*d[i] - sumd[i];
        }
        S.init();
    }
    if( p >=tot){
        puts("0");
        return 0;
    }
    printf("%lld\n",dp[p][tot-1]);
    return 0;
}


全网最详细的UAVCAN/DroneCAN链路开发(官方DroneCAN消息+自定义DroneCAN消息)附DroneCAN项目源码 全网最详细的UAVCAN/DroneCAN链路移植开发(官方DroneCAN消息+自定义DroneCAN消息)附工程移植源码 阅读详情

相关推荐

基于ANSYS的电磁兼容仿真教程

最近,在做某系统的EMC仿真,使用ANSYS套件,对仿真学习做简要记录。本书简介与目录如下:本书配套有:视频教程+工程源文件+彩色仿真图片,下载链接如下:(审核中)第1章 基础知识1.1 电磁兼容基础​​​MS2、EMC三要素:3、 国际无线电干扰特别委员会标准:CISPR标准4、电磁兼容测试认证:传导发射(CE)、传导敏感度(CS)、辐射发射(RE)和辐射敏感度(RS)测试。

weixin_42508010的博客 2057

Codeforces Round #185 (Div. 2),D. Cats Transport

解题报告:Codeforces Round #185 (Div. 2),D. Cats Transport http://codeforces.com/contest/312/problem/D 题目描述: D. Cats Transport time limit per test 2 seconds memory limit per test 256 megabytes inpu

kevinkitty_love的专栏 1456

DRV8870电机驱动芯片原理与嵌入式多平台驱动开发

H桥电机驱动芯片是直流电机控制的核心硬件模块,其通过双MOSFET拓扑实现方向与速度的精确调控。工作原理基于电荷泵自举驱动、集成电流检测及多重硬件保护机制,技术价值体现在高集成度、宽压适配(4.5V–45V)与强鲁棒性。典型应用场景涵盖智能机器人执行器、工业自动化设备及电池供电移动终端。本文围绕DRV8870这一主流驱动芯片,深入解析其PH/EN与Dual PWM双控制模式、nFAULT故障响应机制,并结合Arduino/ESP32/STM32三大平台,提供可复用的跨MCU驱动库设计范式与FreeRTOS实

weixin_32251525的博客 657

【Codeforces Round #185 (Div. 1) B】 CodeForces 311B Cats Transport

斜率优化dp

YHaX的博客 781

适合初学者的ROS机器人教程(1): Ubuntu下ROS创建自己的包和使用github下载的包

ROS如何创建自己的包 1. 首先创建catkin工作空间(如果你以及有了请忽略) $ mkdir catkin_ws # 创建一个文件夹里面计划放我们的项目,ws是workspace的缩写 $ cd catkin_ws # 将当前工作文件夹切换到catkin_ws这个文件夹 ~/catkin_ws$ catkin_make # 执行catkin_make创建一ROS项目 此时你的catkin_...

@司南牧|知乎|博客|易懂教程|李韬 3245

飞书+扣子+DeepSeek三件套:5分钟搞定公众号文章批量改写(附完整配置截图)

本文详细介绍了如何利用飞书、扣子和DeepSeek三款工具,无需编程即可搭建一个高效的公众号文章批量改写自动化工作流。通过飞书多维表格管理链接与成果,扣子平台串联整个流程,并调用DeepSeek智能体进行内容润色与改写,实现从内容抓取到智能处理的完整自动化,大幅提升新媒体运营效率。

python9snake的博客 209

CF185 div1 B. Cats Transport(单调队列斜率优化dp)

CF185 div1 B. Cats Transport 题意:有m只小猫,n座山,p个员工。第i座山到跟前一座山的距离距离是d[i]。第i只小猫在第h[i]座山上玩,它玩好的时间是t[i]。然后p个员工从第1座山出发,一路过去,把玩好,在等待的小猫收起来。问小猫的最少等待时间和是多少。 解题思路:我们考虑第i只,和第j只小猫的选择,第i只小猫距离起点的距离为a[i](这个很容易预处理),它玩

No__stop 1800

【C#程序员入门AI】向量数据库入门:C#集成Chroma/Pinecone,实现AI知识库检索(RAG基础)

向量存语义,检索补知识!向量数据库:解决AI知识库存储和语义检索问题,让AI有据可查C#集成:Chroma轻量本地练手,Pinecone企业云端落地,一套逻辑无缝切换RAG闭环:检索+大模型,让AI回答精准不瞎编,是AI落地的必经之路咱C#程序员有.NET生态加持,集成向量数据库比Python更简洁、更稳定,不管是个人做智能助手,还是企业做知识库,这套技术栈都能直接落地,2026年必学技能!

人工智能AI技术 1003

【Codeforces Round #185 (Div. 2) D】Cats Transport

【链接】 链接 【题意】 有n座山,m只猫。 每只猫都在其中的一些山上玩。 第i只猫在h[i]山上玩,且会在t[i]时刻出现在山脚下(然后就一直在那里等) 然后有p个人。 它们听从你的安排。 在某个时刻从1号山出发,依次经过每座山,如果有猫在山脚。那么它会顺便把它们带走。 (山与山之间有距离,然后人移动的速度是1单位每秒) 每个人可以无限数量地拿猫。 问你所有猫的总等待时间的最...

AWCXV 90

思维链:让AI更接近人类思维的技术

本文将探讨一种名为“思维链”的技术,它旨在让AI更接近人类思维。文章首先介绍了问题背景与核心概念,接着讲解了算法原理和数学模型,随后阐述了系统分析与架构设计,最后通过项目实战展示了思维链的实际应用,并提供了最佳实践和小结。思维链是一种旨在模拟人类思维过程的技术,它通过构建一系列相互关联的思维方式,实现对复杂问题的分析和解决。思维链算法是一种基于人类思维过程的人工智能算法,它通过构建一系列思维链,实现对问题的分析和解决。智能问答系统是一种常见的人工智能应用,它能够回答用户提出的各种问题。

AI天才研究院 943

XXL-Job 分布式定时任务

XXL-JOB是一款轻量级分布式定时任务调度框架,采用调度中心与执行器分离架构,解决单机任务宕机、重复执行等问题。核心模块包括调度中心(管理任务配置、触发调度)和执行器(执行任务逻辑),支持集群部署保证高可用。框架提供丰富的任务触发规则、路由策略、阻塞策略及完善的运维能力,适用于多种业务场景如数据同步、定时推送等。安装时需准备MySQL数据库并初始化表结构,通过Docker部署调度中心服务。相比其他定时框架,XXL-JOB具有轻量化、可视化等优势,是中小企业的首选方案。

郭宝的博客 700

UVA 12524 Arranging Heaps 动态规划 斜率优化

定义dp[i][j]  代表在i这个地方放一个Heap , 从1到i这个区间一共放了n个heap,最小的cost。 很容易想到dp转移方程:dp[i][j]  = min {  dp[k][j-1] + cost ( k ,i) }   (  1 这是2d/1d的dp 还有优化余地。 展开转移方程:    dp[i][j] = min ( dp[k][j-1] +  (p[i].h

work_freedom的专栏 2322

3篇1章6节:R基础绘图之图形的保存和导出技巧

高质量图形导出是R语言用户在数据分析和科研工作中的重要技能。通过合理控制图形的分辨率、选择合适的颜色管理方案和文件格式,以及掌握批量保存图形的技巧,可以显著提升图形的展示效果和应用范围。这不仅有助于提高研究成果的展示质量,还能在各种专业场合中展现数据分析的精确性和美观性。

MD Code 1482

Codeforces Round #186 (Div. 2) D Ilya and Roads DP 单调优化

刚开始犯2去想肿么建图了。 dp还是很好想: 定义 dp[i][x]  表示从 1 到 i 被覆盖了x个洞需要的最小花费。转移方程很简单, 对于 j >i 的有:dp[j][  x + j-i ]  = min ( dp[j][  x + j-i ] , dp[i ][ x] + mincost( x+1,y));  这里的mincost(x+1,y)表示要完全覆盖 从x+1到 y这个

work_freedom的专栏 1185

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

sgu 225 Little Knights 状态压缩dp

这道题好无语呀,500ms时限,60m的内存。     如果没有内存限制,我们可以很容易的想到  DP[U][V][ROW][KNIGHT]   U 代表上一行的状态,V代表上上一行的状态。因为当前行只与前两行的状态有关。ROW代表行数,knight代表骑士数目。     然后dp就很简单了   DP【U】【V】【ROW】【KNIGHT】 = SUM(DP【V】【i】【ROW-1]【KNIGH

work_freedom的专栏 844

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

sgu 223 Little Kings 状态压缩dp

下一行的状态只受前面一行的影响。   先预处理出在一行中互相无冲突的状态,用数字来表示。比如 一行为3列,那没有冲突的状态就有:(1代表国王,0代表无) 0 0 0 --------> 0 0 1 0  -------->2 0 0 1  --------> 4 1 0 0 --------> 1 1 0 1  --------> 5 .... 这样列处理好了,就只用以行为阶段进行

work_freedom的专栏 763

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

ural 1078 Segments

可以将x轴的先有序化,也可将y轴的先有序化。     比如样例以x轴有序化后:  -3  3 ; -2 2; -1 1; 4 5;     现在以x轴从小到大枚举。 只需求出比当前 y轴数值大的 以前的y 所对应的包含个数的最大值即可。我是用线段树来寻找最大值。 #include #include #include #include #include #include #in

work_freedom的专栏 445

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 252

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 322

把 KV Cache 压到 FP4:BitDecoding-FP4 的算法-系统协同设计复盘

长上下文推理卡在KV Cache的显存与带宽上,而现有FP4方案要么精度崩、要么速度废。这篇文章复盘BitDecoding-FP4如何用三个算法补丁加一个系统重构,在B300上把服务吞吐提升2.4–3.0倍,精度几乎不掉。

helloagent的博客 301

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 596

优选算法:分治-归并排序

交易逆序对的总数

Wangshijie1015的博客 137

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 23

C语言程序设计题|有序数组插入数字冒泡排序

题目要求将一个数插入有序数组末尾,并用冒泡排序实现整体升序。代码先将输入数存入数组最后位置,再通过双重循环进行冒泡排序,每轮将较大元素向后移动,最终输出11个升序元素。该方法虽时间复杂度为O(n²),但符合题目要求,逻辑清晰,适合初学者理解排序原理。

2301_81429079的博客 751

408 算法 06|堆与 Top-K:最小的 10 个数,到底该用数组还是堆

2022(42) 找 100 万个数里最小的 10 个,官方给了"10 元素有序数组"和"大根堆"两种答案。我把两种都实现并数了比较次数:k=10 时两者几乎打平,k=10000 时堆少 111 倍。另附 2021(42) 计数排序的比较次数与稳定性实测。

m0_56226131的博客 358

牛客周赛165C题(前后缀性质,递推,排序,枚举)

题目大意:给定长度为 `n` 的数组,选择 `k ∈ [1,n]`,将前 `k` 个元素整体翻转,后面的元素不变。要求操作后的整个数组非递减,统计满足条件的 `k` 的数量。题目链接:https://ac.nowcoder.com/acm/contest/141721/C。时间复杂度:O(nlogn)

2501_94316951的博客 172
上一篇: UVA 12524 Arranging Heaps 动态规划 斜率优化
下一篇: hdu 2222 ac自动机
work_freedom
博客等级 码龄14年 5粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值