随笔分类 - 线段树/树状数组
摘要:A.数列 显然每个数的答案是互相独立的,直接扩欧求解。我们需要最小化$ax+by=gcd(a,b)$中的$|x|+|y|$,而显然当x或y靠近0时答案可能最优,列个不等式求一下即可。 能$O(1)$千万不要懒。 B.数对 可任意排序看似难以解决,但考虑一下$a$和$b$之间的限制,不难发现如果$a_
阅读全文
摘要:A.小P的2048 作为一个看B哥玩了一个寒假的人这种题闭眼切好吧 模拟即可。程序模块化后直接复制粘贴。 说什么模拟不能复制粘贴的都没水平 B.小P的单调数列 结论:必然存在一个最优子序列,它的单调区间数不超过2。 那么,其实最优子序列只有可能是单增或单增+单减。 正反都跑一遍dp,树状数组优化即可
阅读全文
摘要:时隔多年,终于又有了一套我能改完的题…… A.神炎皇 遇到这种要求整除的题显然拆出gcd 设$d=gcd(a,b)\ \ \ a'=\frac{a}{d} \ \ \ b'=\frac{b}{d}$ 原式转化为$(a'd+b'd)|(a'db'd)$ $(a'+b')|(a'b'd)$ 又因为$gc
阅读全文
摘要:A.Graph 因为点可以随便走,所以对于每个联通块,答案为边数/2向下取整。 用类似Tarjan的方式,对于每个联通块建立一棵搜索树,尽量让每一个节点的儿子两两配对,如果做不到就用上头顶的天线。 B.Permutatin 从原排列入手比较困难,我们求出这个排列的$pos$数组($pos[a[i]]
阅读全文
摘要:回去要补一下命运石之门了…… A.嘟嘟噜 给定报数次数的约瑟夫,递推式为$ans=(ans+m)\% i$。 考虑优化,中间很多次$+m$后是不用取模的,这种情况就可以把加法变乘法了。问题在于如何找到下一次需要取模的位置。 解不等式$ans+km \ge i+k$即可,需要处理一下边界。 据说可以证
阅读全文
摘要:以后题解还是单独放吧。 A.Divisors 根号筛求所有数的因子,扫一遍去重统计即可。 B.Market 离线询问。把询问和商店都按时间排序,维护一个指针把所有能被当前计划购买的商品都放进来跑一次背包。 注意到话费很大而价值很小,那么把价值作为dp数组下标,后缀取min保证单调后二分查找最优解即可
阅读全文
摘要:对于$100 \%$的数据,$1≤n,m≤1e6 \ \ \ 0<=x_i,y_i<20170927 \ \ \ 1≤l_i,r_i≤n $ $Solution:$ 一开始没看懂题。后来大致理解了一下,所谓的v是一个二维向量,有x和y两个参数。那个$\times$是叉乘,即$(x_i y_j-x_j
阅读全文
摘要:A.平均数 看到第K小,又确定跟平衡树/主席树没有关系,可以把问题转化为有K-1个答案比它小再考虑二分。 二分平均值x,之后将原序列统一减去x。这时序列中区间和<0的区间个数就是原序列中平均值小于x的区间个数。 求个前缀和,那么区间和<0转化成$sum_l > sum_r$,归并排序求逆序对即可。复
阅读全文
摘要:状态极差的两场。感觉现在自己的思维方式很是有问题。 (但愿今天考试开始的一刻我不会看到H I J) A 考场上打了最短路+贪心,水了60。 然而正解其实比那30分贪心好想多了。 进行n次乘法后的结果一定可以化成$S\times b^n + m\times a$的形式,并且$m$是b的若干次幂(带系数
阅读全文
摘要:中间咕的几次考试就先咕着吧…… A.夜莺与玫瑰 枚举斜率。只考虑斜率为正且不平行于坐标轴的直线,最后把$ans\times 2$再$+1$即可。 首先肯定需要用$gcd(i,j)==1$确保斜率的唯一性,但由于题目中Deadline的定义是直线不是线段,所以一个方向只能有一条,需要去重。那么我们计算
阅读全文
摘要:来自达哥的问候…… A.金 显然本题的考察点在于高精而不是裴蜀定理 根据裴蜀定理易得答案为Yes当且仅当$gcd(n,m)=1$,那么考虑怎么在高精度下判互质。 如果$n,m$都能被2整除,那么显然不互质。 如果其中一个可以而另一个不可以(以n能被2整除为例),$gcd(n,m)$就可以转化为$gc
阅读全文
摘要:A.math 考场乱搞拿了95,2333。 考虑裴蜀定理:$ax+by=z$存在整数解,当且仅当$gcd(a,b)|z$。 那么如果某个数能够被拼出来,就必须满足所有$a_i$的$gcd$是它的因子。直接枚举倍数即可。 B.biology 首先将$a[i][j]$离散化,值相同的方格坐标都放到一起。
阅读全文
摘要:A.字符串 Catalan数不能再裸了 #include<cstdio> #include<iostream> #include<cstring> using namespace std; typedef long long ll; const ll mod=20100403; const int
阅读全文
摘要:来自达哥的问候…… A.周 究级难题,完全不可做QAQ #include<cstdio> #include<iostream> #include<cstring> using namespace std; typedef long long ll; int n; ll a[25],b[25],c[2
阅读全文
摘要:A.Blue 出题人大概已经去为国家处理积压子弹了? 贪心,让每一只青蛙(我怂行吧)都尽量往远跳,能到达的最远的被踩了就跳次远的,以此类推。可以维护一个单调队列,表示每只青蛙的位置(开始都是0)。然后按顺序扫一遍每个石头,如果队首的青蛙不能跳过去就放弃它直接pop掉,如果能跳就把石头位置从队尾pus
阅读全文
摘要:当垃圾已经成为一种常态233333 A.旋转子段 考场上的$n^2$手残少了20分,555 (主要是因为实在打不出来$n^3$的做法所以写不了对拍?ccc为什么考场上没有想起有reverse()这么毒瘤的操作啊) 很显然要反转的区间两端一定是一对$i,a[i]$(具体谁在左谁在右看大小关系),因为如
阅读全文
摘要:A.矩阵游戏 其实挺水的? 考场上根本没有管出题人的疯狂暗示(诶这出题人有毛病吧这么简单的东西写一大堆柿子),而且推公式能力近乎没有,所以死掉了。 很显然乘法有交换率结合率所以操作顺序对最终结果没什么影响对吧,垃圾如我都能一眼看出来。 统计一下每行总共乘的倍数$h_i$,每列总共乘的倍数$l_i$,
阅读全文
摘要:4653: [Noi2016]区间 Description 在数轴上有 n个闭区间 [l1,r1],[l2,r2],...,[ln,rn]。现在要从中选出 m 个区间,使得这 m个区间共同包含至少一个位置。换句话说,就是使得存在一个 x,使得对于每一个被选中的区间 [li,ri],都有 li≤x≤r
阅读全文

浙公网安备 33010602011771号