ACM的探索之Keen On Evrything But Triangle(我觉得可以很接近啦!!)
#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(我觉得可以很接近啦!!)的更多相关文章
- 2019杭电多校第二场hdu6601 Keen On Everything But Triangle
Keen On Everything But Triangle 题目传送门 解题思路 利用主席树求区间第k小,先求区间内最大的值,再求第二大,第三大--直到找到连续的三个数可以构成一个三角形.因为对于 ...
- HDU - 6601 Keen On Everything But Triangle 主席树
Keen On Everything But Triangle 感觉最近多校好多主席树的亚子,但是本人菜得很,还没学过主席树,看着队友写题就只能划水,\(WA\)了还不能帮忙\(debug\),所以深 ...
- ACM的探索之Everything is Generated In Equal Probability! 后序补充丫!
Problem Desciption: 百度翻译后的汉化: 参见博客:https://www.cnblogs.com/zxcoder/p/11253099.html https://blog.csdn ...
- ACM的探索之Just Skip The Problem
-----------------心怀虔诚,奋勇前进,fighting!!!!!! Problem Description: inclusively: 包括一切地;包含地 simul ...
- ACM的探索之Everything Is Generated In Equal Probability(这真的是很有趣的话语丫!)
---------------------------------------步履不停,奋勇前进! ------------------------难度真的是蛮大丫!后序补充!
- 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 ...
- 2019 Multi-University Training Contest 2 - 1011 - Keen On Everything But Triangle - 线段树
http://acm.hdu.edu.cn/showproblem.php?pid=6601 首先要贪心地想,题目要最长的边长,那么要怎么构造呢?在一段连续的区间里面,一定是拿出最长的三根出来比,这样 ...
- [2019杭电多校第二场][hdu6601]Keen On Everything But Triangle
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6601 题意是说用给定区间内的数字组成周长最大的三角形. 大致做法就是求区间第1大,第2大和第3大然后判 ...
- 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 ...
随机推荐
- 全排列(dfs-有重复数字)
给出一个字符串S(可能有重复的字符),按照字典序从小到大,输出S包括的字符组成的所有排列.例如:S = "1312", 输出为: 1123 1132 1213 1231 131 ...
- AcWing 1023. 买书 完全背包
//完全背包 求方案数目 //f[i][j] 只从前i个物品中选,且总体积恰好为j的方案的集合 //f[i][j]=f[i-1][j]+f[i-1][j-v*1]+f[i-1][j-v*2]+...f ...
- 洛谷P1051 谁拿了最多奖学金
https://www.luogu.org/problem/P1051 #include<bits/stdc++.h> using namespace std; struct node { ...
- 网易云信融合CDN方案及实践
日前,网易云信视频云架构师席智勇在第七届GFIC全球家庭互联网大会进行了题为<网易云信融合CDN方案及实践>的分享,以下是演讲内容回顾. 图为 网易云信视频云架构师席智勇 CDN所面临的问 ...
- ubuntu18 + caffe+cpu+anaconda3
本记录只暂时只记录一些错误. 编译错误,opencv3.2与anaconda3下的libtiff不兼容,冲突. 问题查找(查找所有的TIFF库与编译错误提示匹配/usr/lib/x86_64-linu ...
- java继承与多态课后作业
1.动手实验 源码 class Grandparent { public Grandparent() { System.out.println("GrandPar ...
- C++-static作用(转)
C++中static的作用 C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用 ...
- 后台异常 - org/apache/oro/text/regex/MalformedPatternException
解决办法 1.将JDK换成1.6.023或者以上的,如果不行进行下面的办法操作 2.缺少了jakarta-oro-2.0.8.jar文件,将此包放入工程中
- C++类几种初始化的顺序
首先给段代码: class A{ public: ; A():x(){cout<<"A(): x="<<x<<endl;} A(int a):x ...
- WPF页面切换
XAML <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft. ...