牛客小bai月赛43——C 木棍游戏(DFS)
题目如下:
来源:牛客网
题目描述
给出 n 根长度不一的木棍,第 iii 根棍子长度为 ai 。两根长度分别为 Ab 和Ac 的木棍可以拼接成一根长度为Ab+Ac 的木棍,同理 3 根, 4 根,甚至 n 根都能拼接。
问:使用这 n 根木棍作三角形的边(一根木棍至多使用一次,也可以不使用),能拼出的面积最大的三角形的面积。
输入描述:
第一行包含一个整数 n (3≤n≤8),表示木棍的数量。
第二行包含 n 个整数,用空格隔开,表示 n 根木棍的分别长度 a1,a2,...,an其中 1≤ai≤1e3。
输出描述:
输出一行,表示能拼出来的最大三角形的面积,结果保留一位小数。如果无法拼出三角形,输出−1。示例1
输入
3
3 4 5
3 3 4 5输出
6.0
示例2
输入
3
3 4 7
输出
-1
AC代码如下:
#include<bits/stdc++.h>
using namespace std;
int vis[10];
double ans;
int num[10];
int n;
bool check(int a[]){if(a[1]+a[2]<=a[3]||a[2]+a[3]<=a[1]||a[1]+a[3]<=a[2])return 0;return 1;
}
double dis(int a[]){double p = (a[1]+a[2]+a[3])/2;return sqrt(p*(p-a[1])*(p-a[2])*(p-a[3]));
}
void dfs(int now,int a[],int f,int sum){if(f==4){if(check(a))ans = max(ans,dis(a));return;}if(now==n+1){if(sum==0)return;a[f] = sum;dfs(1,a,f+1,0);return;}dfs(now+1,a,f,sum);if(!vis[now]){vis[now] = 1;dfs(now+1,a,f,sum+num[now]);vis[now] = 0;}
}
int main()
{cin>>n;int a[4] = {0};for(int i = 1;i<=n;++i)cin>>num[i];dfs(1,a,1,0);if(ans<0.0000001)cout<<-1<<endl;else printf("%.1lf",ans);return 0;
}
题解:
观察到n只有8,dfs爆搜即可 实际只有2^20次方根本超不了
使用海伦公式求三角形的面积:
注意:
要先判断三边是否可以构成三角形
bool check(int a[]){if(a[1]+a[2]<=a[3]||a[2]+a[3]<=a[1]||a[1]+a[3]<=a[2])return 0;return 1;
}
再求其面积 并 存储最大面积
double dis(int a[]){double p = (a[1]+a[2]+a[3])/2;return sqrt(p*(p-a[1])*(p-a[2])*(p-a[3]));
}
if(f==4){if(check(a))ans = max(ans,dis(a));return;}
最后,感谢您的阅读!!!
牛客小bai月赛43——C 木棍游戏(DFS)相关推荐
- 牛客小bai月赛39 F 孤独(dp)
牛客小白月赛39 F 孤独 #include <bits/stdc++.h> using namespace std; typedef long long ll; int ans = IN ...
- E 排队(排列组合)[牛客小*白月赛61]
题面如下: 思路 or 题解: 对于一个长度为 nnn 的 排列组合 如果存在一对 逆序对 (x,y)(x, y)(x,y) xxx 在 yyy 的前面有 n∗(n−1)2\frac{n * (n - ...
- 牛客网小bai月赛40
牛客网小白月赛40 A 数字游戏 B 跳跳跳 D 优美字符串 E 分组 F 过桥 G 空调遥控 I 体操队形 牛客比赛页面跳转 这是一篇菜鸟的自我总结,大佬勿喷,轻点轻点~ A 数字游戏 题目意思: ...
- 牛客小d和孤独的区间
牛客小d和孤独的区间 这道题我们如果等到数据都输入完后再计算会浪费很多时间 所以还是每次输入都计算一遍 我们知道要找到一个区间里只有一个1,其余都是0 所以这时候我们可以将输入分为两种情况 1,输入为 ...
- oj记录 牛客小I白月赛50 C减法与求余 (思维
题目描述 链接:https://ac.nowcoder.com/acm/contest/11227/C 来源:牛客网 鸡尾酒的学生丹丹分不清求余和减法,因为他觉得两种运算都是将一个数字变小,所以都差不 ...
- 牛客-小a与星际探索
这是一道伪图论题 链接:https://ac.nowcoder.com/acm/problem/22144 来源:牛客网 题目描述 小a正在玩一款星际探索游戏,小a需要驾驶着飞船从11号星球出发前往n ...
- 牛客——小a与星际探索
链接:https://ac.nowcoder.com/acm/contest/317/C 来源:牛客网 题目描述 小a正在玩一款星际探索游戏,小a需要驾驶着飞船从11号星球出发前往nn号星球.其中每个 ...
- 牛客—— 小A的最短路 (LCA)
[牛客] 小A的最短路 (LCA) 原题链接 题意: 给定一棵树,除给定的特殊边边权为0外,其余边权均为1.求两点之间的最短距离.n为3e5 思路: 今天碰到的第一道喜欢的题hhhhhh 题目是一棵树 ...
- 牛客xiao白月赛61-D,E,F
D. 链接:https://ac.nowcoder.com/acm/contest/46597/D 来源:牛客网 酒足饭饱之后 PLMM 有些无聊,询问 The__Flash 要不要做什么有趣的事情, ...
最新文章
- cp -r dir1/. dir2 表示将dir1下的文件复制到dir2,不包括dir1目录
- 嵌入式Linux开发环境的搭建
- table ADR6 引起的equipment download error
- 数据挖掘 点击更多 界面_8(更多)技巧,可快速改善用户界面
- java单词测试,java单词 - 在线打字测试(dazi.kukuw.com)
- UVA1586 ​​​​​​​ Molar mass
- 如何用100美元和TensorFlow来造一个能“看”东西的机器人
- 前言-小迪web安全渗透培训视频笔记
- 小米笔记本PRO黑苹果使用第三方蓝牙设备
- java生成pdf合同
- [gitHub使用笔记一]ubuntu下快速访问github官网的方法
- 东瓜小知识之《简单查询网卡的厂商信息》
- 傅里叶变换一步步详细推导
- 读书笔记:Bi-Directional Cascade Network for Perceptual Edge Detection
- python 白噪声检验-Python中的白噪声时间训练
- 成功解决ImportError: cannot import name ‘GloVe‘ from ‘torchtext.legacy.vocab‘
- CentOS7出现网络不可达情况
- windows下解压.bz文件
- 两万字梳理 Java 入门进阶那些事
- 杜克大学电气与计算机考研,解析:杜克大学电气与计算机工程专业