Problem3077--机器人卡车[Robotruck,LA3983]

3077: 机器人卡车[Robotruck,LA3983]

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 0  Solved: 0
[Status] [Submit] [Creator:]

Description

这是一个关于机器人卡车在工厂中配送邮件包裹的问题。


机器人坐在邮件办公室里传送机的尾端,等待包裹进入货物区域。机器人有一个最大负载量,也就是说,如果超过最大负载量,它需要往返多次才能完成任务;如果不超过最大承载量,机器人可以随时停止传送机,然后开始派送包裹。
整个工厂可以看做是一个巨大的网格,机器人派送包裹的过程中,一个往返配送的距离,是通过机器人在网格中移动的距离来测量的。机器人派送时是从邮件办公室作为起点的,邮件办公室的位置是(0,0),机器人一次可以向垂直方向或者水平方向移动一个单元的距离。
那么一次配送往返的距离=机器人从邮件办公室出发到达第一个包裹的配送位置过程中的移动次数 + 各个包裹配置位置之间的移动次数 + 从最后一个包裹配送位置返回到邮件办公室移动次数


举例说明:
假设有四个包裹,这四个包裹被分发的位置分别是(1,2)(1,0)(3,1)(3,1),将这四个包裹分两个往返配送,一次配送两个,那么第一次配送的移动的次数是3+2+1=6,第二次配送行程中移动的次数是4+0+4=8(因为第二次配送的两个包裹在同一个位置,所以它们之间的移动次数是0)。所以本次配送移动的总距离是6+8=14


给定一个包裹的序列,请计算出要完成所有的包裹配送,机器人需要移动的最小的距离。

Input

输入包含多组测试数据。输入的第一行是一个整数T,表示测试数据的组数。每组测试数据前都有一个空白行。
对于每组测试数据:
第一行是一个整数C,表示机器人最大的承载量。C≤100
第二行是一个整数N,表示要派送的包裹的总量。N≤100000
接下来N行,每行三个整数,前两个整数表示这个包裹在网格中的要被派送的坐标位置,第三个整数表示这个包裹的重量。
输入中包裹的顺序,就是包裹从传送机上传送过来的顺序。

Output

对于每组测试数据,输出一行,一个整数,表示机器人完成所有的包裹配送需要移动的最小的距离。每两组测试输出之间用一个空行隔开

Sample Input Copy

1


10
4 
1 2 3 
1 0 3 
3 1 4 
3 1 4

Sample Output Copy

14

Source/Category