uvalive3983Robtruck
2024-05-20 06:00:01
题意:有n个垃圾,第i个垃圾坐标为(xi,yi)。有一个机器人按照编号从小到大哦捡起所有的垃圾并扔进垃圾桶,垃圾桶再远点。机器人手中垃圾总重量不能超过C,两点之间的距离为曼哈顿距离,求机器人行走的最短总路程
分析:d[i]=min{d[j]+dist2origin(j+1)+dist(j+1,i)+dist2origin(i)|j<=i, w(j+1,i)<=c}
里面可以写成函数f以简化计算
代码:
View Code
1 #include <stdio.h> 2 #include <algorithm> 3 using namespace std; 4 const int MAXN = 100000 + 10; 5 int x[MAXN], y[MAXN]; 6 int total_dist[MAXN], total_weight[MAXN], dist2origin[MAXN]; 7 int q[MAXN], d[MAXN]; 8 #define DEBUG 9 int func(int i){ 10 return d[i]-total_dist[i+1]+dist2origin[i+1]; 11 } 12 13 int main(){ 14 #ifndef DEBUG 15 freopen("in.txt", "r", stdin); 16 #endif 17 int T, c, n, w, front, rear; 18 scanf("%d", &T); 19 while(T--){ 20 scanf("%d%d", &c, &n); 21 total_dist[0] = total_weight[0] = x[0] = y[0] = 0; 22 int i; 23 for(i=1; i<=n; i++){ 24 scanf("%d%d%d", &x[i], &y[i], &w); 25 dist2origin[i] = abs(x[i])+abs(y[i]); 26 total_dist[i] = total_dist[i-1] + abs(x[i]-x[i-1])+abs(y[i]-y[i-1]); 27 total_weight[i] = total_weight[i-1] + w; 28 } 29 front = rear = 1; 30 for(i=1; i<=n; i++){ 31 while(front<=rear && total_weight[i]-total_weight[q[front]]>c) front++; 32 d[i]=func(q[front])+total_dist[i]+dist2origin[i]; 33 while(front<=rear && func(i)<=func(q[rear])) rear--; 34 q[++rear] = i; 35 } 36 printf("%d\n", d[n]); 37 if(T>0) printf("\n"); 38 } 39 return 0; 40 }
今天感觉做题目不很在状态,直接看了训练指南上的分析。。
最新文章
- php BC高精确度函数库
- MySQL中的重做日志(redo log),回滚日志(undo log),以及二进制日志(binlog)的简单总结...
- 用Unity3D实现简单的牧师与魔鬼游戏
- 虚拟机上php5.6安装教程,手把手安装linux虚拟机教程
- C++描述杭电OJ 2017.字符串统计||
- Deppin系统软件打开备注
- 深度学习自学(二十三):CAFFE-TF环境安装问题-兼容多个CUDA
- NOIP2018初赛 解题报告
- DW-32-rec_sys-Task04
- 如何制作win7 U盘安装盘
- 知识点滴 - 有关剧本的网站
- JC-1、python学习笔记
- 小心肝队-冲刺日志(第八天)
- 状态模式教你学会清蒸鲤鱼
- 一次性消费品商城小程序开发,生活更便捷
- ati linux驱动下载,安装 ATI 驱动 for linux
- Redhat7升级内核(含安装yum)
- 2019-12-20
- 【Python】豆瓣FM API分析
- oracle数据库dbmon授权,Oracle数据库监控软件 MyDBMon 工具 下载 系统
热门文章
- 怎样调整input框背景颜色_还在用百度搜索PPT背景图?7个高大上的图片网站,个个都是高清免费无版权!...
- 计算机作业老师会批改吗,小学和初中生家长每天都按照老师的要求批改作业吗?...
- win10安装mysql报错——无法项识别为 cmdlet、函数、脚 本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
- Ubuntu安装C++环境(VsCode 编译器)
- 7-8 黑洞数 (20 分)
- 1031 查验身份证 (15 分)—PAT (Basic Level) Practice (中文)
- RK3288_Android7.1接eDP屏休眠之后led状态灯没有亮红色
- 【CF734F】Anton and School(构造)
- ios中UIView和CALayer关系
- 世界是数字的读后感: