●BZOJ 4408 [Fjoi 2016]神秘数
题链:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAXN 100500
using namespace std;
int A[MAXN],tmp[MAXN];
int N,M,tnt;
struct CMT{long long sum[MAXN*20];int rt[MAXN],ls[MAXN*20],rs[MAXN*20],sz;void Insert(int v,int &u,int l,int r,int p){u=++sz; ls[u]=ls[v]; rs[u]=rs[v]; sum[u]=sum[v]; sum[u]+=tmp[p];if(l==r) return;int mid=(l+r)>>1;if(p<=mid) Insert(ls[v],ls[u],l,mid,p);else Insert(rs[v],rs[u],mid+1,r,p);}long long Query(int v,int u,int l,int r,int al,int ar){if(al<=l&&r<=ar) return sum[u]-sum[v];int mid=(l+r)>>1; long long ret=0;if(al<=mid) ret+=Query(ls[v],ls[u],l,mid,al,ar);if(mid<ar) ret+=Query(rs[v],rs[u],mid+1,r,al,ar);return ret;}void Build(){for(int i=1;i<=N;i++)Insert(rt[i-1],rt[i],1,tnt,A[i]);}
}DT;
int main(){
// freopen("/home/noilinux/Documents/Code/BZOJ/4408.in","r",stdin);
// printf("BEGIN.\n");scanf("%d",&N);for(int i=1;i<=N;i++)scanf("%d",&A[i]),tmp[i]=A[i];sort(tmp+1,tmp+N+1);tnt=unique(tmp+1,tmp+N+1)-tmp-1;for(int i=1;i<=N;i++)A[i]=lower_bound(tmp+1,tmp+tnt+1,A[i])-tmp;scanf("%d",&M);DT.Build(); long long ANS,ret,p;for(int i=1,l,r;ANS=0,ret=0,i<=M;i++){scanf("%d%d",&l,&r);while(ANS<ret+1){ANS=ret+1;p=upper_bound(tmp+1,tmp+tnt+1,ANS)-tmp-1;ret=DT.Query(DT.rt[l-1],DT.rt[r],1,tnt,1,p);}printf("%lld\n",ANS);}return 0;
}
转载于:https://www.cnblogs.com/zj75211/p/8092630.html
●BZOJ 4408 [Fjoi 2016]神秘数相关推荐
- Bzoj 4408: [Fjoi 2016]神秘数 可持久化线段树,神题
4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 177 Solved: 128 [Submit][Stat ...
- BZOJ 4408: [Fjoi 2016]神秘数(可持久化线段树)
题目描述 http://www.lydsy.com/JudgeOnline/problem.php?id=4408 题目大意:求最小不能被一段区间中某些数的和表示的数.(还是看题面吧) 思路 可持久化 ...
- 4408: [Fjoi 2016]神秘数
4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 452 Solved: 273 [Submit][Stat ...
- 【bzoj4408】[Fjoi 2016]神秘数 主席树
题目描述 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13}, 1 = 1 2 = 1+1 3 = 1+1+1 4 = 4 5 = 4+1 6 = ...
- BZOJ44084299[Fjoi 2016]神秘数——主席树
题目描述 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13}, 1 = 1 2 = 1+1 3 = 1+1+1 4 = 4 5 = 4+1 6 = ...
- BZOJ4408: [Fjoi 2016]神秘数
考虑处理单组询问 一开始ans=1,每次统计<=ans的数的和sum,若sum>=ans,就用sum+1更新ans 最坏情况下,ans的更新是1,2,3,5,8-.是斐波拉契数列 所以an ...
- [Bzoj4408]神秘数(主席树)
Description 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数. 例如S={1,1,1,4,13}, 1 = 1 2 = 1+1 3 = 1+1+1 4 = 4 5 = ...
- BZOJ 3930 Luogu P3172 选数 (莫比乌斯反演)
BZOJ 3930 Luogu P3172 选数 (莫比乌斯反演) 手动博客搬家:本文发表于20180310 11:46:11, 原地址https://blog.csdn.net/suncongbo/ ...
- bzoj 1026 //1026: [SCOI2009]windy数
bzoj 1026 //1026: [SCOI2009]windy数 //在线测评地址https://www.lydsy.com/JudgeOnline/problem.php?id=1026 / ...
最新文章
- 新书上市 | C程序员! 这可能是你搞定指针最轻松的方式
- 千万级在线推送系统架构解析
- 图解matlab基本操作
- Spark Streaming 实战案例(二) Transformation操作
- QT中图表类QChart之各种缩放/平移
- plantuml语法_PlantUML实践 | 思维导图
- Ubuntu瘦身与扩容运动
- 2016年,我的和自己谈谈
- 中国娱乐社交企业出海发展专题报告
- Docker(二十九)k8s 创建动态存储,基于nfs 的storageclass
- JVM监控及诊断工具命令行篇之jhat
- python调用swmm程序_Python SWMM5包_程序模块 - PyPI - Python中文网
- Mac下nginx的安装记录(亲测可用)
- 接口返回的是一个图片文件而不是url 前端如何显示?
- MATLAB 学习笔记(6)MATLAB 的 upsample 函数和 downsample 函数
- 有益视力的食疗方法(转载)
- mac pro 安装双系统与windows下解决右键问题
- linux下磁盘情况查询命令
- 小甲鱼——编程初学者的救赎
- 电脑W ndoWs在哪里,苹果电脑如何安装wndows系统.doc
热门文章
- HTML5怎么编辑另一个页面,html中嵌套iframe页面 如何将一个html页面中嵌入另一个html页面...
- jeecg-boot自动生成代码_无代码实现销售系统自动判定并生成订单功能
- python在福州能找到工作吗_如果只会Python能不能找到工作
- python批量发送邮件_Python批量发送邮件
- 二叉树的前序遍历Python解法
- 大数据平台CDH搭建
- html 编辑器 es6,小技巧:一行代码让浏览器瞬间变成临时编辑器
- Android 实现扑克牌动画,android – 重叠图像(扑克牌)
- mysqlsql怎么比较当前月与去年的这个月的同比_多数房企前10月业绩稳步增长 这12家企业为何“负增长”?...
- 系统无法在消息文件中为application_iOS 14 Filza 文件消息,M1 能用 win 系统