链接:https://www.nowcoder.com/acm/contest/134/A
来源:牛客网

题目描述

铁子从森林里收集了n根木棍,她开始将它们按顺序的排成一排,从左到右依次为1到n,她回想起
在数学课上老师教她的三角形知识,她开始从这些木棍中间找三根木棍来组成一个周长最大的三角形,
这时她的兄弟顺溜偷偷的溜了过来,偷走了第i根木棍,现在她想知道现在能够组成周长最大的三角形
的周长是多少?

输入描述:

第一行两个整数n和q。(1 ≤ n, q ≤ 105)
第二行n个整数表示第i根木棍的长度ai。(1 ≤ ai ≤ 109)
接下来q行,每行一个整数表示被顺溜偷走的木棍编号。注意每行的事件是独立的,也就是说每一次操作都是对于原来的n根木棍进行的。
 

输出描述:

对于每个询问输出一行表示答案,如果删除木棍后无法组成三角形则输出 -1 。

输入例子:
6 2
1 2 3 4 5 6
6
5
输出例子:
12
13

-->

示例1

输入

复制

6 2
1 2 3 4 5 6
6
5

输出

复制

12
13 分析:要求三角形周长最大,则首先满足的是三边中任意两边之和大于第三边,然后我们知道如果这三边满足一个三角形肯定是最大的三边在一起周长才最大
  所以我们直接排序所有边记录下编号,然后除去问的编号枚举出最大的满足构成三角形的三边就行了
AC代码:
#include <map>
#include <set>
#include <stack>
#include <cmath>
#include <queue>
#include <cstdio>
#include <vector>
#include <string>
#include <bitset>
#include <cstring>
#include <iomanip>
#include <iostream>
#include <algorithm>
#define ls (r<<1)
#define rs (r<<1|1)
#define debug(a) cout << #a << " " << a << endl
using namespace std;
typedef long long ll;
const ll maxn = 1e5+10;
const ll mod = 998244353;
const double pi = acos(-1.0);
const double eps = 1e-8;
struct node {
ll id, num;
};
bool cmp( node p, node q ) {
return p.num > q.num;
}
node a[maxn];
int main() {
ios::sync_with_stdio(0);
ll n, m, x;
cin >> n >> m;
for( ll i = 0; i < n; i ++ ) {
cin >> a[i].num;
a[i].id = i+1;
}
sort(a,a+n,cmp);
while( m -- ) {
cin >> x;
ll cnt = 0, ans = 0;
bool flag = false;
for( ll i = 0; i < n; i ++ ) {
if( a[i].id != x ) {
ans += a[i].num;
cnt ++;
}
if( cnt == 3 ) {
if( a[i].num + a[i-1].num > a[i-2].num ) {
cout << ans << endl;
flag = true;
break;
} else {
ans -= a[i-2].num, cnt --;
}
}
}
if( !flag ) {
cout << -1 << endl;
}
}
return 0;
}

  

牛客小白赛4 A 三角形 数学的更多相关文章

  1. 牛客小白赛1 F题三视图

    链接:https://www.nowcoder.com/acm/contest/85/F来源:牛客网 题目描述 Etéreo 拿出家里的许多的立方体积木,堆成了一个三维空间中的模型.既然你高考选了技术 ...

  2. 牛客小白赛4J——强迫症

    链接:https://www.nowcoder.com/acm/contest/134/J 来源:牛客网 思路:把数列排序,把每一个重复的元素和最后一个数想加得到新数,在删掉这一元素即为去重的最少步骤 ...

  3. 牛客小白月赛6 B 范围 数学

    链接:https://www.nowcoder.com/acm/contest/135/B来源:牛客网 题目描述 已知与均为实数,且满足: 给定A,B,求x的取值范围? 由于Apojacsleam的计 ...

  4. 牛客小白月赛6 A 鲲 数学

    链接:https://www.nowcoder.com/acm/contest/136/A来源:牛客网 北冥有鱼,其名为鲲,鲲之大,不知其几千里也. ——<庄子·逍遥游> HtBest有一 ...

  5. 牛客小白赛5 无关(relationship) 容斥原理(计算因子数的模板)

    链接:https://www.nowcoder.com/acm/contest/135/A来源:牛客网 若一个集合A内所有的元素都不是正整数N的因数,则称N与集合A无关.   给出一个含有k个元素的集 ...

  6. 牛客小白月赛5 D 阶乘 数学

    链接:https://www.nowcoder.com/acm/contest/135/D来源:牛客网 题目描述 输入描述: 输入数据共一行,一个正整数n,意义如“问题描述”. 输出描述: 输出一行描 ...

  7. 牛客小白赛4 C题

    乘法逆元: 一个数a 乘上 b,在mod之后再还原成本来的数 a 这里就要用到乘法逆元,(a*b)%mod*inv(b,mod)==a ll exgcd(ll a,ll b,ll &x,ll ...

  8. 【牛客小白月赛21】NC201604 Audio

    [牛客小白月赛21]NC201604 Audio 题目链接 题目大意: 给出三点 ,求到三点距离相等的点 的坐标. 解析 考点:计算几何基础. 初中蒟蒻表示不会什么法向量.高斯消元..qwq 方法一: ...

  9. 树的最长链-POJ 1985 树的直径(最长链)+牛客小白月赛6-桃花

    求树直径的方法在此转载一下大佬们的分析: 可以随便选择一个点开始进行bfs或者dfs,从而找到离该点最远的那个点(可以证明,离树上任意一点最远的点一定是树的某条直径的两端点之一:树的直径:树上的最长简 ...

随机推荐

  1. Java秒杀系统实战系列~商品秒杀代码实战

    摘要: 本篇博文是“Java秒杀系统实战系列文章”的第六篇,本篇博文我们将进入整个秒杀系统核心功能模块的代码开发,即“商品秒杀”功能模块的代码实战. 内容: “商品秒杀”功能模块是建立在“商品详情”功 ...

  2. Asp.Net MVC SingleServiceResolver类剖析

    SingleServiceResolver一般用于类工厂创建和注入点接口留白.类工厂创建比如Controller控制依赖于此类的创建,注入点留白实质上是依赖注入所对外预留的接口. 以第二个特性为例. ...

  3. 【pycharm】pycharm远程连接服务器的Python解释器,远程编写代码!!!

    今天讲讲如何用pycharm连接远程服务器,使用远程服务器的Python解释器,比如说是你公司的服务器,在家里就可以编写或修改项目的代码! 第一步,先找到服务器上的ip地址 Linux查看IP命令:i ...

  4. MySQL操作命令梳理(1)

    一.索引 1.创建索引 索引的创建可以在CREATE TABLE语句中进行,也可以单独用CREATE INDEX或ALTER TABLE来给表增加索引.以下命令语句分别展示了如何创建主键索引(PRIM ...

  5. hive分桶表bucketed table分桶字段选择与个数确定

    为什么分桶 (1)获得更高的查询处理效率.桶为表加上了额外的结构,Hive 在处理有些查询时能利用这个结构.具体而言,连接两个在(包含连接列的)相同列上划分了桶的表,可以使用 Map 端连接 (Map ...

  6. gdb调试和编译后运行结果不一致

    今天在看代码时,遇到这么一段代码,我但是用g++编译了,运行发现有Segmentation fault. 然后就用gdb跟进去看看,可是gdb却正常执行了.不知道什么原因. #include < ...

  7. Java——检测其他线程的状态以及启动已死亡的线程

    这次这个的思路是在主类中维护一个map,map的key是线程名,value是线程的状态,然后创建周期执行的线程通过检测这个map来判断进程的状态,如果有死亡的进程就把该进程启动. 首先是主类,这里的m ...

  8. BFS-迷宫问题

    问题描述 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, ...

  9. appium输入法踩坑解决方案-----中文乱码及输入法搜索无法点击

    一.appium1.7.1 遇到的坑: 1. 在写安卓的搜索用例脚本时,发现输入内容后,搜索出现在输入法键盘原来的确认位置,定位不到手机自带输入法的"搜索"键: 2. 传入中文搜索 ...

  10. Node.js中的自定义模块化

      打造步骤: 1. 创建模块 [ Function / Object / String 2. 导出模块 - module.exports = 模块名称 导出一个 - module.exports = ...