BZOJ 3110:K大数查询
发布日期:2021-06-30 16:05:48 浏览次数:3 分类:技术文章

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

整体二分题,很好理解,就是将查询区间和查询值区间进行整体二分。

#include
using namespace std;#define max(a,b) a>b?a:b#define min(a,b) a
0){
if(vis[x][ind]==tot) sum+=bit[x][ind]; x-=lowbit(x); } return sum;} inline ll get_Sum(int x,int y){
ll sum=0; sum=(ll)(y+1)*getSum(y,0)-getSum(y,1)-(ll)x*getSum(x-1,0)+getSum(x-1,1); return sum;}int ans[maxn];int tmp[maxn][2];int Id[maxn];struct Node{
int type; int x,y; int c; }node[maxn];void Bin(int l,int r,int L,int R){
if(l>r) return ; int mid=(L+R)>>1; if(L==R){
for(int i=l;i<=r;i++) if(node[Id[i]].type==2) ans[Id[i]]=mid; return; } tmp[0][0]=tmp[0][1]=0; tot++; for(int i=l;i<=r;i++){
int tmpe=Id[i]; if(node[tmpe].type==1){
if(node[tmpe].c<=mid){
tmp[++tmp[0][0]][0]=tmpe; } else{
tmp[++tmp[0][1]][1]=tmpe; Add(node[tmpe].x,node[tmpe].y); } } else{
ll cnt=get_Sum(node[tmpe].x,node[tmpe].y); if(cnt

转载地址:https://kaven.blog.csdn.net/article/details/81150459 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:牛客网暑期ACM多校训练营(第一场)A : Monotonic Matrix
下一篇:BZOJ 3262: 陌上花开

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年05月04日 17时39分01秒