zoj 1196 Fast Food 变种区间dp

别再手动指定审批人了!用Flowable流程表达式,5分钟搞定RuoYi请假流程自动派单 本文详细介绍了如何利用Flowable流程表达式在RuoYi框架中实现请假流程的自动派单,告别手动指定审批人的低效操作。通过解析Flowable表达式机制、RuoYi集成实践及BPMN设计器配置,帮助开发者快速实现智能审批流程,大幅提升OA系统效率。 阅读详情

好吧,其实我觉得这个题在一开始想的时候与区间dp还是有点差别的……虽然写出来跟区间dp确实差不多

Fast Food

Time Limit: 2 Seconds      Memory Limit: 65536 KB

The fastfood chain McBurger owns several restaurants along a highway. Recently, they have decided to build several depots along the highway, each one located at a restaurant and supplying several of the restaurants with the needed ingredients. Naturally, these depots should be placed so that the average distance between a restaurant and its assigned depot is minimized. You are to write a program that computes the optimal positions and assignments of the depots.

To make this more precise, the management of McBurger has issued the following specification: You will be given the positions of n restaurants along the highway as n integers d1 < d2 < ... < dn (these are the distances measured from the company's headquarter, which happens to be at the same highway). Furthermore, a number k (k <= n) will be given, the number of depots to be built.

The k depots will be built at the locations of k different restaurants. Each restaurant will be assigned to the closest depot, from which it will then receive its supplies. To minimize shipping costs, the total distance sum, defined as

must be as small as possible.

Write a program that computes the positions of the k depots, such that the total distance sum is minimized.


Input

The input file contains several descriptions of fastfood chains. Each description starts with a line containing the two integers n and k. n and k will satisfy 1 <= n <= 200, 1 <= k <= 30, k <= n. Following this will n lines containing one integer each, giving the positions di of the restaurants, ordered increasingly.

The input file will end with a case starting with n = k = 0. This case should not be processed.


Output

For each chain, first output the number of the chain. Then output a line containing the total distance sum.

Output a blank line after each test case.


Sample Input

6 3
5
6
12
19
20
27
0 0


Sample Output

Chain 1
Total distance sum = 8



题意:在一条路上有n个餐馆,n个餐馆的位置给出,现在让你建k个仓库,每个餐馆会由最近的仓库进货,进货的代价为pos餐馆-pos仓库。现在让你计算最小的总进货代价

思路:一开始想到的是用区间合并的方法,这个问题相当于将n个递增的数划分进k个集合,在每个集合里可以很容易想到在序号最中间的餐馆建仓库是最优的,假设这个区间是(i,j)那么在(i+j)/2是最优的,如果往左移动x个单位,那么所有右边的餐馆都加上x个单位,但是左边减去的代价是小于等于x*左边餐馆数的,往右同理。所以在(i+j)/2位置建仓库一定是代价最小的一种情况。但是如果枚举区间的话,最多有c(199,29)种情况,这肯定是超时的。

           这时就想到用dp优化了,设dp[i][j]为前i个餐馆建j个仓库的最小代价,那么转移方程就可以写为dp[i][j]=min{dp[i][j],dp[k][j-1]+dis[k+1][i],k=j-1,j……i-1},(dis[i][j]表示在i,j间建立仓库所需的最小代价),其实跟区间dp的思想一样,枚举出分割餐馆的k,前一部分用已求出的dp[k][j-1]得出,后一部分再用dis数组得出。至于求dis数组,只要200*200*200的复杂度,是不会超时的。

       代码如下:

       

#include<stdio.h>
#include<string.h>
#include<algorithm>
int dp[202][31],dis[202][202],map[202];
int main()
{
	int i,j,k,m,n,t;
    t=0;
	while(~scanf("%d%d",&n,&k))
	{ memset(dp,0,sizeof(dp));
	  memset(dis,0,sizeof(dis));
	  if(n==0 && k==0)break;
	  t++;
	  printf("Chain %d\n",t);
	  for(i=1;i<=n;i++)
	   scanf("%d",&map[i]);
	  for(i=1;i<=n;i++)
	   for(j=1;j<=n;j++) 
	    {   int sum=0;
	    	int temp=(i+j)/2;
	    	for(int i1=i;i1<temp;i1++)sum+=(map[temp]-map[i1]);
	    	for(int i1=temp+1;i1<=j;i1++)sum+=map[i1]-map[temp];
	    	dis[i][j]=sum;
		}
	  for(i=1;i<=n;i++)dp[i][0]=0x1f1f1f;	
	  for(i=1;i<=n;i++)
	    for(j=1;j<=i && j<=k;j++)
		 {
		 	 dp[i][j]=0x1f1f1f;
			 for(int k1=j-1;k1<=i-1;k1++)
			  if(dp[k1][j-1]+dis[k1+1][i]<dp[i][j])
			   dp[i][j]=dp[k1][j-1]+dis[k1+1][i];  
			 }
	 printf("Total distance sum = %d\n\n",dp[n][k]);		 	
	}
	return 0;
 } 


dp是世界上最好的算法!!!

ANSYS ICEM CFD 2023R2 结构化网格实战:翼型绕流 10 步生成高质量六面体网格 在计算流体力学(CFD)分析中,网格质量直接决定了仿真结果的精度和收敛性。对于翼型绕流这类典型的外部流动问题,结构化网格因其规则的节点排列和优异的边界层捕捉能力,成为高精度模拟的首选方案。通过在后缘处添加局部H型拓扑,并将过渡区增长率降至1.1,最终使网格质量指标提升40%,计算收敛速度提高2倍。这印证了结构化网格在复杂流动模拟中的不可替代性——虽然初期投入时间较多,但能显著提升计算精度和稳定性。在开始网格划分前,合理的几何准备是确保后续流程顺利的关键。对于翼型绕流,O型网格拓扑能提供最佳的边界层适应性。 阅读详情

相关推荐

Oracle迁移至华为GaussDB SQL语法和存储过程转换

在将Oracle数据库迁移至GaussDB时,SQL语法和存储过程的转换是确保应用程序正常运行和数据完整性的关键环节。由于两者在数据类型、函数、过程语言等方面存在差异,必须系统化地进行转换和测试。正则表达式脚本:批量替换常见的语法差异。SQL解析工具:解析SQL脚本,生成GaussDB兼容的语法。代码审查工具:自动检查转换后的代码,确保语法和逻辑正确。将Oracle迁移至GaussDB涉及到SQL语法和存储过程的全面转换。通过系统化的转换步骤、使用合适的工具并结合手动调整,可以确保迁移过程的顺利进行。

weixin_38428874的博客 2396

HDU 1227 Fast Food(简单二维dp)

题意是在n个餐厅之间选择k个地方修建仓库使得,各个餐厅到仓库的距离和最小。 dp[i][j] = min{dp[i][j], dp[i-1][m]+w[m+1][j]}。i表示仓库数目,j表示第几个餐厅。状态转移方程式的意思是:到达j的时候区间(i,j)上所拥有的最小的值。到达j的时候可以选择j位置上不修建仓库dp[i][j] = dp[i][j]。或者选择修仓库那么之前已经有i-1个仓库修建好

I am a slow walker, but I never walk backwards! 1152

校园网改造实录:手把手教你用华为MA5800 OLT调试全光网(附常用排错命令)

本文详细记录了校园全光网改造中华为MA5800 OLT的部署与调试过程,涵盖设备选型、基础配置、ONU批量部署及高频故障排查。通过实战案例和排错命令,帮助网络工程师快速掌握全光网调试技巧,实现低延迟、高稳定的网络性能。

weixin_42552716的博客 572

UVA - 662 Fast Food 区间dp

问题 https://vjudge.net/problem/UVA-662 分析 和上一题UVA607很像,记录一下最优解的状态就行了,另外 区间【l,r】之间的最优点是(l+r)/2,这一点画图就可以看出来 代码 #include <iostream> #include <cstdio> #include <cmath> #include <cstring> #include <map> #include <string> #incl

zpf1998的博客 237

Dynamics 365 On-Premise Server v9.0部署体验

期盼已久的Dynamics 365 On-Premise的版本升级终于在11月初姗姗来迟。 11月2日起已经可以在官方渠道下载正式版的Dynamics 365 Server v9.0安装文件,版本号9.0.2,随手附上中文版安装文件下载地址。 想必已经有不少小伙伴开始尝试各种升级、安装了吧。 Dynamics 365 On-Premise的安装过程,度娘一下已经有很多了,这里就不赘述了,只是...

Roger的专栏 2137

IMDb影评数据集:从下载到情感分析实战指南

本文提供了IMDb影评数据集从下载、探索到情感分析建模的完整实战指南。详细介绍了数据预处理、TF-IDF向量化方法,并对比了逻辑回归、随机森林、SVM及LSTM深度学习模型在情感分析任务上的应用与效果评估,帮助读者系统掌握自然语言处理的核心流程。

weixin_29052717的博客 448

(HDU1227)Fast Food(DP)

どこでもドア:http://acm.hdu.edu.cn/showproblem.php?pid=1227 一共有n个商店,有k个仓库,设计仓库位置,使每个商店到,离当前商店最近,的一个仓库的距离和最小。 code#include<bits/stdc++.h> using namespace std; typedef long long LL; const int INF = 0x3f3f3f3

ROOM 390

脑电数据预处理八:基于 ICA 的伪迹去除

摘要: 脑电图(EEG)数据分析中,伪迹(如眼电、心电、肌电)与脑电信号频谱重叠时,独立成分分析(ICA)成为有效工具。ICA通过盲源分离将混合信号分解为统计独立的成分,识别并移除伪迹后重建干净信号。MNE-Python实现步骤包括:数据预处理(滤波、坏导处理)、ICA分解、人工与自动结合识别伪迹成分、剔除后重建数据。实践建议强调人工检查的重要性,避免过度使用ICA,并保存模型以提高效率。该方法显著提升数据质量,为后续分析奠定基础。

qq_32516809的博客 1658

HDU 1227 Fast Food (DP)

题意 : 有n个饭店,要求建k个供应点,要求每个供应点一定要建造在某个饭店的位置上,然后饭店都到最近的供应点拿货,求出所有饭店到最近的供应点的最短距离。 思路 : 状态转移方程:dp[i][j] = dp[i-1][k-1]+dis[k][j](i #include #include #include #include using namespace std; const

Ezereal的博客 339

国民技术N32G45X SysTick定时器实战:从1us到100ms的精准延迟实现(附完整代码)

本文详细解析了国民技术N32G45X芯片中SysTick定时器的工作原理,并提供了从1微秒到100毫秒的高精度延迟实现方案。通过对比官方库函数的局限性,文章重点介绍了无中断查询模式、时钟源选择策略以及完整的代码实现,帮助嵌入式开发者精准控制时序,适用于LED控制、软件模拟通信协议等多种实战场景。

weixin_29190573的博客 372

【人工智能时代】-什么是MCP?本地如何开发MCP Server

MCP(Model Context Protocol)全称模型上下文协议,是由 Anthropic 推出的一种开放标准,旨在统一大型语言模型(LLM)与外部数据源和工具之间的通信协议。掌握更多的信息控制更多的工具在没有联网搜索之前,大模型的数据来源只有训练数据的时候以及推理我们告诉他的东西。所以后来的rag、知识库都是让AI掌握更多的信息,而MCP的出现是为了让大模型控制更多的工具,赋予更多能力。在本篇文章中,基于 Python 完成了一个简单的 MCP Server 的开发。

xiaoli8748的专栏 1984

ZOJ 1196 Fast Food 动态规划

题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1196 设想状态p(n,k)表示n个店前建k个仓库的最优距离 p(n,k)=min(p(i,k-1)+mindis(i+1,n))  //其中k-1 即我们求出0到i间建设k-1个供应站, 加上i, n之间建一个供应站的最小值. 0到i 有变成了

fofu33的专栏 1551

【NI Multisim 14.0编辑环境——项目管理器】

主窗口包括标题栏、菜单栏、工具栏、工作区域、电子表格视图(信息窗口)、状态栏及项目管理器7个部分。 上期我们了解了工具栏,今天我们继续了解项目管理器。 一、项目管理器 在原理图设计中经常用到的工作面板有“设计工具箱”面板、“SPICE网表查看器”面板及“LabVIEW 协同仿真终端”面板。 1.“设计工具箱”面板 基本位于工作界面左侧,主要用于层次电路的显示。启动软件,默认创建的“设计1”以分层的形式显示出来。 那么如何打开“设计工具箱”面板呢?如图所示:在该面板中显示 SPICE 网表的输入,输出

RL2698853114的博客 2035

zoj 1196 Fast Food

zoj 1196 Fast Food 这道题就是个水题,经典动态规划: 石子合并 #include #include #include #include using namespace std; const int maxn=210; const int inf=0x3fffffff; typedef long long ll; ll dp[40][maxn],w

态度决定高度 695

OV9734 DATASHEET,完整规格书

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

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

HOJ 1005 ZOJ 1196 Fast food

初拿到这道题是一个多月前的事了。当时

两叶妒人,一鹭别江 725

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

求把一个序列分为两个两组,两组各自和相差最小的最大的那个和

输入:每组序列个数 序列           如           5           1 3 3 3 7           6            4 1 4 4 15 4 输出:           9           16 分析: 一开始因为每个数有可能分到第一组,也可能分到第二组。所以一开始想的是深度搜索。但是            显然时间会超出。后

fofu33的专栏 1697

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

ZOJ1196-Fast Food

#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { int i, j, m; int d[202]; int n, k; int cost[202][202]; int dis[205][205]; int temp; int number =1; wh...

zjutsunny的博客 251

hdu1227 Fast Food--DP

原题链接: http://acm.hdu.edu.cn/showproblem.php?pid=1227 一:原题内容 Problem Description The fastfood chain McBurger owns several restaurants along a highway. Recently, they have decided to build

半壶老酒 807

【DP|数学+预处理】HDU-1227 Fast Food

在n个点上选择k个点设为基地向n个点运送物资,使得运送物资的距离之和最小。

JSure的代码库 1398

hdu 1227 Fast Food(DP线性决策)

Fast Food Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 1403    Accepted Submission(s): 609 Problem Description The fastfood chain

nealgavin的专栏 630

HDU 1227 Fast Food(经典DP)

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1227 题意:在n个饭店之间选m个攻击点,使每个饭店到他的供给点的总路程的值最小 思路:在i到j这几个饭店之间建设一个供给站,供给站必须建在i到j中间的一个才能保证值最小,dp[i][j]表示在前j个饭店之间建设i个供给点 AC代码: #include #include #include

Java识堂,一个有干货的微信公众号 495

hdoj Fast Food (单线DP)n个超市中选m个建仓库使距离最短

Fast Food Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2535    Accepted Submission(s): 1078 Problem Description The fastfood chain M

yanghui07216的博客 983

ZOJ题目分类

ZOJ题目分类 初学者题: 1001 1037 1048 1049 1051 1067 1115 1151 1201 1205 1216 1240 1241 1242 1251 1292 1331 1334 1337 1338 1350 1365 1382 1383 1394 1402 1405 1414 1494 1514 1622 1715 1730 1755 1760 1763

狂奔的蜗牛 8566

dp问题之fast food

对于这个问题我刚开始看时,感觉没有思路,不过让我想到了了中位数,但是中位数只有一个但是这道题不只有一个,涉及商店和仓库,应该是二位dp 用dp[i][j]表示,但是i和j分别代表什么?值得考虑一下,可以让i表示仓库,j表示商店,而dp的表示前j个商店有i个仓库的所有距离和,则第i-1个仓库(即之前的一个状态)假设在第k个,要不要选这个仓库,得比较一下选前与选后距离和的变化如果选了的话如何来表示呢?迎来第二个难题,这个思想来源是中位数思想,第k+1个到j个(即第i个仓库要不要选)如果选了的话与当前的dp值在

acm菜鸟进阶 193

ACM 各大OJ平台以及题目分类

Online Judge系统(简称OJ)是一个在线的判题系统。用户可以在线提交程序多种程序(如C、C++)源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。 程序:   一个用户提交的程序在Online Judge系统下执行时将受到比较严格的限制,包括运行时间限制,内存使用限制和安全限制等。用户程序执行的结果将被Online Judge系统捕捉并保存,然后再转

偏执 1万+
上一篇: poj1141Brackets Sequence 区间dp+输出路径
下一篇: cf 670D2 Magic Powder - 2 二分裸题
ctrss
博客等级 码龄11年 1粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值