#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,q,l,r;
while(cin>>n>>q)
{
vector<int> a(n);
for(int i=0;i<n;i++) cin>>a[i];
while(q--)
{
cin>>l>>r;
vector<int> b(r-l+1);
for(int i=0;i<r-l+1;i++) b[i]=a[i+l-1];
sort(b.begin(),b.end());
int len=r-l+1;
int x=b[len-1];
int y=b[len-2];
int z=b[len-3];
cout<<x+y+z<<endl;
}
}
return 0;
} //好接近了,但是因为超时被卡住了!

  接下来是题目喽:

援引自https://blog.csdn.net/xizi_ghq                  https://blog.csdn.net/xizi_ghq/article/details/97136436

题意:给出一个数列,询问任意区间,区间内所组成的最大的三角形周长是多少?

首先要明白斐波那契的一个性质,刚刚好不能够组成三角形,然后根据这个性质,1e9的范围内,如果一直不能构成三角形,最大只有47个数(47层)。这样我们从每个区间取出最大的47个数,然后来判断这47个数满足题意的三角形周长就可以了。

很明显主席树查询第k大模板。

大佬的代码:

 #include<bits/stdc++.h>
using namespace std;
const int M=1e5+;
int n,q,d[M],b[M],root[M],cnt;
struct Node{int l,r,sum;}t[*M];
void build(int &rot,int l,int r){
rot=++cnt;
t[rot].sum=;
if(l==r)return ;
int mid=(l+r)>>;
build(t[rot].l,l,mid);
build(t[rot].r,mid+,r);
}
void update(int &rot,int l,int r,int last ,int v){
rot=++cnt;
t[rot].l=t[last].l;
t[rot].r=t[last].r;
t[rot].sum=t[last].sum+;
if(l==r)return ;
int mid=(l+r)>>;
if(v<=mid)update(t[rot].l,l,mid,t[last].l,v);
if(mid<v)update(t[rot].r,mid+,r,t[last].r,v);
}
bool judge(int x,int y,int z){
char xx[];
xx[]=x;
xx[]=y;
xx[]=z;
sort(xx,xx+);
if(xx[]+xx[]<=xx[])return false;
return true;
}
int ask(int pre,int now,int l,int r,int k){
if(l==r)return l;
int mid=(l+r)>>,num=t[t[now].r].sum-t[t[pre].r].sum;
if(k<=num)return ask(t[pre].r,t[now].r,mid+,r,k);
return ask(t[pre].l,t[now].l,l,mid,k-num);
}
int main(){
while(scanf("%d%d",&n,&q)!=EOF){
cnt=; for(int i=;i<=n;i++){
scanf("%d",d+i);
b[i]=d[i];
}
sort(b+,b+n+);
int sz=unique(b+,b+n+)-(b+);
for(int i=;i<=n;i++)d[i]=lower_bound(b+,b+sz+,d[i])-b;
build(root[],,sz);
for(int i=;i<=n;i++)update(root[i],,sz,root[i-],d[i]); //通过上个树,来更新这个树
long long res[];
for(int x,y,k,mx,f,i=;i<=q;i++){
scanf("%d%d",&x,&y);
mx=min(,y-x+);
if(mx<){
printf("-1\n");
continue;
}
for(int j=;j<=mx;j++) res[j] = b[ask(root[x-],root[y],,sz,j)]; //找到第k大的数字
f=;
for(int j=;j<=mx;j++){
if(res[j]+res[j-]>res[j-]){
f=;
printf("%lld\n",res[j]+res[j-]+res[j-]);
break;
}
}
if(!f)printf("-1\n");
}
}
return ;
}

tql !!!!!!

ACM的探索之Keen On Evrything But Triangle(我觉得可以很接近啦!!)的更多相关文章

  1. 2019杭电多校第二场hdu6601 Keen On Everything But Triangle

    Keen On Everything But Triangle 题目传送门 解题思路 利用主席树求区间第k小,先求区间内最大的值,再求第二大,第三大--直到找到连续的三个数可以构成一个三角形.因为对于 ...

  2. HDU - 6601 Keen On Everything But Triangle 主席树

    Keen On Everything But Triangle 感觉最近多校好多主席树的亚子,但是本人菜得很,还没学过主席树,看着队友写题就只能划水,\(WA\)了还不能帮忙\(debug\),所以深 ...

  3. ACM的探索之Everything is Generated In Equal Probability! 后序补充丫!

    Problem Desciption: 百度翻译后的汉化: 参见博客:https://www.cnblogs.com/zxcoder/p/11253099.html https://blog.csdn ...

  4. ACM的探索之Just Skip The Problem

    -----------------心怀虔诚,奋勇前进,fighting!!!!!! Problem Description: inclusively:          包括一切地;包含地 simul ...

  5. ACM的探索之Everything Is Generated In Equal Probability(这真的是很有趣的话语丫!)

    ---------------------------------------步履不停,奋勇前进! ------------------------难度真的是蛮大丫!后序补充!

  6. hdu-6601 Keen On Everything But Triangle

    题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=6601 Description N sticks are arranged in a row, and ...

  7. 2019 Multi-University Training Contest 2 - 1011 - Keen On Everything But Triangle - 线段树

    http://acm.hdu.edu.cn/showproblem.php?pid=6601 首先要贪心地想,题目要最长的边长,那么要怎么构造呢?在一段连续的区间里面,一定是拿出最长的三根出来比,这样 ...

  8. [2019杭电多校第二场][hdu6601]Keen On Everything But Triangle

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6601 题意是说用给定区间内的数字组成周长最大的三角形. 大致做法就是求区间第1大,第2大和第3大然后判 ...

  9. 2017 ACM/ICPC 沈阳 F题 Heron and his triangle

    A triangle is a Heron’s triangle if it satisfies that the side lengths of it are consecutive integer ...

随机推荐

  1. npm 模块开发调试技巧之最优方案npm link

    在我们平时写项目中,当我们需要新开发或修改的 npm 模块时,如何在本地项目中调试呢? 本地项目路径:G:\npm\project 开发的模块路径:G:\npm\model 方法一: 在cmd命令窗口 ...

  2. 条件锁Condition

    """设计场景:timo先说一句,亚索再说一句timo: timo队长正在待命yasuo: 面对疾风吧timo: timo整装待发yasuo: 哈杀gay "& ...

  3. JUC—Callable接口

    一.callable接口是什么? 面试题: 获得多线程的方法几种? 正确答案如下: 传统的 是继承thread类和实现runnable接口, java5以后又有实现 callable接口 和 java ...

  4. python之路模块简介及模块导入

    ================================添加sys.path路径================================================== ===== ...

  5. R data formats

    R data formats: Rdata Rda Rds 1.概念 rds是R语言中利用二进制保存的源文件,加载readr包以后,使用write_rds(x,file='x.rds')保存文件,re ...

  6. 题解 CF712C 【Memory and De-Evolution】

    看到题我第一反应就是while循环 但是我竟然想正着推,失败,卡了十几分钟 后来我回来看到第三组测试数据 想到倒推 但是没坚持 于是我又卡了很久 过会我又回来想 AC了... 这个故事告诉我们,要努力 ...

  7. oracle 启动

    Oracle数据库启动过程及状态详解(nomount.mount和open) 先来简要了解一下Oracle数据库体系架构以便于后面深入理解,Oracle Server主要由实例(instance)和数 ...

  8. MATLAB一些常用的function

    在MATLAB中一些常用的算数符号与我们平时所用的不同,比如:根号,平方,e,以及对数函数等. (1)平方:a^2 意思为a的平方,亦可以写成a*a: (2)根号:sqrt(x)意思为对x开根号,x既 ...

  9. python中乱码怎么由来与解决方法

    前言曾几何时 Python 中文乱码的问题困扰了我很多很多年,每次出现中文乱码都要去网上搜索答案,虽然解决了当时遇到的问题但下次出现乱码的时候又会懵逼,究其原因还是知其然不知其所以然.现在有的小伙伴为 ...

  10. JS高级---闭包小案例

    闭包小案例 普通的函数 //普通的函数 function f1() { var num = 10; num++; return num; } console.log(f1()); //11 conso ...