自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

EM LGH

It's Time to Make History

  • 博客(53)
  • 收藏
  • 关注

原创 luoguP6640 [BJOI2020] 封印 SAM+线段树

不难的一道字符串题. 建立 $T$ 的 SAM,然后根据 $S$ 中的询问按照右端点离线,依次在 $T$ 的 SAM 上匹配. 查询的时候分两种情况讨论一下,用线段树维护就行了.code:#include <cstdio> #include <cstring>#include <algorithm> #defin...

2020-06-29 11:23:00 138 1

原创 luoguP2137 Gty的妹子树 分块+主席树+DFS序

对于一类带修改问题可以采用对时间(操作)分块,然后定期重构的方式来维护. 设块的大小为 $B$,则重构 $\frac{Q}{B}$ 次,每次查询的复杂度为 $O(B \log n)$. 计算一下 $B$ 的大小来平衡重构和查询的复杂度即可. 这种纯数据结构题都挺好写的.code:#include <cstdio> #include &l...

2020-06-29 10:07:00 74

原创 Codeforces Round #650 (Div. 3)

打的 vp,花了 1h 30min 切了前 6 个,后来花了 20min 把最后一题也切掉了. 难度不大,但是想要进前 10 的话手速还是要快一点. A - Short Substrings观察一下字符串,然后发现相同的保留一个就行.#include <bits/stdc++.h> #define N 1087 #define ll long ...

2020-06-28 19:25:00 100

原创 JLOI2020 滚粗记

Day-20省队选拔日期公布了,果断停课.Day-1吉林省总共 8 个名额,除去女生的话只剩下 7 个了.联赛考得非常崩,大概排在全省第 7. 听说师大有两个联赛成绩比我高的不学了,那进队岂不是很稳吉林省基本上只有师大和吉大两个学校会进行系统训练,所以除了这两个学校之外的学校的选手基本上不太会造成威胁. 然后我们学校有 3 个名额(只有 2 个人去) ,压力不...

2020-06-23 20:00:00 168

原创 LOJ#504. 「LibreOJ β Round」ZQC 的手办 线段树+堆

由于只有取 max 标记,所以直接在线段树上维护就行. 然后取前 k 大的话就用一个堆来维护四元组 $(l,r,v,pos)$ 表示区间 $[l,r]$ 的最小值为 $v$ ,位置为 pos.查询的时候按照 $v$ 递增的顺序取出堆顶,然后按照 pos 分裂,再扔回堆里就行了.code:#include <cstdio> #include &lt...

2020-06-22 10:41:00 133

原创 luoguP1533 可怜的狗狗 平衡树模板题

省选前,练练板子 + 对拍.这道题我写了 30min,然后没有任何 bug. 简单来了 10 多组数据,然后测了几个极限数据(看看会不会爆空间之类的)结果提交上去是 60pts,最后发现题目中没有给出 a[i] 的数据范围,然后后面的点 a[i] 超级大. code:#include <bits/stdc++.h> #define ll...

2020-06-19 08:28:00 95

原创 UOJ#31. 【UR #2】猪猪侠再战括号序列 splay

显然可以直接凑左面全是左括号,右面全是右括号的情况. 然后区间翻转就用 splay 模拟好了.splay 的时候一定注意一点:如果没有调用 find(x),就一定要手动把 x 及其祖先的节点 pushdown.code;#include <bits/stdc++.h> #define N 100009 #define ll long...

2020-06-18 09:53:00 145

原创 luoguP4869 albus就是要第一个出场 线性基

省队选拔前复习一下线性基.证明不会,永远都不会,学习证明是不可能的有如下结论:1. 线性基大小是固定的,不会因为加入顺序不同而改变.2. 设线性基大小为 k,则一共有 $2^k$ 种不同的异或结果.3. 每种异或结果出现次数恰好为 $2^{n-k}$.4. 线性基内的数随便异或线性基也不变.#include <bits/stdc++.h> ...

2020-06-17 10:17:00 104

原创 LuoguP3924 康娜的线段树 线段树+期望

秒了一个 70 pts 做法,满分做法无外乎是用前缀和来去掉一个 log.code:#include <bits/stdc++.h> #define N 1000009 #define ll long long #define lson now<<1 #define rson now<<1|1 #define setI...

2020-06-17 09:02:00 146

原创 UOJ#209. 【UER #6】票数统计 组合+容斥

自己独立想出来的,开心. 首先,对于 $x$ 不等于 $y$ 的情况,显然只限制前缀/后缀. 然后如果没有 x 与 y 相等的情况的话我们完全可以枚举总的 1 的个数,然后限制后缀的就可以转化成限制前缀的. 如果引入 x 与 y 相等的情况,也就是说要求前缀或后缀都填满也按照上述方式处理即可.但是要简单容斥一下,即 ans(前缀)+ans(后缀)-a...

2020-06-16 18:58:00 142

原创 luoguP3601 签到题 质因数分解+欧拉函数

题不难,但是求欧拉函数的部分要注意一下:求欧拉函数的时候是没有必要取模的,因为一定能除开. 如果取模的话由于出题人没有保证存在逆元会出现错误. 由于 $[L,R]$ 区间大小不超过 $10^6$,然后每个数最多只有一个大于根号 R 的质因子,所以可以筛出来 $10^6$以内的质因数,然后调和级数来更新答案.code: #include <bits/...

2020-06-16 15:19:00 126

原创 Simple Final Test 题解

往届学长的一场比赛. 总结:三道水题 haha! Task 1 省选 jloi.cpp/in/out给你一个字符串,你每次只能删除一个回文串,问你最少需要几步将字符串删完,或输出无解.题解:显然,答案最多为 2,而如果这个串本身就不是回文串答案就是 1,所以难点就是判断无解的情况. 手画几组发现无解有两种情况:s[1...len/2] 与 s[n-len/2...

2020-06-16 14:20:00 126

原创 LOJ#2954. 「NOIP2018」填数游戏 打表+搜索

1 ~ 6 的都跑完了,7 的还没跑出来.code1:#include <bits/stdc++.h> #define ll long long #define mod 998244353#define setIO(s) freopen(s".in","r",stdin) using namespace std; int a[10][10]...

2020-06-16 00:43:00 128

原创 Educational Codeforces Round 89 (Rated for Div. 2)

这场比赛切了 A ~ D,然后 E WA on test 32,考试后特判了一个边界就过了. 感觉打得还行,但是没有在考试中 AC E 题实属可惜.A Shovels and Swords日常被 div2 A 题卡住.jpg开始写了一个不知道对不对的贪心过不了样例,然后猜了一个小结论(a+b)/3,就过了.#include <bits/stdc++.h&...

2020-06-13 20:36:00 107

原创 LOJ#2044. 「CQOI2016」手机号码 数位dp

这次的状态十分复杂,写递推版不现实. 于是学了一下递归版数位dp,感觉比递推版高明多了,好写还好想.如果以后碰到状态复杂的数位dp的话可以考虑递归版本. code:#include <bits/stdc++.h> #define ll long long #define setIO(s) freopen(s".in","r",stdin) us...

2020-06-12 10:50:00 123

原创 luoguP4317 花神的数论题 数位dp

这道题细节并不算太多,但是求方案数的时候一定不要乱取模!如果非要取模的话也要遵循欧拉定理.code:#include <bits/stdc++.h> #define N 57 #define ll long long #define mod 10000007#define setIO(s) freopen(s".in","r",stdin) ...

2020-06-12 09:48:00 105

原创 luoguP2602 [ZJOI2010]数字计数 数位dp

数位dp.细节真的很多.1. 考虑清楚每个数的贡献.2. 0 特殊考虑.code:#include <bits/stdc++.h> #define ll long long #define setIO(s) freopen(s".in","r",stdin) using namespace std; // 令 f[i][j][k] ...

2020-06-12 08:43:00 83

原创 luoguP2657 [SCOI2009] windy 数 数位dp

基本上把数位dp那一套给忘了,今天重学一遍. 感觉采用递推的方式还是蛮方便的,然后要注意几个细节:1. 通常算 f(x+1)=calc(1,x),这样更方便算一些.2. 每种小于最大长度的所有结果都要累加.3. 很多时候不要忘记 0 的贡献.4. 要特判前缀合不合法.code:#include <bits/stdc++.h> #defin...

2020-06-11 21:53:00 102

原创 LOJ#3280. 「JOISC 2020 Day4」首都城市 点分治+BFS

写代码时间:30-40min,调试时间:5min我们发现,如果一个城市的一个点被选,则该城市其他点也都必须被选,可以考虑用点分治来解.假设当前分治到的重心为 $x$,则只需考虑必经 $x$ 的连通块即可.我们可以维护一个队列,开始的时候将重心的颜色放入,然后对每一种颜色的所有节点进行扩展:向上跳父亲,直到被访问过.如果队列为空且不存在队列中一种颜色不在当前分治树块内,则可以更新一...

2020-06-11 14:44:00 353

原创 luoguP2168 [NOI2015]荷马史诗 哈夫曼树

如果不会哈夫曼树理论的话这题很难做出来吧... 如果 K=2,就可以根据合并果子那样去构造.然后 K>2 的话就构造 k 叉哈夫曼树,如果不满足 $(n-1) \% (k-1)$ 的话就自动补一些进去.code:#include <bits/stdc++.h> #define ll long long #define N 100008 ...

2020-06-11 09:18:00 112

原创 LOJ#2402. 「THUPC 2017」天天爱射击 / Shooting 整体二分+树状数组

我之前一直以为这道题很厉害,没想到就是一个整体二分模板题,就当省选前练练手了.我们计算每个木棍是被哪个子弹所击碎的,然后这个显然具有单调性.每一条木棍分别去二分答案的话时间复杂度大概是 $O(n^2 \log n)$ 的.所以我们就采用整体二分的方式,然后判断的话用一个树状数组来一个区间加法就好了.然后整体二分的时候要处理好无解的情况.code:#include &...

2020-06-11 08:37:00 320

原创 LOJ#106. 二逼平衡树 树套树

这里写的是线段树套权值线段树和 set. 写代码的时间大概是 40 min,然后调试时间是 10 分钟左右,感觉这种数据结构题写的时候仔细检查的话还是比较好调的.code:#include <bits/stdc++.h> #define ll long long #define N 50009 #define lson s[x].ls #defi...

2020-06-10 20:56:00 132

原创 LOJ#2340. 「WC2018」州区划分

感觉是比较基础的子集 DP.令 $dp[S]$ 表示点集 $S$ 构成的价值和,然后枚举最后一个区域就行.如何判断欧拉回路:所有点的度数都是偶数,就有欧拉回路.然后在做子集卷积的时候要注意:很多项是无用的,要手动清空.code:#include <bits/stdc++.h> #define N 22 #define ll long long...

2020-06-10 15:45:00 136

原创 LOJ#2304. 「NOI2017」泳池(70pts) dp

满分做法需要用到很神仙的优化方式,这里只给出 部分分的做法.想出了 70pts 做法还是十分开心的. 开始的时候先想了一个 35 pts 做法:考虑连续段,那么连续段的长度不会超过 $K$,高度不会超过 $K$,所以 $K \leqslant 9$ 的状态都能搜出来.然后令 $f[i]$ 表示固定 $K$ 时,$1$ ~ $i$ 的答案.最后输出 $f[n] (K...

2020-06-10 11:33:00 187

原创 luoguP6569 [NOI Online #3 提高组]魔法值 矩阵乘法+倍增

朴素的矩阵乘法时间复杂度会爆炸,但是我们发现矩阵乘法的形式是一个 $(1 \times n) \times (n \times n)$ 的形式. 所以如果提前预处理出来 $(n \times n)$ 矩阵的 $2^i$ 次幂,然后每次询问的时候二进制拆分,复杂度就是 $O(n^2 \log 1e9)$ 的.code:#include <bits/stdc++.h&...

2020-06-10 10:02:00 106

原创 luoguP6570 [NOI Online #3 提高组]优秀子序列 dp

由于集合内的数不能有交集,所以显然是子集 dp 的形式.但是这道题为了不算重不太能用 FWT 优化,直接暴力 dp 的话是 $O(3^{18})$ 的,洛谷上开 O2 能过.code:#include <bits/stdc++.h> #define N 1000007 #define ll long long #define mod 10000000...

2020-06-10 09:21:00 180

原创 LOJ#152. 子集卷积

终于 get 到了子集卷积的正确姿势,以前竟然都是用异或卷积写的.众所周知,异或卷积由于涉及到乘法所以会比较慢,那我们用或卷积就好了! code:#include <bits/stdc++.h> #define N (1<<21) #define ll long long #define mod 1000000009 #d...

2020-06-10 08:35:00 140

原创 BZOJ4321: queue2 dp

按照套路,考虑将数字从小到大插入到序列中.令 $f[i][j]$ 表示将 $1$ ~ $i$ 插入到序列中,形成了 $j$ 对不合法的方案数.然后考虑将 $i+1$ 插入时的情况:1. 插入到不合法的空位中,消掉一个不合法. 2. 插入到合法的空位中 3. 插入到 $i$ 旁边,形成一个不合法. 4. 插入到 $i$ 与 $i-1$ 的空位中,消掉一个不合法,又新形成一个不合法...

2020-06-09 21:07:00 129

原创 LOJ#2254. 「SNOI2017」一个简单的询问 莫队

求 $,\sum_{x=0}^{\infty} get(l,r,x)get(l_{2},r_{2},x),q$ 组询问.由于这里的 $get$ 会涉及到两个区间,所以十分不好处理.那么我们就要想办法把这个式子转化成只和一个区间有关的东西.考虑拆成前缀和,即 $(s[r]-s[l-1])\times (s[r_{2}]-s[l_{2}-1])$$\Rightarrow s[r]s[...

2020-06-09 16:54:00 135

原创 Codeforces Round #648 (Div. 2) (A-F)

这场比赛的题都偏水,比赛的时候切了 A ~ E A Matrix Game刚开始看错题了,以为是不能相邻,然后就不会了.又读了一遍题,发现不能同行或同列,那就判断一下奇偶性就行了. code:#include <bits/stdc++.h> #define ll long long #define setIO(s) freopen(s".in"...

2020-06-09 16:03:00 149

原创 LOJ#2305. 「NOI2017」游戏 枚举+2-SAT

调都没调就 1 A 了,开心. 一些细节:1. 当 3 个点中强制一个点不选时,又有 $(h_{i},h_{j})$ 这种限制时直接跳过即可. 2. 当有 $(h_{i},h_{j})$ 且 $i$ 这个位置存在,但是 $j$ 不存在的时候显然是不可以选择 $i$ 的,那就直接让 $i$ 连 $i'$ 就行. 3. 2-SAT 的建图始终是有对称性的,即 $a->b$ ...

2020-06-09 15:29:00 105

原创 CF1114E Arithmetic Progression 随机化+二分+交互

一共有 60 次询问机会,显然可以用 30 次来确定序列的最大值(二分)然后再用 30 次随机获得 30 个位置的值,那么有 $a_{j}=a_{i}+k\times d$,($d$ 为公差)那么 $d$ = $gcd(d1,d2,d3,....dn)$,故将 30 个数排序,然后求一下两两之间差值的 $gcd$ 即可.code:#include <bits/stdc+...

2020-06-09 14:01:00 148

原创 UOJ#311. 【UNR #2】积劳成疾 动态规划

思路非常巧妙,令 $f[i][j]$ 表示前 $i$ 个数,最大值不大于 $j$ 的权和.转移的话枚举最大值出现的第一个位置,乘上该位置对应的贡献,然后发现最大值将 $1$ ~ $i$ 分成了两半.然后两个部分又是互不干扰的子问题,转移一下就行.把细节都提前考虑清楚后都不用怎么调.code:#include <bits/stdc++.h> #define ...

2020-06-09 13:34:00 162

原创 LOJ#2888. 「APIO2015」巴邻旁之桥 Palembang Bridges 贪心+splay

脑残了,这题竟然都不会.显然,把所有左右端点放在一起排序,然后取中位数是 $k=1$ 时最优的.然后 $k=2$ 的话枚举中间的分割点,分割点左右就变成两个子问题了.动态求中位数的话用平衡树/权值线段树维护就行了.code:#include <bits/stdc++.h> #define ll long long #define lson s[x]....

2020-06-09 11:05:00 132 1

原创 LOJ#6432. 「PKUSC2018」真实排名 组合

这题怕不是 sb 题吧,随便分类讨论一下 $i$ 乘不乘 2 倍就没了.然后细节要注意一下:题中要求的是大于等于. 求值域在 $[L,R]$ 中的元素个数时我用的权值线段树,可能会比二分要慢一点,但是不用判边界.code:#include <bits/stdc++.h> #define ll long long #define N 100009...

2020-06-09 09:19:00 126

原创 luoguP5319 [BJOI2019]奥术神杖 AC自动机+01分数规划+dp

显然取对数,然后二分答案进行 01 分数规划.设 $f[i][j]$ 表示在 AC 自动机上的点 $i$ ,匹配到了 $j$ 位的最大价值.转移的时候判断一下当前是点还是数字,然后在 AC 自动机上的终止节点上算一下贡献就行. 构建 AC 自动机的时候要注意:点 $i$ 的价值是 val[i]+i祖先的贡献和. 然后 01 分数规划的时候要注意精度,且要判断 f[n][i...

2020-06-09 00:01:00 132

原创 luoguP6378 [PA2010]Riddle 2-SAT+前缀和优化建图

显然,对于一条边的两个端点必须选择一个;对于一个块内的点,只能选择一个. 第一种限制好满足,第二个限制的话前/后缀和优化一下建图就行可. code:#include <bits/stdc++.h> #define N 4000009 #define ll long long #define setIO(s) freopen(s".in","r",std...

2020-06-08 22:11:00 150

原创 luoguP4899 [IOI2018] werewolf 狼人 Kruskal重构树+倍增+主席树

没调完呀,感觉代码能力还是有待提高...... 写代码一定要讲究结构 + 逻辑性. 如果结构或者逻辑性不好的话是非常非常遭罪的 QAQ......upd:好像调了 5 分钟就过了说实话这种硬核数据结构题反倒比那些 DP 什么的好写,好调. code:#include <bits/stdc++.h> #define N 400...

2020-06-08 17:26:00 151

原创 UOJ#515. 【UR #19】前进四 离线+吉司机线段树

离线,然后从后向前扫描,维护每一个时刻当前位置的后缀最小值. 我们发现依次修改影响的是时间线段树一段区间要取 min,这个用吉司机线段树维护就好了. 具体地,我们记录一个 tag 标记,然后下传条件是 mx[now]<mx[lson] 或 mx[now]<mx[rson]. 这道题卡常,最好不要用 vector 来存储操作. code:#includ...

2020-06-08 16:10:00 413

原创 UOJ#48. 【UR #3】核聚变反应强度 数学

显然,$sgcd(x,y)|gcd(x,y)$.那么,$sgcd(x,y)=\frac{gcd(x,y)}{p[gcd(x,y)]}$其中 $p[x]$ 表示 $x$ 的最小非 1 质因子.那么我们可以先把 $gcd(a[1],a[i])$ 都求出来,然后枚举这个最小质因子.因为 $gcd(a[1],a[i])$ 一定都是 $a[1]$ 的因数,所以只需要预处理 $a[1]$ 的...

2020-06-08 14:47:00 124

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除