把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end
摘要: 题面传送门 明显可以尺取法。 先把每一位取反,则枚举右端点,左端点单调不降则直接暴力枚举即可。 代码实现: #include<cstdio> #define max(a,b) ((a)>(b)?(a):(b)) using namespace std; int n,m,k,a[300039],q[3 阅读全文
posted @ 2020-05-12 20:39 275307894a 阅读(46) 评论(0) 推荐(0)
摘要: 题面传送门 第二道$Ynoi$题目。感觉还是很良心的。 区间相同个数,很容易想到$bitset$。 然后可以用莫队维护出来,最后与一下就好了。 但是相同的数怎么办呢? 离散的时候把位置空出来,之后维护一下有几个就好了。 注意加一些常数优化之类的。 代码实现: #include<cstdio> #in 阅读全文
posted @ 2020-05-10 15:17 275307894a 阅读(47) 评论(0) 推荐(0)
摘要: 看来别的博客都没有讲清楚,那我就来讲一下。 一下纯属作者个人思路,若有不对请提出。 在这篇文章中,$/$表示向下取整的除。 求$ax+by=c$的解 显然是不定方程。有无解我们可以用裴蜀定理验证,此处当做其有解。 我们可以尝试用$y$表示出$x$,比如这样:\(x=\frac{c-by}{a}\) 阅读全文
posted @ 2020-05-08 20:01 275307894a 阅读(52) 评论(0) 推荐(0)
摘要: 题面传送门 启发式合并大法吼啊。 优雅的暴力。 暴力:遍历整个数组去修改,时间复杂度$O(n2)$ 换一个思路暴力:对于每一个$a_i$维护一个队列,每次把两个队列合并。时间复杂度仍是$O(n2)$ 那可不可以优化一下呢? 每次我们不能把小的合并到大的上面去吗,这样可以减少点常数。 等等,你确定是常 阅读全文
posted @ 2020-05-02 21:52 275307894a 阅读(41) 评论(0) 推荐(0)
摘要: 这次题目很简单,但仍然改变不了我没法阿克的命运(还是菜 开题开错顺序(滚粗$flag+1$),把第二题做成了第一题,心想着这次比上次良心于是怀着一种切sb题的思路把$T2$给切掉了,然后发现看错题面,之后觉得题面对了以后更$sb$了,不就是个线段树维护元素平方和吗,写了十分钟,挂上了一个莫队写的对拍 阅读全文
posted @ 2020-04-25 16:17 275307894a 阅读(69) 评论(0) 推荐(0)
摘要: 题面传送门 考虑像HH的项链那道题一样维护最后一个位置。 如果在第$j$个点设$f_i$为当前$i$到$j$的答案,那么如果没有平方,显然可以对于每一个最后一个点$last$,将$1$到$last$都加上$1$。查询时区间查询即可。 可现在是平方和,我们知道$(x+y)2=x2+2xy+y^2$那么 阅读全文
posted @ 2020-04-25 12:34 275307894a 阅读(51) 评论(0) 推荐(0)
摘要: 题面传送门 考虑一下,其实只要管一个两个倍数点到另一个两个倍数点就好了。 设$p_1<p_2$ 贪心一下,发现两个倍数点都赋值$p_2$就是最优的。 对于任意一个$p_2$的倍数点,任意一个$p_1$的倍数点距离他不超过$gcd(p_1,p_2)$,且必定有一个点在这个位置。 所以就可以根据这个最优 阅读全文
posted @ 2020-04-25 12:26 275307894a 阅读(64) 评论(0) 推荐(0)
摘要: 题面传送门 显然可以数据分治啊。 对于$k>\sqrt n$时,珂以跑暴力,单次复杂度不超过$\sqrt n$ 对于$k<\sqrt n$,珂以离线对每一个$k$跑一遍$O(n)$的预处理,将所有的$k$处理出来,直接调用即可。每次均摊复杂度$O(\sqrt n)$ 总复杂度$O(n\sqrt n) 阅读全文
posted @ 2020-04-24 20:54 275307894a 阅读(55) 评论(0) 推荐(0)
摘要: 题面传送门 挺入门的状压$dp$题。 先枚举状态,然后枚举最后一个合并的是哪一个,状态转移方程: \(f_{i}=min(f_{i-2^j}+\sum\limits_{k=1}^{n}{1[a_k=j]}-\sum\limits_{z=\sum\limits_{s=1}^{m}(\sum\limit 阅读全文
posted @ 2020-04-23 13:39 275307894a 阅读(38) 评论(0) 推荐(0)
摘要: 题面传送门 一倒蛮好的$dp$题。 $n$方$dp$谁都会打,状态转移方程$f_i=min(f_j+max(a_k))$,其中$j\leq k\leq i$,\(fs\leq j\leq i\),$fs$满足$\sum\limits_\leq m &&\sum\limits_>m$。 考虑优化,先用 阅读全文
posted @ 2020-04-22 11:02 275307894a 阅读(58) 评论(0) 推荐(0)
摘要: 题面传送门 和HH的项链那道题有点像。 将所有询问离线,按右端点排序。 维护每种颜色最近出现的和第二近出现的。当加入一种颜色时,将其第二近出现的删掉,使原来第一出现的变为第二出现的。 然后来了一个询问,查询比他大的数的个数就是答案,树状数组或线段树或平衡树随便维护一下就好了。 代码实现: #incl 阅读全文
posted @ 2020-04-22 08:29 275307894a 阅读(74) 评论(0) 推荐(0)
摘要: 题面传送门 一道蛮好的区间$dp$。 设$f_{i,j,0}$表示最后一个人从左边进来的方案数,$f_{i,j1}$表示从右边进来的方案数,分类讨论一下就好了。 代码实现: #include<cstdio> #define mod 19650827 using namespace std; int 阅读全文
posted @ 2020-04-22 08:23 275307894a 阅读(41) 评论(0) 推荐(0)
摘要: 题面传送门 蛮好的一道题目。 考虑状压。对原数列做前缀和,每一位代表是奇数个还是偶数个。那么前缀和亦或就可以得到一个区间。 对于一个区间,只有亦或和是$0$或$2^k$时才能构成回文串。那么莫队增加和修改时枚举$k$即可。 注意前缀和要往前一位。 时间复杂度$O(26n\sqrt n)$ 注意常数不 阅读全文
posted @ 2020-04-20 12:00 275307894a 阅读(43) 评论(0) 推荐(0)
摘要: 题面传送门 $E$题居然还能放这种水题。 这样走只有三种走法。 \(x->y\) \(x->a->b->y\) \(x->b->a->y\) 分别求$LCA$即可。 代码实现: #include<cstdio> #include<cstring> using namespace std; int n 阅读全文
posted @ 2020-04-18 13:31 275307894a 阅读(38) 评论(0) 推荐(0)
摘要: 题面传送门 貌似弱省省选不咋地。 考虑贪心,折返走要两倍的步数,而最后一次仅需一倍的步数。 首先$dfs$求出最长链,然后将步数尽量给最长链,剩下的步数给往返走。 注意不能超过$n$。 代码实现: #include<cstdio> #include<cstring> #define max(a,b) 阅读全文
posted @ 2020-04-18 13:28 275307894a 阅读(50) 评论(0) 推荐(0)
摘要: 题面传送门 Ynoi虐我千百遍,我待sjjg如初见 话说$Ynoi$真是毒瘤,不开寄存器居然过不去。 这道题前三问可以从小清新人渣的本愿过来,开个$bitset$暴力乱搞就好了。 主要是第四问。 考虑暴力乱搞(这还要考虑?),那么$x=1$的时候复杂度将会很高,达到了$\frac$。 考虑优化。 采 阅读全文
posted @ 2020-04-17 16:19 275307894a 阅读(80) 评论(0) 推荐(0)
摘要: 题面传送门 其实蛮简单的,不应该有蓝题。 只要找到最小的$5$和$2$即可。 但是注意要特判$0$ 代码实现 #include<cstdio> #define min(a,b) ((a)<(b)?(a):(b)) using namespace std; int n,m,k,s,tx,ty,a[10 阅读全文
posted @ 2020-04-16 09:33 275307894a 阅读(49) 评论(0) 推荐(0)
摘要: 题面传送门 $90$分做法见这里 正解是线段树+分治。 我们尝试在线段树上跑分治,则维护线段树每个节点的有几个位置没被选两边跑分治就好了。 代码实现: #include<cstdio> using namespace std; int n,sum[4000039],now[1000039],a[10 阅读全文
posted @ 2020-04-11 16:31 275307894a 阅读(61) 评论(0) 推荐(0)
摘要: 题面传送门 $70$分做法参考这篇博客 考虑在$70$分做法上优化。 $70$分是一个一个找的。我们可以用树状数组维护序列$a_i$为$i$之前有几个位置被占了。 则当$i<j$时,\(a_i\leq a_j\),这满足二分的性质,所以我们可以二分找位置。 时间复杂度$O(nlog^2n)$ 代码实 阅读全文
posted @ 2020-04-10 20:13 275307894a 阅读(69) 评论(0) 推荐(0)
摘要: 题面传送门 这道题我也是醉了。 先离散化,离散完之后上带修莫队板子求$mex$基本上就好了。 啥?你问我带修莫队怎么打? 带修莫队比普通莫队基础上加上一维时间轴。分块大小为$n^{\frac{2}{3}}$,总复杂度为$O(n^{\frac{5}{3}})$。 那$mex$怎么统计呢? 如果这个$m 阅读全文
posted @ 2020-04-10 13:33 275307894a 阅读(55) 评论(0) 推荐(0)
摘要: 题面传送门 题目告诉我们,没有三点共线,所以我们可以容斥。 两条线,$x,y$相等,即平行。那么我们可以用总可能数-$2$条直线平行-$3$条直线平行。 用$hash$来判断平行线。 代码实现: #include<cstdio> #include<cstring> #include<cmath> # 阅读全文
posted @ 2020-04-09 13:09 275307894a 阅读(55) 评论(0) 推荐(0)
摘要: 题面传送门 作为$div1$的第一题,还是偏水的。 这题明显是个·构造。 先判无解,则铺不满是无解,铺过头了也是无解。 那么接下来就很好构造了。刚开始让每个区间完全平铺,然后等到每个区间只有一个时,改成一个一个铺。 代码实现: #include<cstdio> using namespace std 阅读全文
posted @ 2020-04-08 20:27 275307894a 阅读(47) 评论(0) 推荐(0)
摘要: 题面传送门 看数据范围,对于 $100%$的数据 \(1 \leq n \leq 10^5, 1 \leq A_i \leq 10^9, 1 \leq m \leq10^5\) ,可能是$O(nlogn)$或$O(n\sqrt n)$,再看开了两秒,就知道是$O(n\sqrt n)$了。 这道题是一 阅读全文
posted @ 2020-04-08 15:37 275307894a 阅读(38) 评论(0) 推荐(0)
摘要: 题面传送门 我们可以尝试贪心。 这个问题满足二分性质,即如果 i ... 阅读全文
posted @ 2020-04-07 13:55 275307894a 阅读(42) 评论(0) 推荐(0)
摘要: 题面传送门 考虑用哈希折半搜索来解决。 观察以下原式$a_m+a_n+a_p=a_i,m,n,p<i$考虑移项得到$a_m+a_n=a_i-a_p,m,n,p<i$,那么两边就可以分别枚举了。 代码实现: #include<cstdio> #include<cstring> #include<cma 阅读全文
posted @ 2020-04-06 17:16 275307894a 阅读(35) 评论(0) 推荐(0)
浏览器标题切换
浏览器标题切换end