博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cf1262D2 Optimal Subsequences (Hard Version)(二分答案+bit)
阅读量:2148 次
发布时间:2019-04-30

本文共 827 字,大约阅读时间需要 2 分钟。

解法:

转换题意后,这题就是给定一个序列a,给出m个询问,问[0,k]的第pos小的数.

特殊就特殊在是从0开始的。

可以保存询问,我们让不同的询问ki从小到大排列,从小到大枚举k,将前ki个数存入树状数组,这时候可以通过二分答案来枚举答案mid,查询小于等于mid的数num,找出num=pos的最小的mid,就是第pos小的数了。

时间复杂度是O(nlog^2n)

应该能更快...还没去想

 

#include 
using namespace std;const int maxn=2e5+5;struct node{ int x, y;}a[maxn], b[maxn];int c[maxn];int bit[maxn];int cmp(node a, node b){ if(a.x>b.x)return 1; else if(a.x==b.x) { if(a.y
0; i-=lowbit(i))sum+=bit[i];// printf("sum\n"); return sum;}int ans[maxn];int main(){ int t, i, j, n, m; scanf("%d", &n); for(i=0; i
>1; if(sum(mid+1)>=q[i].pos) { mi=min(mi, mid); r=mid-1; } else l=mid+1; } ans[q[i].id]=mi; } for(i=0; i

 

转载地址:http://nnywb.baihongyu.com/

你可能感兴趣的文章
GridView+存储过程实现'真分页'
查看>>
flask_migrate
查看>>
解决activemq多消费者并发处理
查看>>
UDP连接和TCP连接的异同
查看>>
hibernate 时间段查询
查看>>
java操作cookie 实现两周内自动登录
查看>>
Tomcat 7优化前及优化后的性能对比
查看>>
Java Guava中的函数式编程讲解
查看>>
Eclipse Memory Analyzer 使用技巧
查看>>
tomcat连接超时
查看>>
谈谈编程思想
查看>>
iOS MapKit导航及地理转码辅助类
查看>>
检测iOS的网络可用性并打开网络设置
查看>>
简单封装FMDB操作sqlite的模板
查看>>
iOS开发中Instruments的用法
查看>>
iOS常用宏定义
查看>>
什么是ActiveRecord
查看>>
有道词典for mac在Mac OS X 10.9不能取词
查看>>
关于“团队建设”的反思
查看>>
利用jekyll在github中搭建博客
查看>>