把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

04 2020 档案

摘要:这次题目很简单,但仍然改变不了我没法阿克的命运(还是菜 开题开错顺序(滚粗flag+1),把第二题做成了第一题,心想着这次比上次良心于是怀着一种切sb题的思路把T2给切掉了,然后发现看错题面,之后觉得题面对了以后更sb了,不就是个线段树维护元素平方和吗,写了十分钟,挂上了一个莫队写的对拍 阅读全文
posted @ 2020-04-25 16:17 275307894a 阅读(63) 评论(0) 推荐(0) 编辑
摘要:题面传送门 考虑像HH的项链那道题一样维护最后一个位置。 如果在第j个点设fi为当前ij的答案,那么如果没有平方,显然可以对于每一个最后一个点last,将1last都加上1。查询时区间查询即可。 可现在是平方和,我们知道(x+y)2=x2+2xy+y2那么 阅读全文
posted @ 2020-04-25 12:34 275307894a 阅读(44) 评论(0) 推荐(0) 编辑
摘要:题面传送门 考虑一下,其实只要管一个两个倍数点到另一个两个倍数点就好了。 设p1<p2 贪心一下,发现两个倍数点都赋值p2就是最优的。 对于任意一个p2的倍数点,任意一个p1的倍数点距离他不超过gcd(p1,p2),且必定有一个点在这个位置。 所以就可以根据这个最优 阅读全文
posted @ 2020-04-25 12:26 275307894a 阅读(58) 评论(0) 推荐(0) 编辑
摘要:题面传送门 显然可以数据分治啊。 对于k>n时,珂以跑暴力,单次复杂度不超过n 对于k<n,珂以离线对每一个k跑一遍O(n)的预处理,将所有的k处理出来,直接调用即可。每次均摊复杂度O(n) 总复杂度$O(n\sqrt n) 阅读全文
posted @ 2020-04-24 20:54 275307894a 阅读(51) 评论(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 阅读(34) 评论(0) 推荐(0) 编辑
摘要:题面传送门 一倒蛮好的dp题。 ndp谁都会打,状态转移方程fi=min(fj+max(ak)),其中jki,fsjifs满足\sum\limits_\leq m &&\sum\limits_>m。 考虑优化,先用 阅读全文
posted @ 2020-04-22 11:02 275307894a 阅读(54) 评论(0) 推荐(0) 编辑
摘要:题面传送门 和HH的项链那道题有点像。 将所有询问离线,按右端点排序。 维护每种颜色最近出现的和第二近出现的。当加入一种颜色时,将其第二近出现的删掉,使原来第一出现的变为第二出现的。 然后来了一个询问,查询比他大的数的个数就是答案,树状数组或线段树或平衡树随便维护一下就好了。 代码实现: #incl 阅读全文
posted @ 2020-04-22 08:29 275307894a 阅读(62) 评论(0) 推荐(0) 编辑
摘要:题面传送门 一道蛮好的区间dp。 设fi,j,0表示最后一个人从左边进来的方案数,fi,j1表示从右边进来的方案数,分类讨论一下就好了。 代码实现: #include<cstdio> #define mod 19650827 using namespace std; int 阅读全文
posted @ 2020-04-22 08:23 275307894a 阅读(36) 评论(0) 推荐(0) 编辑
摘要:题面传送门 蛮好的一道题目。 考虑状压。对原数列做前缀和,每一位代表是奇数个还是偶数个。那么前缀和亦或就可以得到一个区间。 对于一个区间,只有亦或和是02k时才能构成回文串。那么莫队增加和修改时枚举k即可。 注意前缀和要往前一位。 时间复杂度O(26nn) 注意常数不 阅读全文
posted @ 2020-04-20 12:00 275307894a 阅读(38) 评论(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 阅读(35) 评论(0) 推荐(0) 编辑
摘要:题面传送门 貌似弱省省选不咋地。 考虑贪心,折返走要两倍的步数,而最后一次仅需一倍的步数。 首先dfs求出最长链,然后将步数尽量给最长链,剩下的步数给往返走。 注意不能超过n。 代码实现: #include<cstdio> #include<cstring> #define max(a,b) 阅读全文
posted @ 2020-04-18 13:28 275307894a 阅读(47) 评论(0) 推荐(0) 编辑
摘要:题面传送门 Ynoi虐我千百遍,我待sjjg如初见 话说Ynoi真是毒瘤,不开寄存器居然过不去。 这道题前三问可以从小清新人渣的本愿过来,开个bitset暴力乱搞就好了。 主要是第四问。 考虑暴力乱搞(这还要考虑?),那么x=1的时候复杂度将会很高,达到了\frac。 考虑优化。 采 阅读全文
posted @ 2020-04-17 16:19 275307894a 阅读(74) 评论(0) 推荐(0) 编辑
摘要:题面传送门 其实蛮简单的,不应该有蓝题。 只要找到最小的52即可。 但是注意要特判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 阅读(43) 评论(0) 推荐(0) 编辑
摘要:题面传送门 90分做法见这里 正解是线段树+分治。 我们尝试在线段树上跑分治,则维护线段树每个节点的有几个位置没被选两边跑分治就好了。 代码实现: #include<cstdio> using namespace std; int n,sum[4000039],now[1000039],a[10 阅读全文
posted @ 2020-04-11 16:31 275307894a 阅读(57) 评论(0) 推荐(0) 编辑
摘要:题面传送门 70分做法参考这篇博客 考虑在70分做法上优化。 70分是一个一个找的。我们可以用树状数组维护序列aii之前有几个位置被占了。 则当i<j时,aiaj,这满足二分的性质,所以我们可以二分找位置。 时间复杂度O(nlog2n) 代码实 阅读全文
posted @ 2020-04-10 20:13 275307894a 阅读(62) 评论(0) 推荐(0) 编辑
摘要:题面传送门 这道题我也是醉了。 先离散化,离散完之后上带修莫队板子求mex基本上就好了。 啥?你问我带修莫队怎么打? 带修莫队比普通莫队基础上加上一维时间轴。分块大小为n23,总复杂度为O(n53)。 那mex怎么统计呢? 如果这个$m 阅读全文
posted @ 2020-04-10 13:33 275307894a 阅读(51) 评论(0) 推荐(0) 编辑
摘要:题面传送门 题目告诉我们,没有三点共线,所以我们可以容斥。 两条线,x,y相等,即平行。那么我们可以用总可能数-2条直线平行-3条直线平行。 用hash来判断平行线。 代码实现: #include<cstdio> #include<cstring> #include<cmath> # 阅读全文
posted @ 2020-04-09 13:09 275307894a 阅读(51) 评论(0) 推荐(0) 编辑
摘要:题面传送门 作为div1的第一题,还是偏水的。 这题明显是个·构造。 先判无解,则铺不满是无解,铺过头了也是无解。 那么接下来就很好构造了。刚开始让每个区间完全平铺,然后等到每个区间只有一个时,改成一个一个铺。 代码实现: #include<cstdio> using namespace std 阅读全文
posted @ 2020-04-08 20:27 275307894a 阅读(43) 评论(0) 推荐(0) 编辑
摘要:题面传送门 看数据范围,对于 100的数据 1n1051Ai1091m105 ,可能是O(nlogn)O(nn),再看开了两秒,就知道是O(nn)了。 这道题是一 阅读全文
posted @ 2020-04-08 15:37 275307894a 阅读(33) 评论(0) 推荐(0) 编辑
摘要:题面传送门 我们可以尝试贪心。 这个问题满足二分性质,即如果 i ... 阅读全文
posted @ 2020-04-07 13:55 275307894a 阅读(39) 评论(0) 推荐(0) 编辑
摘要:题面传送门 考虑用哈希折半搜索来解决。 观察以下原式am+an+ap=ai,m,n,p<i考虑移项得到am+an=aiap,m,n,p<i,那么两边就可以分别枚举了。 代码实现: #include<cstdio> #include<cstring> #include<cma 阅读全文
posted @ 2020-04-06 17:16 275307894a 阅读(30) 评论(0) 推荐(0) 编辑
摘要:题面传送门 这道题可以用EK算法来解。啥?你问我EK是啥? 我们可以尝试着用爆搜来打网络流,可是无疑会T 爆搜的慢体现在哪里呢?爆搜走了很多重复的路。 这时EK算法的精髓就可以出来了。 EK算法对于每一条边s建一条反向边s1,并满足s+s1=w。这条反向边有着断边和连 阅读全文
posted @ 2020-04-06 14:41 275307894a 阅读(42) 评论(0) 推荐(0) 编辑
摘要:题面传送门 考虑用树形dp来解。 则设fi为让i节点的子树的叶子节点被封锁的最小值,那么fi=min(w,(i,j)E) 跑一遍dfs就可以求出答案 时间复杂度O(n) 代码实现: #include<cstdio> #include<cstr 阅读全文
posted @ 2020-04-06 14:34 275307894a 阅读(38) 评论(0) 推荐(0) 编辑
摘要:题面传送门 不知道你看没看出来这里有两个链接啊。 题目叫我们求子串,就很容易想到前缀和,异或又是拥有前缀和性质的,所以就可以用莫队来求啦。 记录fii这个数出现的次数,那么莫队的前移后移就可以通过kal来转移。 顺序很重要!! 代码实现: #include<cstdio> #in 阅读全文
posted @ 2020-04-04 13:27 275307894a 阅读(40) 评论(0) 推荐(0) 编辑
摘要:题面传送门 看上去很玄学的亚子。 我们很容易发现,要想rp最大,要让每次取出的都是一个严格上升的序列,则原问题转换成最少取几次。 那么对于有vi的一个数,一定要取vi次才能取完。则答案为区间内最多的数。则变成了求区间众数。 那么可以用莫队求区间众数,开一个fi数组记录i这个 阅读全文
posted @ 2020-04-03 17:14 275307894a 阅读(38) 评论(0) 推荐(0) 编辑
摘要:题面传送门 对于这道题,正着枚举是很难枚举的,但我们可以反着来。 俗话说得好,正难则反。 考虑最小的一个数hi,则所有数都是大于等于它的,所以它的排位应该是在vi。 考虑第二小的数hj,则除了hi没有其他数小于它,所以我们可以直接找到除了vi外的第i位,它的答案就是 阅读全文
posted @ 2020-04-03 12:43 275307894a 阅读(39) 评论(0) 推荐(0) 编辑
摘要:题面传送门 考虑把两个操作合并,会发现把每4个分为一组,会剩下第3个。 则我们可以很容易地推出递推式:fx=4×fx+141 则我们就可以很容易地找到最后剩下的位置了。 那么根据位置求数字就很简单了。 代码实现: #include<cstd 阅读全文
posted @ 2020-04-03 09:31 275307894a 阅读(52) 评论(0) 推荐(0) 编辑
摘要:题面传送门 题号好评。 这道题状态不难想,就是设fi,j为第i个站点换了第j次车的方案数。一般的转移方程为fi,j=fi1,j1+fi+1,j1空间爆了。 我们注意到,AE是两个对称的点,所以我们可以把它对称成两部分,空间减小一半,如果你卡空间 阅读全文
posted @ 2020-04-02 17:34 275307894a 阅读(52) 评论(0) 推荐(0) 编辑
摘要:题面传送门 这道题......真的无语了。 一眼看上去这道题似乎可以状压dp,只有LR两种,然后我手算把样例转成了二进制,准备推转移方程,结果惊奇的发现RBR=(101)2=2,这不就是样例的答案吗?接着推了第二个样例的答案,居然也对了。 言归正传,那么我们设fi为把i阅读全文
posted @ 2020-04-01 21:11 275307894a 阅读(52) 评论(0) 推荐(0) 编辑
摘要:题面传送门 题目的询问是互相独立的,这一点给了我们思考的空间。 我们可以用单调队列优化多重背包做正反两趟背包,然后对于询问用dp1d1,k+dp1d1,eik来拼,其中0kei,取最大值。 代码实现: #include<cstdio> #defi 阅读全文
posted @ 2020-04-01 12:18 275307894a 阅读(44) 评论(0) 推荐(0) 编辑

浏览器标题切换
浏览器标题切换end
点击右上角即可分享
微信分享提示