●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;
- }
●BZOJ 4408 [Fjoi 2016]神秘数的更多相关文章
- Bzoj 4408: [Fjoi 2016]神秘数 可持久化线段树,神题
4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 177 Solved: 128[Submit][Status ...
- BZOJ 4408: [Fjoi 2016]神秘数
4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 464 Solved: 281[Submit][Status ...
- BZOJ 4408: [Fjoi 2016]神秘数 可持久化线段树
4408: [Fjoi 2016]神秘数 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4408 Description 一个可重复数字集 ...
- BZOJ 4408: [Fjoi 2016]神秘数 [主席树]
传送门 题意: 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13},8无法表示为集合S的子集的和,故集合S的神秘数为8.现给定n个正整数a[1]. ...
- bzoj 4408: [Fjoi 2016]神秘数 数学 可持久化线段树 主席树
https://www.lydsy.com/JudgeOnline/problem.php?id=4299 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1 ...
- BZOJ 4408: [Fjoi 2016]神秘数 主席树 + 神题
Code: #include<bits/stdc++.h> #define lson ls[x] #define mid ((l+r)>>1) #define rson rs[ ...
- 4408: [Fjoi 2016]神秘数
4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 452 Solved: 273 [Submit][Stat ...
- [BZOJ4408][Fjoi 2016]神秘数
[BZOJ4408][Fjoi 2016]神秘数 试题描述 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13},1 = 12 = 1+13 = 1 ...
- 【BZOJ4408】[Fjoi 2016]神秘数 主席树神题
[BZOJ4408][Fjoi 2016]神秘数 Description 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13},1 = 12 = 1 ...
随机推荐
- 【Swift】 iOS开发容易产生Bug的地方
1.隐藏navigationBar(尤其是多级隐藏) 2.共用collectionView或tableView 3.继承关系下,注意覆写父类时的super方法的调用 4.关于权限的问题(相机权限,相册 ...
- 视图和URL配置
视图和URL配置 实验简介 上一章里我们介绍了如何创建一个Django项目并启动Django的开发服务器.本章你将学到用Django创建动态网页的基本知识. 同时,也教会大家怎么在本地机器上建立一个独 ...
- 【iOS】Swift GCD-上
尽管Grand Central Dispatch(GCD)已经存在一段时间了,但并非每个人都知道怎么使用它.这是情有可原的,因为并发很棘手,而且GCD本身基于C的API在Swift世界中很刺眼. 在这 ...
- 清华集训2015 V
#164. [清华集训2015]V http://uoj.ac/problem/164 统计 描述 提交 自定义测试 Picks博士观察完金星凌日后,设计了一个复杂的电阻器.为了简化题目,题目中的常数 ...
- 14-TypeScript简单工厂模式
在TypeScript中,要调用功能,通常在调用方通过实例化被调用方对象来调用相关方法,但这种实现在调用方和被调用方形成了强耦合的关系. 另外如果被调用方有种实现,在调用方需要根据场景去实例化不同的类 ...
- Python 列表嵌套多种实现方式
#coding=utf-8 list=[] for i in range(1,101): list.append(i) # print(list) tempList=[] newList=[] whi ...
- Python内置函数(22)——list
英文文档: class list([iterable]) Rather than being a function, list is actually a mutable sequence type, ...
- groovy入门(2-1)Groovy的Maven插件安装:Plugin execution not covered by lifecycle configuration
参考链接:http://www.cnblogs.com/rightmin/p/4945797.html 1.引入groovy的jar包 2.引入groovy编译插件 3.遇到问题 Plugin exe ...
- ASP.NET CORE系列【二】使用Entity Framework Core进行增删改查
介绍 EntityFrameworkCore EF core 是一个轻量级的,可扩展的EF的跨平台版本.对于EF而言 EF core 包含许多提升和新特性,同时 EF core 是一个全新的代码库,并 ...
- jsp连接书库DatabaseUtil类
public class DatabaseUtil { private static String driver = ConfigManager.getProperties("driver& ...