Food Delivery(区间DP)

Sourcetree与Gitee的完美协作:从身份验证到推送成功的全流程指南 本文提供了一份详细的Sourcetree与Gitee协作全流程指南,重点解决身份验证失败、Git版本配置及远端仓库设置等常见问题。通过分步讲解,帮助用户掌握从克隆、提交到成功推送的完整操作,并整合了使用个人访问令牌进行身份验证等关键热词信息,确保Windows与MacOS用户都能顺畅完成代码管理。 阅读详情

When we are focusing on solving problems, we usually prefer to stay in front of computers rather than go out for lunch. At this time, we may call for food delivery.

Suppose there are N people living in a straight street that is just lies on an X-coordinate axis. The ith person’s coordinate is Xi meters. And in the street there is a take-out restaurant which has coordinates X meters. One day at lunchtime, each person takes an order from the restaurant at the same time. As a worker in the restaurant, you need to start from the restaurant, send food to the N people, and then come back to the restaurant. Your speed is V-1 meters per minute.

You know that the N people have different personal characters; therefore they have different feeling on the time their food arrives. Their feelings are measured by Displeasure Index. At the beginning, the Displeasure Index for each person is 0. When waiting for the food, the ith person will gain Bi Displeasure Index per minute.

If one’s Displeasure Index goes too high, he will not buy your food any more. So you need to keep the sum of all people’s Displeasure Index as low as possible in order to maximize your income. Your task is to find the minimal sum of Displeasure Index.

Input

The input contains multiple test cases, separated with a blank line. Each case is started with three integers N ( 1 <= N <= 1000 ), V ( V > 0), X ( X >= 0 ), then N lines followed. Each line contains two integers Xi ( Xi >= 0 ), Bi ( Bi >= 0), which are described above.

You can safely assume that all numbers in the input and output will be less than 231 - 1.

Please process to the end-of-file.

Output

For each test case please output a single number, which is the minimal sum of Displeasure Index. One test case per line.

Sample Input

5 1 0
1 1
2 2
3 3
4 4
5 5

Sample Output

55

一个送外卖的小哥从x处出发,要送n个人家,每个人家有一个坐标xi和怒气值bi,每分钟怒气值增长bi,直到拿到饭为止,问最小的怒气值和为多少?

跟以前那个机器人修长城是一个题(我之前在博客写过),首先这是区间dp,假设i和j之间有个k,你是无法逾越k送给j再返回送给k,这样明显不是最优的,所以他始终是由区间内向外扩散的过程。
区间dp转移过程中,把其他人的怒气值加为总和乘以这一次送餐时间,才是到达这个状态的代价,就是在送i人时,把其他人在这个时间的怒气和提前计算在这个状态里(这句话要到代码中看)。
还有,这种题目有时候会卡初始化,所以从后向前写循环也不错。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<queue>
#include<vector>
#include<algorithm>
#include<string>
#include<cmath>
#include<set>
#include<map>
#include<vector>
#include<stack>
#include<utility>
#include<sstream>
using namespace std;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const int maxn = 1005;
ll n,v,x;
ll sum[1005];
ll dp[1005][1005][2];
struct Node
{
    ll x,b;
}node[1005];
void init()
{
    sum[0] = 0;
    for(int i = 1;i <= n;i++)
        sum[i] = sum[i - 1] + node[i].b;
}
ll dfs(ll l,ll r,ll leap)
{
    if(dp[l][r][leap] >= 0)return dp[l][r][leap];
    if(l == r)
    {
        return dp[l][r][leap] = sum[n]*abs(node[l].x - x)*v;
    }
    if(leap == 0)
    {
        dp[l][r][leap] = min(dfs(l + 1,r,0) + (sum[n] - (sum[r] - sum[l]))*(node[l + 1].x - node[l].x)*v,dfs(l + 1,r,1) + (sum[n] - (sum[r] - sum[l]))*(node[r].x - node[l].x)*v);
    }
    else
    {
        dp[l][r][leap] = min(dfs(l,r - 1,0) + (sum[n] - (sum[r - 1] - sum[l - 1]))*(node[r].x - node[l].x)*v,dfs(l,r - 1,1) + (sum[n] - (sum[r - 1] - sum[l - 1]))*(node[r].x - node[r - 1].x)*v);
    }
    return dp[l][r][leap];
}
bool cmp(Node a,Node b)
{
    if(a.x == b.x)return a.b < b.b;
    return a.x < b.x;
}
int main()
{
    #ifdef LOCAL
    freopen("C:\\Users\\巍巍\\Desktop\\in.txt","r",stdin);
    //freopen("C:\\Users\\巍巍\\Desktop\\out.txt","w",stdout);
    #endif // LOCAL
    while(scanf("%lld%lld%lld",&n,&v,&x) != EOF)
    {
        for(int i = 1;i <= n;i++)
            scanf("%lld%lld",&node[i].x,&node[i].b);
        for(int i = 1;i <= n;i++)
            for(int j = i;j <= n;j++)
            dp[i][j][0] = dp[i][j][1] = -1;
        sort(node + 1,node + 1 + n,cmp);
        init();
        printf("%lld\n",min(dfs(1,n,1),dfs(1,n,0)));
    }
    return 0;
}
Allegro快速编辑丝印文字操作指导 选择setup-Application Mode-placement edit。Allegro支持丝印文字的编辑,下面介绍快速编辑丝印文字的两种方法如下。这个功能还支持拷贝粘贴,可以从其它地方拷贝过来,免去了书写的麻烦。出现text edit窗口,输入自己需要的文字,点击ok。鼠标移动到丝印文字位置,文字会被高亮起来。Allegro快速编辑丝印文字操作指导。点击丝印文字,丝印会被高亮起来。选择Text edit 命令。输入需要更改后的文字,如下。右击选择text edit。以编辑下方丝印文字为例。 阅读详情

相关推荐

01. VBA从入门到精通——录制宏、窗口、快捷键

excel表功能区右击→常用→选择显示开发工具选项→确定Visual Basic:打开VBA窗口宏:查看要录制的宏录制宏:准备录制宏使用相对引用:录制宏的时候对单元格的引用做一个设置宏安全性:对宏的使用做安全设置,一般设置为禁用所有宏,并发出通知,此时打开带有宏代码的工作薄时会出现警告标记,如果宏可信就选择启动。

weixin_43812198的博客 1696

food delivery_创建自己的无缝应用:Food Delivery App功能

food delivery 开发像Seamless的Food Delivery移动应用 在曼哈顿渴望泰国美食? 从皇后区到波士顿和迈阿密,外送食品应用程序可以满足您的需求。 如今, 像Seamless这样的食品交付应用程序不亚于Tinder! 它易于使用,可满足您的口渴,并且可以在任何一天的任何地方访问。 除了没有滑动,只有一个滚动,点击并签出! 谈论按需点菜解决方案……这完全改变了我们...

编程故事的地方 2351

利用python求解规划问题

利用python中的cvxpy,sympy,scipy这三个库进行规划问题求解,本文中的例题均来自司守奎老师的python数学建模算法与应用

dashbaani的博客 1万+

Food Delivery (区间dp)

Description When we are focusing on solving problems, we usually prefer to stay in front of computers rather than go out for lunch. At this time, we may call for food delivery. Suppose there are N p...

CatDsy的博客 1409

HRnet的pytorch实现

HRnet的pytorch实现

奋土的博客 1953

软件设计师---UML

软件设计师---UML

我从不打没有准备的仗! 1万+

Food Delivery (区间DP)

When we are focusing on solving problems, we usually prefer to stay in front of computers rather than go out for lunch. At this time, we may call for food delivery. Suppose there areNpeople li...

weixin_30376509的博客 193

路径跟踪 | 图解纯追踪算法Pure Pursuit(附ROS C++/Python/Matlab仿真)

纯追踪算法(Pure Pursuit)参考了人类驾驶行为,其基本思想是在待跟踪路径上设置预瞄点(goal-ahead),通过简单的几何方法驱动机器人跟踪预瞄点直至抵达目标位置.本文详细推导纯追踪算法的理论原理及其变种——自适应纯追踪算法(APP)和规范化纯追踪算法(RPP),并提供ROS C++/Python/Matlab三种仿真实现加深理解

FRIGIDWINTER的博客 8406

校赛B - Food Delivery

#include &lt;iostream&gt; #include &lt;math.h&gt; #include&lt;cstdio&gt; #include&lt;cstring&gt; #include&lt;algorithm&gt; using namespace std; const int INF=0x3f3f3f3f; //无穷大 int a[1005]; int...

qq_41514794的博客 323

Android 15.0 Launcher3中去掉Hotseat功能实现

在15.0系统产品定制化开发中,在Launcher3的定制化需求也是特别多的,由产品是小屏幕的产品,所以产品需求Launcher3 页面布局的原因,要求Launcher3 需要去掉Hotseat 不显示Hotseat下面几个图标,而做满屏app的显示,从而达到美观的效果,下面就来分析去掉Hotseat从而实现这个功能

安卓兼职framework和app工程师的博客 554

[Python + UG NX 二次开发新手教程] 第五课 采用Python / UF 开发模式

在 NX 二次开发里看到的“UF”是的缩写,它是 Siemens 提供的集合,也是整个 NX Open 体系里最贴近内核、历史最悠久的一套接口。相当于 NX 的“系统调用”——只要 NX 能做的事,UF 几乎都能调得动。Siemens 从 NX 12 开始把原来的 C 接口(UF)全部打包进了官方 Python 模块,命名空间为 NXOpen.UF.*,所以只要 NX 安装目录里带了 NXOpen\UF 子模块,就能在 Python 里直接调用 UF 函数。

温良 1003

Food Delivery

题意:在同一时刻,有n个人同时点了外卖,人和店在同一直线上,外卖小哥每v秒走一米(人都要饿死了),现在每一个点餐人员每秒钟增加一定的怒气值,问外卖小哥送完所有人的外卖后怒气值最小为多少 我们先将所有点餐人员及饭店的坐标从小到大排好序,然后以饭店为中心,向外扩散,直到所有人都送完 dp[i][j][0] = min(dp[i][j][0], dp[i + 1][j][0] + (date[i+1].x - date[i].x) * (sum[n] - sum[j] + sum[i])); dp[i][j][0

donnameの博客 479

Python数据分析全流程指南:从数据采集到可视化呈现的实战解析

在数字化转型浪潮中,数据分析已成为企业决策的核心驱动力。Python凭借其丰富的生态库和简洁的语法,成为数据分析师的首选工具。本文将以实战案例为脉络,拆解数据分析全流程的关键环节,通过具体代码和场景说明如何用Python完成从数据采集到可视化呈现的完整链路。

这家伙很懒,什么都没有留下 1680

Food Delivery 区间dp

When we are focusing on solving problems, we usually prefer to stay in front of computers rather than go out for lunch. At this time, we may call for food delivery. Suppose there areNpeople living ...

weixin_34257076的博客 307

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

区间dp -- Food Delivery ZOJ - 3469

Food Delivery ZOJ - 3469 题意: 在一条笔直的街道上有有一个餐馆和 n 户居民,每户居民都会在餐馆订餐,餐馆的坐标为X,参观送餐的速度是1 / V,每户居民都有两个属性x、 b,分别表示自己在街道上的坐标、单位时间内对餐馆送餐速度焦虑值。请你规划一种送餐策略,求所有居民对餐馆最小的焦虑值。 思路: 每次出发有两种选择,要么向左走到第一个没被送餐的居民,或者向右走到第一个没被送餐的顾客。 把餐馆两边的居民分为左右(l、r)两个部分,并按距离由近到远排好序。 dp[l][r]

dajiangyou123456的博客 201

假人有限元模型

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

zoj 3469 Food Delivery (区间dp)

没想到还会回来写博客,算是回忆下把,来一道区间dp基础题。 题意:一个送外卖的从某个出发点送外卖,但是每个顾客地点都有一个不满意值,会随着时间每秒增加b[i],每个顾客地点都有一个距离,可以人为是在x轴上的坐标。现在问如何送外卖使得不满意度最小。 题解:好像做过,不过这次换了一个更优美的姿势过,记忆优化写起来会比较好写,而且姿势优美。 dp[i][j][pos]表示[l,r]区间的顾客都

ACM之梦 1115

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ZOJ 3469Food Delivery(区间DP)

ZOJ 3469Food Delivery(区间DP)

Dacc123的博客 838

Food Delivery zoj3469 区间dp

Description When we are focusing on solving problems, we usually prefer to stay in front of computers rather than go out for lunch. At this time, we may call for food delivery.Suppose there are N peop

xtulollipop 634

Food Delivery ZOJ - 3469(区间dp)

害,一道简单简单题居然搞了我一下午,我还是改不了不喜欢动笔的毛病,天天就想着能看出答案,我太难了,这个毛病一定要改,一直看着题目思维贼混乱,一混乱就不想写题目。 这题的题意也很有意思v是代表的是走1m所需要的时间 现在来解释一下这个区间dp的题,首先你得对坐标从小到大排个序吧?排序的时候得把餐厅加进去,套路,然后很容易想到的是dp[i][j]从i到j,但是转移的时候又不好转移了,因为dp[i][j]你不知道是从i+1转移来的,还是从j-1转移来的,所有就要考虑加一维数组了,dp[i][j][0/1],dp.

qcccc_的博客 210

ZOJ3469 Food Delivery(区间dp)

Description When we are focusing on solving problems, we usually prefer to stay in front of computers rather than go out for lunch. At this time, we may call for food delivery. Suppose there areNp...

邵光亮的博客 745

Food Delivery(区间 dp)

Food Delivery #include <cstring> #include <cstdio> #include <cmath> #include <algorithm> using namespace std; #define ll long long #define inf 0x3f3f3f3f ll sum[1200], dp[120...

百般回首曾经的相遇,留下的只是一缕残忆 496

ZOJ3469-Food Delivery【区间DP】

题意:就是一个外卖小哥要给n个人送外卖,第i个人在xi位置,每隔一分钟他们就会有不满值bi,让你求怎样送外卖才会使得总不满值最小。 思路:我们将小哥也当做其中一个人,然后对其排序,用dp[i][j][0] 表示送完这个区间后停留在i位置,dp[i][j][1]表示停留在j位置,可以得到状态方程 dp[i][j][0] = min(dp[i][j][0], dp[...

独钓门前月 355

ZOJ-3469 Food Delivery(区间dp)

F - Food Delivery  ZOJ - 3469  题意:在x轴上有n个客人,每个客人每秒增加的愤怒值不同。给出客人和餐厅的位置, 以及客人每分钟增加的愤怒值,和送餐行走一公里需要的时间,问送完n个客人的外卖最小愤怒值 题解:区间dp 先将所有客人的位置排序。 对于区间[i,j],可以发现:要走到i,必然是从i+1或者j出发才是最优的;同理j也是如此(

十分残念的博客 768

ZOJ 3469 Food Delivery / 区间DP

区间DP 这题也是看着别人的代码写下来的 效果也不是很大 鄙视下自己  主要是自己作业还没做完 心急了一点 还被人催着做C#实验 有空写一下记忆化搜索版本 区间DP一般都是dp[l][r] 表示l到r这段区域的最优值 然后区间逐渐扩大 可以写成递推的 也可以记忆化搜索 这题还要加一维 代表当前的位置实在区间的最左边还是最右边 dp[l][r][0]代表在最左边l的位置 可以从dp[l+1][

嗯。 1013

ZOJ 3469 Food Delivery(区间DP)

题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4255 题目大意: 在一条直线上,有一些需要送饭的顾客。每个客户有一个位置以及不满意度,他们的不满意度会随着时间的增加而增加。现在要送餐给所有的客户,要求能够使得送完以后顾客的不满意度最小。 思路: 区间DP。 这题我们首先要考虑送餐的方式。对于某一个

hahahaha 576

zoj 3469 Food Delivery 【区间dp】

题意:饭店要你给N个客户送食物,现在已经给出饭店的位置坐标X和N个客户的位置坐标x[]。已知这N个客户都有一个不开心系数d[],初始为0,以后每分钟会增加b[],直到食物送到为止。你的速度为v^-1每分钟。现在为了获得最大收益,你必须保证这N个客户的d[]之和最小。问你最小的d[]之和。 思路:设置dp[i][j]为区间[i, j]的最优解 首先可以用一个相当暴力的方案——枚举区间[i

世界很大 507
上一篇: TOYS(水解析)
下一篇: 1031 - Easy Game(博弈dp)
Techay
博客等级 码龄11年 11粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值