https://vjudge.net/problem/ZOJ-3469

题意:
在一条直线上有一个餐厅和n个订餐的人,每个人都有随时间上升的不满意值,从餐厅出发,计算出送完时最小的不满意值总和。

思路:
这道题和UVa 1632这道题目很像,只不过1632可以从任一点出发,而这题必须从餐厅出发。1632每个坐标几秒之后就会消失,这题是每分钟不满意值会上升,比较类似,都是挺不错的区间DP题。

d[i][j][0]代表的是在送完i~j这个区间的最小不满意值,并且此时人处于左端,d[i][j][1]则是人处于右端。

状态转移的话看代码吧,d[i][j][]的话可以从d[i+1][j][]过来,也可以从d[i][j-1][]过来。

 #include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std; #define INF 0x3f3f3f3f
const int maxn = + ; int n, v, x; struct node
{
int x, b;
}p[maxn]; int sum[maxn];
int d[maxn][maxn][]; bool cmp(node a, node b)
{
return a.x < b.x;
} int main()
{
//freopen("D:\\txt.txt", "r", stdin);
while (cin >> n >> v >> x)
{
for (int i = ; i < n; i++)
cin >> p[i].x >> p[i].b; //出发点
p[n].x = x;
p[n].b = ;
sort(p, p + n +, cmp); for (int i = ; i <= n; i++)
for (int j = ; j <= n; j++)
d[i][j][] = d[i][j][] = INF; //前i个顾客的不满意度之和
sum[] = p[].b;
for (int i = ; i <= n; i++)
{
sum[i] = sum[i - ] + p[i].b;
} int k;
for (int i = ; i <= n; i++)
{
if (p[i].x == x)
{
d[i][i][] = d[i][i][] = ;
k = i;
break;
}
} for (int i = k; i >= ;i--)
for (int j = k; j <= n; j++)
{
if (i == j) continue;
d[i][j][] = min(d[i][j][], d[i + ][j][] + (p[i + ].x - p[i].x)*(sum[n] + sum[i] - sum[j]));
d[i][j][] = min(d[i][j][], d[i + ][j][] + (p[j].x - p[i].x)*(sum[n] + sum[i] - sum[j]));
d[i][j][] = min(d[i][j][], d[i][j - ][] + (p[j].x - p[j - ].x)*(sum[n] - sum[j - ] + sum[i - ]));
d[i][j][] = min(d[i][j][], d[i][j - ][] + (p[j].x - p[i].x)*(sum[n] - sum[j - ] + sum[i - ]));
}
cout << min(d[][n][], d[][n][])*v << endl;
}
}

ZOJ 3469 Food Delivery(区间DP)的更多相关文章

  1. ZOJ 3469 Food Delivery 区间DP

    这道题我不会,看了网上的题解才会的,涨了姿势,现阶段还是感觉区间DP比较难,主要是太弱...QAQ 思路中其实有贪心的意思,n个住户加一个商店,分布在一维直线上,应该是从商店开始,先向两边距离近的送, ...

  2. zoj 3469 Food Delivery 区间dp + 提前计算费用

    Time Limit: 2 Seconds      Memory Limit: 65536 KB When we are focusing on solving problems, we usual ...

  3. ZOJ - 3469 Food Delivery (区间dp)

    When we are focusing on solving problems, we usually prefer to stay in front of computers rather tha ...

  4. ZOJ 3469 Food Delivery(区间DP好题)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4255 题目大意:在x轴上有n个客人,每个客人每分钟增加的愤怒值不同. ...

  5. ZOJ 3469Food Delivery(区间DP)

    Food Delivery Time Limit: 2 Seconds      Memory Limit: 65536 KB When we are focusing on solving prob ...

  6. ZOJ3469 Food Delivery —— 区间DP

    题目链接:https://vjudge.net/problem/ZOJ-3469 Food Delivery Time Limit: 2 Seconds      Memory Limit: 6553 ...

  7. [ZOJ]3541 Last Puzzle (区间DP)

    ZOJ 3541 题目大意:有n个按钮,第i个按钮在按下ti 时间后回自动弹起,每个开关的位置是di,问什么策略按开关可以使所有的开关同时处于按下状态 Description There is one ...

  8. ZOJ3469 Food Delivery 区间DP

    题意:有一家快餐店送外卖,现在同时有n个家庭打进电话订购,送货员得以V-1的速度一家一家的运送,但是每一个家庭都有一个不开心的值,每分钟都会增加一倍,值达到一定程度,该家庭将不会再订购外卖了,现在为了 ...

  9. ZOJ 3469 Food Delivery (区间DP,经典)

    题意: 在x轴上有一家外卖餐馆,有n个顾客站在x轴上不同坐标上且叫了外卖,每个人的脾气不同,每1分钟没有收到外卖就会增加Fi点愤怒值,而外卖小哥的车是有速度的v-1/分钟,问怎样的送餐次序会让所有顾客 ...

随机推荐

  1. 部署MyEclipse及Tomcat服务器

     修改MySQL文件工程密码 Tomcat6.12\webapps\SmsService\WEB-INF\applicationContext.xml目录下的数据库密码 <property na ...

  2. api文档生成器apidoc的安装和使用

    在开发接口的过程中,需要向外发布相应的接口文档.开始的时候使用word来写文档,时间长了发现有几个问题. 1. 编写不方便.每次新增借口的时候都要复制上一个接口,然后再进行修改,一些相同的部分无法复用 ...

  3. 支持向量机:Numerical Optimization,SMO算法

    http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988419.html 另外一篇:http://www.cnblogs.com/vivouni ...

  4. [LintCode] 394. Coins in a Line_ Medium tag:Dynamic Programming_博弈

    Description There are n coins in a line. Two players take turns to take one or two coins from right ...

  5. np.repeat 与 np.tile

    1.Numpy的 tile() 函数,就是将原矩阵横向.纵向地复制.tile 是瓷砖的意思,顾名思义,这个函数就是把数组像瓷砖一样铺展开来. 举个例子,原矩阵: import numpy as np ...

  6. python ddt 实现数据驱动一

    ddt 是第三方模块,需安装, pip install ddt DDT包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据) 通常情况下,data中的数据按照一个参数传递给测试用例,如果da ...

  7. Selenium Webdriver——操作隐藏的元素(三)switchTo().frame()

    在web 应用中经常会遇到frame 嵌套页面的应用,页WebDriver 每次只能在一个页面上识别元素,对于frame 嵌套内的页面上的元素,直接定位是定位是定位不到的.这个时候就需要通过switc ...

  8. EF6添加mysql的edmx实体时报错:无法生成模型:“System.Data.StrongTypingException: 表“TableDetails”中列“IsPrimaryKey”的值为 DBNull

    EF6.1.3 ,使用mysql5.7的实体数据模型时,提示: 由于出现以下异常,无法生成模型:“System.Data.StrongTypingException: 表“TableDetails”中 ...

  9. JS中的对象数组

    <html> <head> <title>对象数组的字符串表示</title> <script type="text/javascrip ...

  10. 007-配置IP和DNS

    2.配置DNS. 3.