[hdu6601]Keen On Everything But Triangle
2024-09-07 15:56:34
有两个结论:1.排序后,答案一定是连续的三个数;2.当序列长度超过44一定有三个相同的数(因为即使该序列是斐波那契数列,此时也超过了1e9),然后用主席树等数据结构(略卡常,建议主席树)来维护前45大即可
1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 100005
4 #define mid (l+r>>1)
5 #define inf 1000000000
6 int V,n,m,k,x,y,a[N],b[N],r[N],f[N*20],ls[N*20],rs[N*20];
7 void update(int k1,int &k2,int l,int r,int x){
8 k2=++V;
9 ls[k2]=ls[k1];
10 rs[k2]=rs[k1];
11 f[k2]=f[k1]+1;
12 if (l==r)return;
13 if (x<=mid)update(ls[k1],ls[k2],l,mid,x);
14 else update(rs[k1],rs[k2],mid+1,r,x);
15 }
16 int query(int k1,int k2,int l,int r,int p){
17 if (l==r)return l;
18 if (f[rs[k2]]-f[rs[k1]]>=p)return query(rs[k1],rs[k2],mid+1,r,p);
19 return query(ls[k1],ls[k2],l,mid,p-f[rs[k2]]+f[rs[k1]]);
20 }
21 int main(){
22 while (scanf("%d%d",&n,&m)!=EOF){
23 V=0;
24 for(int i=1;i<=n;i++)scanf("%d",&a[i]);
25 for(int i=1;i<=n;i++)b[i]=a[i];
26 sort(b+1,b+n+1);
27 int k=unique(b+1,b+n+1)-b-1;
28 for(int i=1;i<=n;i++)a[i]=lower_bound(b+1,b+k+1,a[i])-b;
29 for(int i=1;i<=n;i++)update(r[i-1],r[i]=++V,1,k,a[i]);
30 for(int i=1;i<=m;i++){
31 scanf("%d%d",&x,&y);
32 int ma=min(y-x+1,45),flag=0;
33 for(int j=1;j<=ma;j++){
34 a[j]=query(r[x-1],r[y],1,k,j);
35 if ((j>2)&&(b[a[j-1]]+b[a[j]]>b[a[j-2]])){
36 printf("%lld\n",0LL+b[a[j]]+b[a[j-1]]+b[a[j-2]]);
37 flag=1;
38 break;
39 }
40 }
41 if (!flag)printf("-1\n");
42 }
43 }
44 }
最新文章
- ios视频播放器,代码和界面分离
- Java的super调用案例: super.getClass()返回的是子类自己
- 文本比较算法Ⅱ——Needleman/Wunsch算法
- 聊聊 Linux 中的五种 IO 模型
- 1.1 让CPU占用率曲线听你指挥[cpu manager]
- UML-类图,包图
- NSPredicate的用法
- new/delete和malloc/free的比较
- keil4编译Error: User Command terminated, Exit-Code = 1解决
- [Swift]LeetCode275. H指数 II | H-Index II
- 关于处理注册表权限无法修改的问题(无法打开主键或注册表项unknown)
- webpack 3.X研究
- python_09 文件处理流程,文件操作方法
- 字符串转化为int数组
- -webkit-CSS属性拾遗
- centos 7 忘记密码
- C++引用的用处
- 用到了yii2 hasMany() 方法,一对多关联
- 【[USACO08JAN]haybale猜测Haybale Guessing】
- java获取IP地址
热门文章
- Rclone使用教程 - 挂载Onedrive和谷歌网盘
- Mac录屏同时录制系统声音和画外音(Soundflower无法安装解决方案)
- OpenSSL version mismatch. Built against 1010104f, you have 101000cf
- noj加1乘2平方
- 《JavaScript DOM编程艺术》:+= 相加之后再赋值
- 【UE4 设计模式】组件模式 Components Pattern
- FastAPI 学习之路(五十六)将token存放在redis
- python的random模块生成随机数
- Pandas核心用法
- RAW RGB格式