链接: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. java课后作业3

    1.动手动脑 由于类中定义了需要参数的构造方法,导致系统不再提供默认的构造方法. 2.java字段初始化 运行结果 100 300 java字段在初始化时先按照对应的构造方法执行.若构造方法中没有对变 ...

  2. XPath注入

    XPath基础 XPath 即为 XML 路径语言,是一门在XML文档中查找信息的语言.XPath 基于 XML 的树状结构,有不同类型的节点,包括元素节点,属性节点和文本节点,提供在数据结构树中找寻 ...

  3. 使用NSIS制作可执行程序的安装包

    使用NSIS制作可执行程序的安装包: 1,NSIS下载地址:https://pan.baidu.com/s/1GzzQNXgAlJPJWgjBzVwceA 下载完成之后解压缩,打开安装程序,默认安装即 ...

  4. OpenGL基本图元类型

    GL_POINTSGL_LINESGL_LINE_STRIPGL_LINE_LOOPGL_TRIANGLESGL_TRIANGLE_STRIPGL_TRIANGLE_FANGL_QUADSGL_QUA ...

  5. Intellij IDEA 控制台中文乱码问题

    如果Intellij IDEA 控制台出现中文乱码: 1.修改Intellij IDEA 配置文件: 在安装目录的bin文件夹里找到 idea.exe.vmoptions 和 idea64.exe.v ...

  6. java判断相等

    一.字符串 1.equals():比较内容,推荐 String a=new String("abc"); String b=new String("abc"); ...

  7. 算法_hdoj_1003

    question: Max Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  8. 【做题笔记】洛谷P1036 选数

    作为一个 DFS 初学者这题真的做得很惨...其实窝学 DFS 一年多了,然后一开始就学不会最近被图论和数据结构打自闭后才准备好好学一学233 一开始,直接套框架,于是就有 #include < ...

  9. Django中的check指令和sqlmigrate指令

    官方文档的解释如下: Django 有一个自动执行数据库迁移并同步管理你的数据库结构的命令 - 这个命令是 migrate,我们马上就会接触它 - 但是首先,让我们看看迁移命令会执行哪些 SQL 语句 ...

  10. Gevent和猴子补丁

    定义 在2018年看Flutent python时了解到猴子补丁,知道咋回事,但是现在通过代码更深刻认识猴子补丁. 猴子补丁:在运行时修改类或模块,而不改动源码. 例子1 没有用猴子补丁 import ...