思路:

枚举第一个点集中起点是哪个。 因为第i个点集总和第i-1个点集和第i+1个点集相连。 我们就可以DP求出最优解了。

f[i][j]=min(f[i][j],f[i-1][k]+dis(i,j,i-1,k));

// by SiriusRen
#include <cmath>
#include <cstdio>
#include <algorithm>
using namespace std;
int n,num[105];
double f[105][44],ans=0x3ffffff;
struct Point{int x,y;}point[105][44];
double dis(int x1,int y1,int x2,int y2){
double tempx=1.0*(point[x1][y1].x-point[x2][y2].x)*(point[x1][y1].x-point[x2][y2].x);
double tempy=1.0*(point[x1][y1].y-point[x2][y2].y)*(point[x1][y1].y-point[x2][y2].y);
return sqrt(tempx+tempy);
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&num[i]);
for(int j=1;j<=num[i];j++)
scanf("%d%d",&point[i][j].x,&point[i][j].y);
}
for(int l=1;l<=num[1];l++){
for(int i=1;i<=n;i++)
for(int j=1;j<=num[i];j++)
f[i][j]=0x3ffffff;
f[1][l]=0;
for(int i=2;i<=n;i++)
for(int j=1;j<=num[i];j++)
for(int k=1;k<=num[i-1];k++)
f[i][j]=min(f[i][j],f[i-1][k]+dis(i,j,i-1,k));
for(int i=1;i<=num[n];i++)
ans=min(ans,f[n][i]+dis(n,i,1,l));
}
printf("%d\n",int(ans*100));
}

POJ 2137 DP的更多相关文章

  1. hdu 1513 && 1159 poj Palindrome (dp, 滚动数组, LCS)

    题目 以前做过的一道题, 今天又加了一种方法 整理了一下..... 题意:给出一个字符串,问要将这个字符串变成回文串要添加最少几个字符. 方法一: 将该字符串与其反转求一次LCS,然后所求就是n减去 ...

  2. poj 1080 dp如同LCS问题

    题目链接:http://poj.org/problem?id=1080 #include<cstdio> #include<cstring> #include<algor ...

  3. poj 1609 dp

    题目链接:http://poj.org/problem?id=1609 #include <cstdio> #include <cstring> #include <io ...

  4. POJ 1037 DP

    题目链接: http://poj.org/problem?id=1037 分析: 很有分量的一道DP题!!! (参考于:http://blog.csdn.net/sj13051180/article/ ...

  5. Jury Compromise POJ - 1015 dp (标答有误)背包思想

    题意:从 n个人里面找到m个人  每个人有两个值  d   p     满足在abs(sum(d)-sum(p)) 最小的前提下sum(d)+sum(p)最大 思路:dp[i][j]  i个人中  和 ...

  6. poj 1485 dp

    转自:http://www.cnblogs.com/kuangbin/archive/2011/11/12/2246407.html [题目大意] 一条公路上有n个旅馆,选出其中k个设置仓库,一个仓库 ...

  7. POJ 3017 DP + 单调队列 + 堆

    题意:给你一个长度为n的数列,你需要把这个数列分成几段,每段的和不超过m,问各段的最大值之和的最小值是多少? 思路:dp方程如下:设dp[i]为把前i个数分成合法的若干段最大值的最小值是多少.dp转移 ...

  8. POJ 1661 DP

    Help Jimmy Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 11071   Accepted: 3607 Descr ...

  9. POJ 1160 DP

    题目: poj 1160 题意: 给你n个村庄和它的坐标,现在要在其中一些村庄建m个邮局,想要村庄到最近的邮局距离之和最近. 分析: 这道题.很经典的dp dp[i][j]表示建第i个邮局,覆盖到第j ...

随机推荐

  1. Django学习案例一(blog):一. 创建project、app

    1.创建project 方法1:使用命令行创建项目.在E盘cmd执行如下命令: django-admin.py startproject myblog 方法2:使用pycharm创建项目.放置位置为D ...

  2. Django rest_framework API 随笔

    分页 需要对数量进行限制 ./settings.py REST_FRAMEWORK = { 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination ...

  3. AndroidStudio/Intellij 快捷键

    说明 三年来一直使用Eclipse作为自己的IDE, 现在是时候走出自己的safety zone, 开始使用传说中的Intellij了. Eclipse/Intellij IDE环境为: OS X 1 ...

  4. java 如何将异常Exception的信息转换为String

    一般情况下,我们是通过log4j封装的api将异常打印到日志当中. logger.error("error", e); 如果我们想在程序中获得该异常的详细信息,并输出到数据库中,我 ...

  5. WPF 利用RichTextBox 打印出不同颜色的文本

    using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows ...

  6. 【airtest】iOS,Android 依托 jenkins 并行跑

    Airtest 只支持一台mac 连接一台iPhone,  以下方法是以“一台mac 连接一台iPhone”为基础,依托jenkins 统一管理多台iPhone. [mac] jenkins mast ...

  7. Vue学习之路第十二篇:为页面元素设置内联样式

    1.有了上一篇的基础,接下来理解内联样式的设置会更简单一点,先看正常的css内联样式: <dvi id="app"> <p style="font-si ...

  8. BZOJ 2527 [POI2011]MET-Meteors (整体二分+树状数组)

    题目大意:略 洛谷传送门 整体二分裸题 考虑只有一个国家的情况如何处理 对询问数量二分答案,暴力$O(m)$打差分,求前缀和验证,时间是$O(mlogK)$ 如果有$n$个国家,就是$O(nmlogK ...

  9. Python for json

    # Json- json格式是一个键值对形式的数据集 - key:字符串 - value:字符串,数字,列表,json - json使用大括号包裹 - 键值对直接用逗号隔开 - json和Python ...

  10. [置顶] QQ空间技术架构之深刻揭密

    QQ空间作为腾讯海量互联网服务产品,经过近七年的发展,实现了从十万级到亿级同时在线的飞跃.在这个过程中,QQ空间团队遇到了哪些技术挑战?其站点前后台架构随着业务规模的变化又进行了怎样的演进与变迁?成长 ...