uva 1169 Robotruck(简单区间dp)
来源:互联网 发布:配音软件 语气 编辑:程序博客网 时间:2024/06/06 02:23
一个二位平面上有n个垃圾,现在用一个机器人去捡起来,且是按照输入顺序捡,放回位于原点处的垃圾桶中,两点之间的距离算曼哈顿距离,机器人的最大承重量为C,求捡完所有垃圾机器人走动的最小距离。
sumdis[i], sum weight[i]都表示前缀和。
dp[i]表示第i个捡完时的最小距离。
考虑某次见掉i与j之间的所有垃圾。
dp[i] = min{dp[i], dp[j-1] + sumdis[i] - sumdis[j] + dis[j] + dis[i]} && sumweight[i] - sumweight[j - 1] <= c;
dp[n]就是最后的结果。
/*****************************************Author :Crazy_AC(JamesQi)Time :2016File Name :*****************************************/// #pragma comment(linker, "/STACK:1024000000,1024000000")#include <iostream>#include <algorithm>#include <iomanip>#include <sstream>#include <string>#include <stack>#include <queue>#include <deque>#include <vector>#include <map>#include <set>#include <cstdio>#include <cstring>#include <cmath>#include <cstdlib>#include <climits>using namespace std;#define MEM(x,y) memset(x, y,sizeof x)#define pk push_back#define lson rt << 1#define rson rt << 1 | 1#define bug cout << "BUG HERE\n"typedef long long LL;typedef unsigned long long ULL;typedef pair<int,int> ii;typedef pair<ii,int> iii;const double eps = 1e-10;const int inf = 1 << 30;const int INF = 0x3f3f3f3f;const int MOD = 1e9 + 7;int nCase = 0;const int maxn = 100010;int n, c;int sumdis[maxn], sumweight[maxn];int dp[maxn];struct Node {int x, y, w;}a[maxn];int getdis(int i,int j) {return abs(a[i].x - a[j].x) + abs(a[i].y - a[j].y);}int main(){// freopen("in.txt","r",stdin);// freopen("out.txt","w",stdout);int t;scanf("%d",&t);while(t--) {scanf("%d%d",&c,&n);if (nCase) puts("");nCase++;for (int i = 1;i <= n;++i) {scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].w);sumdis[i] = sumdis[i - 1] + getdis(i, i - 1);sumweight[i] = sumweight[i - 1] + a[i].w;}for (int i = 1;i <= n;++i) {dp[i] = INF;for (int j = i;j >= 1;--j) {int w = sumweight[i] - sumweight[j - 1];if (w > c) break;int dis = getdis(0, j) + sumdis[i] - sumdis[j] + getdis(0, i);dp[i] = min(dp[i], dp[j - 1] + dis);}}printf("%d\n", dp[n]);}return 0;}
0 0
- uva 1169 Robotruck(简单区间dp)
- uva 1169 Robotruck (dp)
- uva 1169 - Robotruck(dp+单调队列)
- uva 1169 - Robotruck (单调队列优化dp)
- UVA 1169 Robotruck 单调队列优化 DP
- *UVA 1169Robotruck ACM解题报告(dp单调队列优化)
- UVA 1169 Robotruck(dp+单调队列滑动窗口)
- LA 3983 Robotruck(DP)
- UVA 10453 Make Palindrome(区间简单DP)
- Cellular Structure+uva+简单区间dp
- uva 10003 Cutting Sticks 简单区间dp
- uva 10003 Cutting Sticks dp(区间, 简单)
- UVA 1169 DP+单调队列优化 Robotruck 捡垃圾的机器人
- UVa 10891 (区间DP)
- UVALive - 3983 - Robotruck (DP+单调队列)
- LA3983-Robotruck(dp + 单调队列)
- dp 专题系列(二):LA3983 Robotruck,LA4794 Sharing Chocolate,LA4394 String Painter,LA4327 Parade,Uva 10817
- poj2955(简单区间dp)
- Android_gridView应用实例
- 关于注重驱动与中间层的分离
- nodejs 使用socket.io与网页实时数据交互
- 计算机的启动
- 第七届蓝桥杯省赛总结
- uva 1169 Robotruck(简单区间dp)
- Spring中Quartz调度器的使用
- NEFU 1002
- C#学习 - vs调试(采用异常处理来实现两个整数的和)
- [毕业设计]手写数字识别系统设计与实现
- HDU3501
- java第九节-异常
- 马士兵感言
- CentOS 7 中firewall-cmd命令