FJOI2016 神秘数】的更多相关文章

[BZOJ4408][FJOI2016]神秘数(主席树) 题面 BZOJ 洛谷 题解 考虑只有一次询问. 我们把所有数排个序,假设当前可以表示出的最大数是\(x\). 起始\(x=0\). 依次考虑接下来的每个数\(a_i\),如果\(a_i\le x\),那么没有啥问题,\(x+=a_i\). 如果\(a_i=x+1\),那么也没有问题,\(x+=a_i\). 如果\(a_i>x\),那么\(x+1\)就拼不出来了. 那么显然考虑每次询问,首先把所有\(\le x\)的数全部加进来,然后考虑下…
[LG4587][FJOI2016]神秘数 题面 洛谷 题解 首先我们想一想暴力怎么做 对于一段区间\([l,r]\) 我们先将它之间的数升序排序 从左往右扫, 设当前我们可以表示出的数为\([1,x]\),待插入的数为\(a_i\) 会有下面两种情况: 1.\(a_i> x+1\)时,\(x+1\)肯定表示不出来\(ans=x+1\) 2.\(a_i\leq x+1\)时,值域变为\([1,x+a_i]\),继续扫 那么我们暴力的复杂度为\(O(nmlogn)\) 考虑怎么优化这个过程 还是用…
(bzoj4408)[FJOI2016]神秘数(可持久化线段树) bzoj luogu 对于一个区间的数,排序之后从左到右每一个数扫 如果扫到某个数a时已经证明了前面的数能表示[1,x],那么分情况: a>x+1,不能继续表示下去,答案就是x+1 否则表示区间变为[1,x+a]. 用主席树上二分优化这个过程. 1 #include<cstdio> 2 #include<algorithm> 3 using namespace std; 4 const int N=100069…
Description 一个可重复数字集合$S$的神秘数定义为最小的不能被$S$的子集的和表示的正整数. 例如$S={1,1,1,4,13}$, $1=1$, $2=1+1$, $3=1+1+1$, $4=4$, $5=4+1$, $6=4+1+1$, $7=4+1+1+1$, $8$无法表示为集合$S$的子集的和,故集合$S$的神秘数为$8$. 现给定$n$个正整数$a[1]-a[n]$,$m$个询问,每次询问给定一个区间$[l,r](l\;\leq\;r)$,求由$a[l],a[l+1],-…
题目描述 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13}, 1 = 1 2 = 1+1 3 = 1+1+1 4 = 4 5 = 4+1 6 = 4+1+1 7 = 4+1+1+1 8无法表示为集合S的子集的和,故集合S的神秘数为8. 现给定n个正整数a[1]..a[n],m个询问,每次询问给定一个区间l,r,求由a[l],a[l+1],…,a[r]所构成的可重复数字集合的神秘数. 题解 加入我们查询的区间为l-r. 我们先查询有几个1,然…
一道好冷门的好题啊,算是对于一个小结论和数据结构的一点考验吧 首先看完题目我们发现要从这个神秘数的性质入手,我们观察or手玩可得: 如果有\(x\)个\(1\),那么\([1,x]\)都是可以表示出来的 如果我此时加入的数\(y>x\),那么这个数无法被表示,因此便为答案 如果我此时加入的数\(y\le x\),那么这个数可以被表示,并且可以表示的区间变成了\([1,x+y]\) 重复以上过程,肯定可以得出答案 但这样对于每一次询问都要进行一次排序,时间复杂度为\(O(nm\ logn)\),肯…
https://www.lydsy.com/JudgeOnline/problem.php?id=4299 https://www.lydsy.com/JudgeOnline/problem.php?id=4408 https://www.luogu.org/problemnew/show/P4587 https://loj.ac/problem/2174 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13}, 1 = 1 2 = 1+1 3…
Description 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13},1 = 12 = 1+13 = 1+1+14 = 45 = 4+16 = 4+1+17 = 4+1+1+18无法表示为集合S的子集的和,故集合S的神秘数为8.现给定n个正整数a[1]..a[n],m个询问,每次询问给定一个区间[l,r](l<=r),求由a[l],a[l+1],…,a[r]所构成的可重复数字集合的神秘数. Input 第一行一个整数n,表示数字个数.第…
大鸽子 llmmkk 正在补8.3号咕掉的题 时隔两个月,再看到这道题,我又是一脸懵,这种思维的培养太重要了 链接: P4587 题意: 给出 \(n\) 个点的序列,\(m\) 次询问区间神秘数. 神秘数定义为最小的不能被序列的子集的和表示的正整数. 如序列 \(\{1,1,4,1,13\}\) 的神秘数是 \(8\). 分析: 这题重点在神秘数的求法,先考虑暴力求法,由于定义是序列子集,那么首先考虑将该区间排序,可能会得到一些有用的性质. 假设当前能够表示的区间是 \([1,sum]\),对…
题目大意:给定一个长度为$n$的正整数序列$a_i$,$m$次询问,每次询问$[l,r]$,求最小的无法表示成$a_l,a_{l+1},\ldots,a_r$的子集之和的正整数. 数据范围:$1\leq l\leq r\leq n\leq 10^5,1\leq m\leq 10^5,\sum a_i\leq 10^9$ (FJOI考Codechef原题???) 这个套路之前学校训练的时候也遇到过,这里又遇到了... 我们考虑对于一组询问如何计算. 首先,我们知道$[1,0]$是肯定可以表示出来的…