- 博客(41)
- 收藏
- 关注
原创 NOI2023 游记 闭幕式部分(也算总结)
这种想法产生的原因是,在成外集训期间,我曾不止一次的突然意识到(更合适的表述可能是 pop in my mind),我高二了,而我认识的许多人在 NOI 之后就成为了一名金牌选手或者永远的存在于历史中了,特别是本校的学长们,OI 上一直是我仰慕的对象,我从初三来到本部开始他们就在那里了,我做不出的题学长会做出来的、我拿不了的奖项学长会为学校拿的、我不知道何去何从的选择学长是做过的,似乎他们就永远在那里。也不再有什么明年了,做不出题就会退役,拿不了奖就会退役,选择做错了就会完蛋,我没有时间了。
2023-07-27 23:57:10
451
原创 中考前 OI 生涯总结
受到zhangzhou的启发,我也必要写一个。初一天天贺题,拿了一个看似可以的成绩。初二继续贺题,CSP-S 两位数,南开杯垫底暴露原型。初三继续贺题,CSP-S 考的还没初二高,WC 成为我校区唯一一个拿不到银牌的人,模拟赛天天垫底,摸过去了。...
2022-04-25 16:29:16
264
原创 [复习]杜教筛
杜教筛的推导过程懒得写了,反正是复习,记个结论吧。对于我们要筛的积性函数 fff ,构造一个函数 ggg,记 f∗g=hf*g=hf∗g=h。我们的目标是求 fff 前缀和 sss。那么有g(1)s(n)=∑i=1nh(i)−∑i=2ng(i)s(⌊ni⌋)g(1)s(n)=\sum\limits_{i=1}^nh(i)-\sum\limits_{i=2}^ng(i)s(\lfloor\frac{n}{i} \rfloor)g(1)s(n)=i=1∑nh(i)−i=2∑ng(i)s(⌊in⌋)
2022-04-06 00:26:12
179
原创 [复习]prufer 序
对于一棵 nnn 个点无根树,其 prufer 序长度为 n−2n-2n−2,具体来说,每次选择一个编号最小的叶子节点并且删除它,记录下它的父亲,显然 n−2n-2n−2 次操作后还剩下 222 个点。首先显然任何一个无根树都能转化为 prufer 序。然后需要说明任意 prufer 序都能唯一对应一棵无根树,度数为 xxx 的点在 prufer 序中出现 x−1x-1x−1 次,那么考虑按照度数来构造,从左到右扫一遍,对于每个点和当前最小的叶子连边即可。这里再说一下构造的复杂度,用堆 O(nlog
2022-04-06 00:14:51
339
原创 SAM学习笔记
并没有完全理解,处于只会板子阶段。SAM 就是后缀自动机,比较为大众所接受的定义是:一个接受 sss 所有后缀的最小自动机。什么是自动机比较通俗的说法是一张 DAG ,有一个起始点,路径上有字符。(定义是什么并不重要)。SAM 的定义是,从起始点走到每个节点一定是原串的一个子串,并且全部子串都在里面。至于为什么会跟子串问题产生关系,先来看看什么事后缀 trie.后缀 trie/后缀树问题:求一个字符串本质不同的子串数量。解法:后缀 trie,插入 S 的所有后缀,从根节点到 trie 每个节点
2022-03-02 22:00:56
211
原创 [Hnoi2014]世界树
首先明显是个虚树,这不多说了。然后考虑虚树上怎么做这个东西。类比一下,抽象成每个关键点有个人在跑,看谁跑的快那个点是谁的。首先虚树叶子的子树肯定归这个节点管。进一步的,每个点的儿子子树如果不在虚树上,肯定归它管。但是虚树上不只有关键点,还有 LCA(注意这里我已开始脑抽了,以为虚树上非关键点上方是不会有关键点的)。所以我们得记一下虚树上每个点最近的关键点 blibl_ibli,这样就讨论完了第一种情况。然后考虑往上转移,当前讨论一对父子节点 (u,v)(u,v)(u,v) ,如果两者最近的关键
2021-12-13 21:39:20
255
原创 简单博弈论小结
-1.ICG公平游戏,每个状态都是先手必胜或先手必败。#∗(@*(@∗(@&(%&$((省略一堆定义)0.SG 函数SG 函数表示对当前局面的评估,SG(S)=mex(SG(S′))S′∈nxt(S)SG(S)=mex(SG(S'))S'\in nxt(S)SG(S)=mex(SG(S′))S′∈nxt(S),nxt(S)nxt(S)nxt(S) 表示当前局面的后继局面的集合。1.nim游戏:万 恶 之 源nnn 堆石头,每堆 aia_iai 个,每次选一堆取任意个,没得取就G
2021-11-25 00:04:36
2669
原创 谨记 Educational Codeforces Round 117
我是傻逼。首先,过了 D 之后还剩 30min 就摆烂了。这不好。其次 D 题赛时我本来是正解,但是我自己加了个奇怪的东西挂了,所以我写了卡时,结果卡时太紧被包老师叉了,当然这个也可以说我是没经验,毕竟不是走投无路谁打暴力。教训:不要摆烂,相信自己正解要想清楚涉及到卡时限的问题要注意留出一点时间,不要卡太紧。...
2021-11-22 21:36:19
508
原创 NOIP游记&总结
A 题搞了一小时我是什么勾啊Day -inf ~ Day -2模拟赛,真正的天天垫底选手,NOIP 前最后一周四场模拟赛总共挂了 400+400+400+。Day -1摆烂!Day 1早上起来感觉没睡醒,于是决定在车上睡觉,但是上车之后不困了,于是就在车上发了 30 min 呆。到了考场,拍照留恋,得到了一些人的祝福。RP++。开题了,按照我的策略,先花了 20 多分钟看了下题,以为 A 得 O(n)O(n)O(n) ,觉得很牛逼。然后康 B ,觉得很牛逼,跳了。C 发现实质上是交换差分
2021-11-22 15:37:32
814
原创 挂分的原因
现在几乎每场模拟赛挂分都在100+基本挂的和得的差不多其根本原因有两个:代码力太弱(写的太少),没想清楚细节。以下是一些常见问题(持续更新):没有对拍,这对于我来说非常致命,以后无论什么题都一定要对拍没有测极限数据,这里的极限数据包括了 nnn 的极限和阈值的极限。在做一些数学题的时候,测极限数据要目测一下有没有爆 long long。写代码的时候不要分心,专注自己写的每一行,想清楚自己这一行是在干什么。开始写代码之前,理一遍思路,用伪代码写一遍,对每一个细节都持怀疑态度去分析是否有问题。多
2021-11-17 00:48:58
345
原创 AT 杂题选做
AtCoder Regular Contest 081难度正常的一场 ARC。A 题感觉有点眼熟,但是不管了,反正是可以秒掉的题。B 题:难度:2.0难在第一步的观察(当然可能非常套路)由于是 2×n2\times n2×n 的网格,所以不难推出,形状一定是多个竖着的骨牌,然后多个横着的骨牌,然后又是竖着的骨牌…所以就直接排列组合乱搞竖着横着然后从左往右搞就好了。C 题:难度:2.9惨遭这题误导...
2021-11-06 13:00:55
444
原创 CF 杂题选做
Codeforces Round #700A,B 题:快进。C 题:难度:1.9看到询问次数不难想到跟 logloglog 结合在一起,证明一个结论:若一个区间 [l,r][l,r][l,r] 满足 al−1>ala_{l-1}>a_lal−1>al 且 ar+1>ara_{r+1}>a_rar+1>ar 的值则其中一定存在合法解。显然原区间满足限制。显然二分了之后左右会有一个区间满足限制,于是直接递归下去即可。...
2021-10-27 00:30:07
202
原创 翻 车 集 合
打的过于激进,采用精神胜利法对拍,挂大分。打得过于保守,连 200200200 都没上。不过确实没有挂分。不知道一些常见 trick (如 ST 表查不重复区间,树状数组维护动态下标),被区分。写了个没法证明正确性的贪心,使用精神胜利法证明,测出来爆零,被区分。不会背板子,知道怎么做但是不会写,被区分。不会乱搞和随机化,不像某耳塞人一样啥子都乱搞,导致不可做题分数很低,非常不甘心的被区分。部分题目过于谨慎,浪费太多时间,没时间写后面的题,被区分。部分题目过于自信,直接冲假做法,冲完发现有问题.
2021-10-22 10:53:35
133
原创 二项式反演
an=∑k=0nCnkbka_n=\sum\limits_{k=0}^nC_{n}^{k}b_kan=k=0∑nCnkbk可以得到bn=∑k=0nCnkak(−1)n−kb_n=\sum\limits_{k=0}^nC_{n}^{k}a_k(-1)^{n-k}bn=k=0∑nCnkak(−1)n−k做题!
2021-09-28 21:51:46
93
原创 数学基础算法复习
基础阶乘0!=10!=10!=1组合数a(n,m)=n!(n−m)!a(n,m)= \frac{n!}{(n-m)!}a(n,m)=(n−m)!n!$c(n,m)= \frac{n!}{(n-m)!m!} $c(n,m)=c(n−1,m−1)+c(n,m−1)c(n,m)=c(n-1,m-1)+c(n,m-1)c(n,m)=c(n−1,m−1)+c(n,m−1)快速幂ll qp(ll b,ll p,ll mod){ ll tmp=b,ans=1; while(p){ if(p&am
2021-09-27 20:02:05
160
原创 最短路树 科普笔记
一个非常冷门的知识点(大概吧)基础定义定义:一个 nnn 个点,mmm 条边的无向图,最短路树是图上的一棵生成树,以一个节点 xxx 为根,满足对于任意 i(1≤i≤n,i≠x)i(1\le i\le n,i\neq x)i(1≤i≤n,i=x),树上两点最短路的距离等于原图两点最短路距离。性质:第一个即是其定义,第二个是我这个民科自己想的,不一定对:对于两个节点 u,vu,vu,v 满足同属于最短路树上的一条链,那么二者原图上的最短路就是树上两点到根节点距离之差。(证明:考虑反证,若两点有更短的
2021-09-01 20:49:54
729
原创 数位 DP
试图换个写法。回想一下在小学和初中遇到的两类问题:页码问题:给定一本书,页码编号 111~500500500,试求出这本书有多少页的页码上含有 111 这个数字?初一数学题:定义“十全十美”数是指一个数能被 101010 整除且数位之和相加是 101010 的倍数,试求…如此这般的问题,不得不说贯穿了从小学到初中,你是否想过把它们出成一道 OI 题?没错就是在讽刺把 MO 题搬到 OI 的屑行为有人这么想了,还这么干了,于是就出现了数位 DP。先来看一下页码问题,小学的时候我们怎么解决这个问题
2021-08-20 23:20:16
148
原创 题解 [CSP-S 2019 Day2]Emiya家今天的饭
题意简述:给定一个 n×mn \times mn×m 的矩阵,每个位置上有若干完全不同的小球,求选任意个小球,每行最多选一个,每列最多选 ⌊k2⌋\lfloor\frac{k}{2} \rfloor⌊2k⌋ 个球,其中 kkk 是选的球的数量,k>0k >0k>0。首先 ⌊k2⌋\lfloor\frac{k}{2} \rfloor⌊2k⌋ 是个很神奇的东西,不考虑任何限制,我们最多选一列选出的数量会大于 ⌊k2⌋\lfloor\frac{k}{2} \rfloor⌊2k⌋,这启示我
2021-08-19 16:21:28
215
原创 Kruskal 重构树 学习笔记
算法介绍Kruskal 重构树就是在 Kruskal 算法过程中重新建出了一棵树,这棵树具有一些优美的性质可以解决一类问题,下面就详细叙述一下:首先复习一下什么是 Kruskal 算法,本质上来说这是一种贪心算法,用于解决最小生成树的问题,把所有边权由小到大排序,用并查集维护连通性,若当前边 (u,v)(u,v)(u,v) 不联通,就把当前边加入到最小生成树中。下面说说什么是 Kruskal 重构树,在 krusakl 算法过程中,每当一条边 (u,v)(u,v)(u,v) 被加入最小生成树,令 gu
2021-08-19 10:39:44
269
原创 随时警示自己
模数等能开 const 的一定要开 const !!1会快很多遍!!1考试一定要先通读题目,不要对自己的码力过于自信。。。一个做法先确认是否正确再进行编写想到了再更新。
2021-08-19 00:39:37
114
原创 2021-08-17 圣 诞 节 的 复 习
CDQ 分治CDQ 分治是一种分治算法废话,大部分时候用于解决偏序问题,或者优化含有偏序形式的一些转移方程。首先要知道,什么事偏序问题,即是一些物体含有若干属性 aia_iai,bib_ibi,cic_ici…要求满足满足对于每个属性都有一个大小关系约束的数对 (i,j)(i,j)(i,j) 的数量,形如:ai<aja_i < a_jai<aj 或者 ai>aja_i > a_jai>aj …bi<bjb_i < b_jbi<
2021-08-17 20:13:53
100
原创 网络流学习笔记#2:最小费用最大流和最小割树
文接网络流学习笔记#1:最大流和最小割。约定cost(u,v)cost(u,v)cost(u,v) 表示 uuu 到 vvv 的费用费用流定义在一个流网络中,有源点和汇点 s,ts,ts,t,每条边都有一个容量和 ,sss 有无限的流量流向 ttt,在满足流量最大的前提下使得费用最小。解法这种情况下,找增广路不再可以找到答案,为什么呢?因为费用不一定最小,那怎么办?使用 SPFA!(为什么?有负权边呢)完了(...
2021-08-02 18:04:50
264
原创 网络流学习笔记#1:最大流和最小割
-3.前言两年以前,那时连基础算法都不甚熟悉,却因为看到 Leasier 会这么多高深和深奥的算法而嫉妒,下定了决心,要学一些“看起来很高深的算法”,可是呢,一方面自己实力不足,另一方面是自己的懒惰,最终呢,也就仅仅是复制了一篇题解,过了个模板而已,至于这个“网络流”究竟是什么,还是一问三不知。现在,终于有机会重新面对这个算法了。-2.一些约定(u,v)(u,v)(u,v) 表示一条从 uuu 到 vvv 的有向边。sss 表示源点,ttt 表示汇点。如无特殊说明,我们所讲的图都是有向无环图,有
2021-08-02 17:07:09
268
原创 Codeforces Round #735 (Div. 2) 题解复读
打炸了/kkA Cherry题意简述:给定一个序列 aaa,求一个区间 $[L,R] $ 使得这个区间的最大值最小值相乘最大。容易发现,当我们确定了一个区间 [L,L+1][L,L+1][L,L+1] 时无论向左还是向右扩展答案都不优于这个区间,换句话说最优解一定是 [i,i+1](i<n)[i,i+1](i < n)[i,i+1](i<n),直接扫一遍,复杂度 O(n)O(n)O(n)。B Cobb题意简述:给定一个序列 aaa,求一组 i,ji,ji,j 使得 i×j−k×(
2021-08-02 15:25:33
91
原创 Codeforces Round #736 (Div. 2) 乱扯题解
A Gregor and Cryptography考虑构造两个数 a,ba,ba,b,使得 pmod a=1p \mod a =1pmoda=1 且 pmod b=1p \mod b =1pmodb=1,那么只需要找到两个整除 p−1p-1p−1 的数,由于 p>5p>5p>5 且 ppp 是质数,所以肯定有至少两个大于 111 的因子。...
2021-08-02 15:23:03
148
原创 题解 CF303C Minimum Modular
唯一一篇题解年代久远,我来补一篇首先考虑我们怎么暴力的求解问题。显然可以枚举 mmm ,由于题目保证了 aaa 互不相同,mmm 的最小值一定在 [n−k,106][n-k,10^6][n−k,106] 中(为什么是 n−kn-kn−k 因为“余数互不相同”就代表至少要有可能出现的 n−kn-kn−k 种余数),每次暴力扫一遍,看有几个重复的,若小于 kkk 则就是答案。复杂度 O(106n)O(10^6 n)O(106n),由于 n≤5000n\le 5000n≤5000,已 经 要 行 了。再从别的
2021-07-30 14:25:07
111
原创 换根 DP 学习笔记
简介换根 DP 是树形 DP 的一个分支,用于解决根节点不确定的问题,可以把 O(n)O(n)O(n) 枚举根节点的过程通过两次 dfs 优化掉,(据说)是一种重要的技巧。分析以一道经典例题 [POI2008]STA-Station 为例。题意非常明了了,不解释了。正如一般换根 DP 学习笔记的套路,我们先想想怎么 O(n2)O(n^2)O(n2) 的解决这个问题,非常简单,我们可以枚举一个根,然后 O(n)O(n)O(n) dfs 查询深度最后取 max\maxmax。显然 O(n2)O(n
2021-07-29 21:27:48
118
原创 2021-07-29 DP 专练
HDU6212 Zuma#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>#define inf 20000000using namespace std;const int maxn=305;int t,n,a[maxn],b[maxn],c[maxn],tot=0;char s[maxn];int dp[2000][2000]; int main(
2021-07-29 11:27:24
99
原创 课堂笔记 2021.7.27-2021.7.28
动态开点线段树众所周知,一棵线段树会包含很多节点,但是有很多节点都用不上,这样就会造成空间的浪费,有什么办法解决空间浪费呢?就是当我们需要的时候再去开点,不预先建树。void build(int &i,int l,int r,int num,int k){ if(!i) i=++ecnt; if(l==r){ t[i].v+=k; return ; } int mid=(l+r)/2; if(num<=mid) build(t[i].ls,l,mid,num,k)
2021-07-28 23:47:54
109
原创 题解 [国家集训队]圈地计划
这篇题解主要是对建模的详细说明(?众所周知,最小割求的是最小值,所以我们肯定要转化为理论最大值-实际最小值,先考虑一个 naive 的模型:这种情况下,我们理想状态下 (i,j)(i,j)(i,j) 的贡献应该是 ai,j+bi,ja_{i,j}+b_{i,j}ai,j+bi,j,很不幸,(i,j)(i,j)(i,j) 只能取一种状态,也就是实际上它的贡献是 ai,j+bi,j−min(ai,j,bi,j)a_{i,j}+b_{i,j}-\min(a_{i,j},b_{i,j})ai,j+bi
2021-07-27 23:27:44
154
原创 题解 [CQOI2017] 老 C 的方块
这题我们教练出的。Sto nodgd Orz一般来说,看到网格题,想到网络流。看到要炸点,考虑染色,这道题的四个形状都是四个格子,考虑染成四色(图片来自 shadowice1984的题解):那么我们再观察符合条件的讨厌图形,会发现有且仅有这四种由四个块组成图形必然存在一种顺序是黄-红-黑线-蓝-绿那我们想一下,怎样才能破坏一个讨厌图形呢?两种方式:破坏掉一个红/蓝方块破坏掉所有和红色或者蓝色相邻的黄块或者绿块到这里已经有一些最小割的影子了,我们按颜色可以建图建成 777 层,分别是源点
2021-07-27 23:26:22
128
原创 NKOI 2021 退役失败记
Test 1由于是进去就考所以啥都不知道,稀里糊涂就考完了看题,由于胡老师说过题目 不 会 太 简 单,所以当我看到我一道题都不会且部分分只会 T1 的 %2\%2%2 和 T4 的 %2\%2%2 共计整整 2+0+0+2=42+0+0+2=42+0+0+2=4 分时,心情毫无波澜,粗略看了看,T1 贪心,T2 图论,T3 组合题(好的此时已经自动认为这场考试只有三道题),T4 树形DP,我决定从自己比较擅长的 T2 开始,想了一下,“删除操作”“连通性”直接戳中 G 点让我无端联想到并查集,于是想到
2021-07-27 23:22:07
275
原创 关于我和这个博客
大家好啊,我是 Zyq,来自 CQNK 的一名小菜鸡,喜欢翻题解和睡大觉,这个博客主要会不定期更新 题解/算法学习笔记/模拟赛总结/比赛游记 这类的东西。至于我的ID?不重要,没有任何意义其实是把QQ名字和真名排在一起随机选了个排列,之后也大概都在这里更新,luogu 等网站的博文也会慢慢搬过来。总之是很高兴认识大家。...
2021-07-27 22:52:42
122
原创 ODT 学习笔记
珂朵莉,要一直幸福下去哟!warning:本文在大白天书写,脑子可能不大好用。目前代码选自题解,等有时间自己写一下。简介ODT(Old Driver Tree(中文译名张舟树),又称 Chtholly Tree,即众人皆知的珂朵莉树) 是一种非常暴力的思想或者做法 (注意我没有说是数据结构)简单来说,其核心思想是把一段区间推平(这也是其适用的地方——区间赋值),推平之后,原数列变成一段一段的了(每段的数值相同),然后就可以搞事了。ODT 在随机数据下,复杂度近似 O(mlogn)O(m log
2021-07-27 18:11:22
1015
原创 题解 [CTSC2002]玩具兵
1的年代比较久远了[APIO2015]雅加达的摩天楼套路拆点+根号分治我最开始的想法非常 naive ,就是暴力连边然后跑 dijkstra,然后由于这是根号分治的习题。所以考虑怎么去根号分治:对于 pip_ipi 来说:若 pi>np_i > \sqrt{n}pi>n ,显然直接暴力连边,单次复杂度 O(n)O(\sqrt{n})O(n)。然后我就不会了。。。正解:若 pi≤np_i \le \sqrt{n}pi≤n,考虑拆点,为什么会考虑到拆点呢?想象一下一
2021-07-27 18:06:46
236
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人