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 ...
随机推荐
- 我的python笔记05
Python 之路 Day5 - 常用模块学习 本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve ...
- 搭建 Review Board - SVN 审核工具
一.安装环境 CentOS-6.7,ReviewBoard-2.5.1.1 二.安装环境的配置 1.确认当前系统中有如下包,若没有,使用yum安装 httpd-2.2.15:httpd 指的是apac ...
- python3运行调用htmltestrunner时,报错UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0
之前解决过一次,又忘了,这次写下来了..百度没有的,跟我环境有关! 环境:自动化运行环境python3.6.5 上期说到了,写了一个bat来运行runallcase.py. 但是双击运行却报错:Uni ...
- JS高级---正则表达式
正则表达式 也叫规则表达式, 按照一定的规则组成的一个表达式, 这个表达式的作用主要是匹配字符串的 "我的电话:10086,他的电话:10010,你的电话:10000" 正则 ...
- ASP.NET MVC 获取表单数据
public class Person { public string Name{get;set;} public string Phone{get;set;} } view层 @model Mode ...
- FireFox浏览器的about:config参数大全及其具体用途介绍
FireFox浏览器的about:config参数大全及其具体用途介绍,注意:这还远不是所有的about:config参数,由于设置参数太多,官方也只提供英文版本的说明,这里提供的FireFox ab ...
- K3老单序时簿开发示例
K3需要对老单进行二次开发,老单的二次开发比较麻烦,这里整理一下老单序时簿上添加按钮的二次开发示例. --以下SQL脚本--获取 MENU IDselect FID,FmenuID,FName fro ...
- Python之旅第二天(第一天补充部分、数据类型、运算逻辑、部分方法的引入、pycharm)
今天其实是有点小忙的,但是干自己不喜欢事情的结果就是,要睡觉了都不知道自己在忙鸡毛,所以还是不继续想了,脑仁疼.回忆一下今天的学习内容,着实有点少,本大侠还没怎么过瘾呢.废话不多说. while补充两 ...
- java基础(四)之this的使用
作用: 1.使用this调用成员变量和成员函数2.使用this调用构造函数 Person.java: class Person{ String name; //成员变量 void talk(Strin ...
- SSH后台分页
初学SSH,开始用的Struts2+Hibernate3+Spring3,Hibernate中用的HibernateTemplate进行数据库的操作.之后在进行前台页面显示的时候,要用到分页,查了一下 ...