lanqiao OJ 1546 坐标搜寻

简介: lanqiao OJ 1546 坐标搜寻

用户登录

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std ;
const int N = 16 ;
double f[1<<N][21] ;//表示走到i种状态,并且最后一步在j上 
int x[21], y[21] ;
double d (int a ,int b ){
  return sqrt((x[a] - x[b]) * (x[a] - x[b])+(y[a] - y[b]) * (y[a] - y[b])) ;
}
int main(){
  int n ; cin >> n ;
  memset(f,0127,sizeof(f)) ;
  x[0] = 0 , y[0] = 0 ;
  for(int i = 1 ; i<= n ; i ++) cin >> x[i] >> y[i] ;
  n ++ ;
  f[1][0] = 0 ;
  for(int s = 1 ;s < 1 << n ; s++){
    for(int j = 0 ; j < n ; j ++){
      for(int k = 0 ; k < n ; k ++){
        if(((s>>j) & 1) && ((s^(1<<j)) >> k & 1)){
          f[s][j] = min(f[s][j] , f[s^(1<<j)][k] + d(k,j) )  ;
        }
      }
    }
  }
  double res = f[(1<<n)-1][0] ;
  for(int i = 1 ; i < n ; i ++){
    double p = f[(1<<n)-1][i] ;
    if(res > p) res = p ;
  }
  printf("%.2lf", res);
} 
目录
相关文章
|
2月前
lanqiao OJ 644 方格分割
lanqiao OJ 644 方格分割
17 1
|
2月前
lanqiao OJ 664 方格填数
lanqiao OJ 664 方格填数
13 1
|
2月前
lanqiao OJ 803 方格取数
lanqiao OJ 803 方格取数
19 3
|
2月前
lanqiao OJ 89 路径之谜
lanqiao OJ 89 路径之谜
22 1
|
2月前
|
人工智能 Java BI
lanqiao OJ 111 区间位移
lanqiao OJ 111 区间位移
12 0
|
6月前
【Leecode刷题】二分查找:x的平方根、搜索插入位置
【Leecode刷题】二分查找:x的平方根、搜索插入位置
|
7月前
|
C++ Python Java
C/C++每日一练(20230430) 分割回文串、六角填数、查找书籍
C/C++每日一练(20230430) 分割回文串、六角填数、查找书籍
67 0
C/C++每日一练(20230430) 分割回文串、六角填数、查找书籍
|
7月前
|
Java
每日一题《剑指offer》数组篇之顺时针打印矩阵
每日一题《剑指offer》数组篇之顺时针打印矩阵
58 0
每日一题《剑指offer》数组篇之顺时针打印矩阵
|
7月前
|
算法 vr&ar 图形学
☆打卡算法☆LeetCode 167. 两数之和 II - 输入有序数组 算法解析
☆打卡算法☆LeetCode 167. 两数之和 II - 输入有序数组 算法解析
【每日一题Day67】LC1739放置盒子 | 找规律+贪心 二分查找
有一个立方体房间,其长度、宽度和高度都等于 n 个单位。请你在房间里放置 n 个盒子,每个盒子都是一个单位边长的立方体。
111 0
【每日一题Day67】LC1739放置盒子 | 找规律+贪心 二分查找