链接:https://ac.nowcoder.com/acm/contest/3402/I

   盼啊,盼啊,伴随着时钟的敲响,我们即将迎来了美好的传统佳节-春节。为了给新年增添浓浓节日气息,师弟师妹们纷纷向师姐说:“师姐我想要收大红包!”,而我们人美心善声音靓的jx师姐也很大气地说:“给,给大个的,n个够吗?”,师弟师妹:“够了,谢谢师姐,师姐真好。”,但是可爱调皮的师姐将总共n个红包给藏在了实验室228里,并给了你每个红包的坐标。机智的你当然是得拿走所有红包,但是你得移动最少的距离来拿到所有红包!!奥里给!!一开始你在(0,0)处。

输入描述:

第一行包含一个整数n(0<=n<=13)
接下来n行,每行2个实数,
表示第i个红包的坐标x,y(0<=|x|,|y|<=30)
两点之间的距离公式为
sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));

输出描述:

需要走的最少距离,结果保留小数点后2位。
示例1

输入

复制

2
-1 1
2 2

输出

复制4.58


解题思路:因为数据范围不大所以可以用dfs暴搜
AC代码:
#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
inline int read() {int x=,f=;char c=getchar();while(c!='-'&&(c<''||c>''))c=getchar();if(c=='-')f=-,c=getchar();while(c>=''&&c<='')x=x*+c-'',c=getchar();return f*x;}
typedef long long ll;
const int maxn = 1e2+;
double x[maxn];
double y[maxn];
double ans=1000000.0;
int vis[maxn];
double dis[maxn][maxn];
int n;
void dfs(int x,int now,double min1){//x是深度,now是现在的状态因为你要从上一状态继续走//min1记录最小值
if(min1>ans){
return ;
}
if(x==n){
ans=min1;
}
for(int i=;i<=n;i++){
if(vis[i]==){
vis[i]=;//标记数组
dfs(x+,i,min1+dis[i][now]);
vis[i]=;
}
}
}
int main()
{ cin>>n;
for(int i=;i<=n;i++){
cin>>x[i]>>y[i];
}
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
dis[i][j]=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));//先算出打表算出任意两点的距离
}
}
dfs(,,0.0);
printf("%.2lf",ans);
return ;
}

AC代码2:

#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
inline int read() {int x=,f=;char c=getchar();while(c!='-'&&(c<''||c>''))c=getchar();if(c=='-')f=-,c=getchar();while(c>=''&&c<='')x=x*+c-'',c=getchar();return f*x;}
typedef long long ll;
const int maxn = 1e2+;
double x[maxn],y[maxn];
double lmin=1000000.0;
double dis(int i,int j){
return sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
}
int vis[maxn];
int p[maxn];
int n;
void dfs(int x,double ans){
if(ans>lmin)return;
if(x==n){
lmin=ans;
}
for(int i=;i<=n;i++){
if(!vis[i]){
vis[i]=;
p[x]=i;
dfs(x+,ans+dis(p[x],p[x-]));//p[x-1]是上一个状态
vis[i]=;
}
} }
int main()
{
cin>>n;
for(int i=;i<=n;i++){
cin>>x[i]>>y[i];
}
dfs(,0.0);
printf("%.2lf",lmin);
return ;
}


dfs(学姐的红包)的更多相关文章

  1. cdoj 1328 卿学姐与诡异村庄 Label:并查集 || 二分图染色

    卿学姐与诡异村庄 Time Limit: 4500/1500MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit  ...

  2. 2014.11.12模拟赛【美妙的数字】| vijos1904学姐的幸运数字

    美妙的数字(number.c/.cpp/.pas) 题目描述 黄巨大认为非负整数是美妙的,并且它的数值越小就越美妙.当然0是最美妙的啦. 现在他得到一串非负整数,对于每个数都可以选择先对它做二进制非运 ...

  3. qwb与学姐 (带秩并查集)

    qwb与学姐 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 149  Solved: 54[Submit][Status][Web Board] Des ...

  4. qwb与学姐

    qwb与学姐 Time Limit: 1 Sec  Memory Limit: 128 MB Description qwb打算向学姐表白,可是学姐已经受够了他的骚扰,于是出了一个题想难住他:已知一幅 ...

  5. COGS 2510. 拯救紫萱学姐

    [题目描述] 其实在开考前半个小时题面并不是这样的. 由于明天要考试,同学们要把抽屉里的书都搬空,书很多而且办了走读不能回寝室的学长一眼就看到了回班撩他的学姐,于是就把学姐当学长用♂了:“帮我把这摞书 ...

  6. Vijos1901 学姐的钱包

    描述 学姐每次出门逛街都要带恰好M元钱, 不过她今天却忘记带钱包了.可怜的doc只好自己凑钱给学姐, 但是他口袋里只有一元钱.好在doc的N位朋友们都特别有钱, 他们答应与doc作一些交换.其中第i位 ...

  7. cdoj 1329 卿学姐与魔法 优先队列

    卿学姐与魔法 Time Limit: 1200/800MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Sta ...

  8. cdoj 1324 卿学姐与公主 线段树裸题

    卿学姐与公主 Time Limit: 2000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit St ...

  9. vijosP1903学姐的实习工资

    描述 学姐去实习了, 一共实习了N天, 每一天都可以得到实习工资V[i], 这里V[1..N]被看作是整数序列.因为学姐很厉害, 所以V[1..N]是不下降的.也就是说学姐每天的工资只会越来越多, 不 ...

随机推荐

  1. jsp中的javascript的$(document).ready( function() { $("#loginForm").validate()

    转自:https://bbs.csdn.net/topics/392459787?list=71147533 下面是jsp页面中的JavaScript代码 $(document).ready( fun ...

  2. springmvc的框架搭建及工作流程

    1.搭建要点 web.xml: <servlet-mapping>     <servlet-name>springDispatcherServlet</servlet- ...

  3. 随缘记录 LeetCode第168场周赛 2019-12-22

    5292. 划分数组为连续数字的集合 给你一个整数数组 nums 和一个正整数 k,请你判断是否可以把这个数组划分成一些由 k 个连续数字组成的集合. 如果可以,请返回 True:否则,返回 Fals ...

  4. 什么是nuget?nuget包是如何管理

    本文链接:https://blog.csdn.net/Microsoft_Mao/article/details/101159800做windows开发的,迟早会接触到nuget这个东西,那么今天我们 ...

  5. 关于python 的 __future__

    经常看到__future__: from __future__ import absolute_importfrom __future__ import print_functionfrom __fu ...

  6. Hdu6586 String 字符串字典序贪心

    Hdu6586 字符串字典序贪心 题意 给出一个只包含26个字符的字符串(|S|<=1e5),要求从中取出长度为k的字典序最小的组序列,满足所给的26个字母的限制条件,例如\([l_i,r_i] ...

  7. windows系统 安装 mysql.fx

    windows系统 安装 mqtt.fx 软件官网:http://mqttfx.jfx4ee.org/ 软件下载:http://www.jensd.de/apps/mqttfx/1.1.0/

  8. (c#)亲密字符串

    题目 解

  9. SaltStack自动化软件简介及安装

    ==================================================================================================== ...

  10. IntelliJ IDEA 2017.3尚硅谷-----设置超过指定 import 个数,改为*

    (可忽略)