摘要:
本文分离自《2024牛客暑期多校训练营10 - VP记录》。 L. Tada! 看到数据范围 \(1 \le N \le 5, 1 \le M \le 50\),一眼暴力判断/暴搜。 因为操作可逆,所以如果 \(x\) 能在 \(t\) 步内到达 \(y\),那么 \(y\) 也能在 \(t\) 步
阅读全文
posted @ 2024-10-31 07:37
Jerrycyx
阅读(40)
推荐(0)
摘要:
Preface 这次赛时六道题做对了三道题,一些小技巧还是使用地蛮好的(包括 H 题猜测结论),就是 K 题原本思路算法都是对的,只是实现起来应当二分点位而非值域,加上代码复用程度比较低,增加了代码复杂程度导致没调出来。 总体来说这次题目要注意的细节挺多的,比如我调炸的 K 题和两眼一抹黑的 L 题
阅读全文
posted @ 2024-10-30 18:35
Jerrycyx
阅读(48)
推荐(0)
摘要:
Preface 赛时基本都去做 E 去了,还好最后调出来了,不过还是太悬了些,最后 \(15\) 分钟才 A 掉。 我还是太菜了啊!绿题都有点吃力! A - Election 2 高桥日常出镜,kkk 好好学学。 点击查看代码 #include<cstdio> using namespace std
阅读全文
posted @ 2024-10-29 17:25
Jerrycyx
阅读(28)
推荐(0)
摘要:
Preface 这次难度感觉挺平均的,前面的题不水,后面的题也不毒瘤(可能是因为我做的不够后面) A. Special Characters 开局构造题。 因为特殊字符一定是成对出现的(包括两边的,可以分类讨论思考一下),所以只有 \(n\) 为偶数的时候才有解。 然后直接以 AABBAABB...
阅读全文
posted @ 2024-10-29 14:04
Jerrycyx
阅读(31)
推荐(0)
摘要:
Preface 对着 D 题发了一个多小时的呆,我真的服了。 下次应当考虑各个角度,各个方向,绿题难度的题(特别是 CF 上的)一般思维深度都不会非常高,反而更考验思维广度。 A. Painting the Ribbon 显然 Alice 的最优策略就是将彩带涂成形如 12312312... 的形式
阅读全文
posted @ 2024-10-28 20:34
Jerrycyx
阅读(26)
推荐(0)
摘要:
Preface 被 D 题搞得有点崩(我怎么老是跟黄题过不去,绿题都不敢这么卡我),没发挥好,下次记得题读清楚,思路理顺了再写核心代码。 A - Shout Everyday AtCoder 比赛高桥出镜率 \(100\%\)。 为什么洛谷月赛没有 kkk 出镜呢? 点击查看代码 #include<
阅读全文
posted @ 2024-10-28 19:48
Jerrycyx
阅读(30)
推荐(0)
摘要:
主要用于以后复习查阅。 求特解 由辗转相除法(欧几里得算法)可得 \(\gcd(a,b)=\gcd(b,a \bmod b)\) 由裴蜀定理,存在 \(x,y\) 使得 \(xa+yb=\gcd(a,b)\),存在 \(x',y'\) 使得 \(x'b+y'(a \bmod b)=\gcd(b,a
阅读全文
posted @ 2024-10-25 19:58
Jerrycyx
阅读(32)
推荐(0)
摘要:
设 \(f_i\) 表示最后一个区间以 \(a_i\) 结尾的方案总数,也即前 \(i\) 个数的方案总数。最后的答案是 \(f_n\)。 很容易得到转移方程: \[f_i = \sum_{j=1}^{i-1}f_j \]其中,需要保证 \(a_i \sim a_j\) 是一个合法区间才能累加,这个
阅读全文
posted @ 2024-10-24 17:02
Jerrycyx
阅读(36)
推荐(0)
摘要:
这里将每一个三元组 \((a_i,b_i,c_i)\) 称为一组数。 Subtask 1 暴力枚举所有的非空子集即可。 枚举方式可以采用类似状压 DP 的二进制枚举或者直接 DFS。 时间复杂度 \(O(N \times 2^N)\)。 Subtask 2 性质:此时的特征值最多由两个有效组组成,原
阅读全文
posted @ 2024-10-24 09:52
Jerrycyx
阅读(29)
推荐(0)
摘要:
A. Image Scaling 签到题,找出举行宽高以后直接除以它们的 \(\gcd\) 使它们互质即可。 (这道题居然会有人又 WA 又 RE,我不说是谁) 点击查看代码 #include<cstdio> #include<cstring> using namespace std; const
阅读全文
posted @ 2024-10-22 16:19
Jerrycyx
阅读(66)
推荐(0)
摘要:
A - 369 样例已经包括了所有的情况(真良心)。 点击查看代码 #include<cstdio> #include<algorithm> using namespace std; int main() { int a,b; scanf("%d%d",&a,&b); int ans=0; if(a
阅读全文
posted @ 2024-10-21 18:57
Jerrycyx
阅读(35)
推荐(0)
摘要:
A. Two Friends 一共只有两种情况: 存在 \(A\) 的最好朋友是 \(B\) 且 \(B\) 的最好朋友是 \(A\) 的情况:此时只需邀请这两个人即可。 不存在上述情况:设某个人 \(A\) 的最好朋友是 \(B\),\(B\) 的最好朋友是 \(C\),这时邀请 \(A,B,C\
阅读全文
posted @ 2024-10-21 14:58
Jerrycyx
阅读(25)
推荐(0)
摘要:
总体发挥还算正常 A - Jiro 呵呵呵,有人像我这么做的吗? 点击查看代码 #include<cstdio> using namespace std; int main() { char ab,ac,bc; scanf("%c %c %c",&ab,&ac,&bc); if(ab=='<'&&a
阅读全文
posted @ 2024-10-18 20:33
Jerrycyx
阅读(23)
推荐(0)
摘要:
比赛链接 正常发挥 A. Verify Password 挨个判断即可,秒了。 #include<cstdio> #include<cstring> using namespace std; const int N=25; int T,n; char str[N]; bool is_digit(ch
阅读全文
posted @ 2024-10-18 20:01
Jerrycyx
阅读(47)
推荐(0)
摘要:
思路全在注释里了: #include<cstdio> #include<cmath> #include<algorithm> using namespace std; const int N=5e5+5; int n,l,r,a[N]; bool Solve() { //打工次数:一个人能将其他人运
阅读全文
posted @ 2024-10-10 19:54
Jerrycyx
阅读(19)
推荐(0)
摘要:
空位与数(game) 贪心即可,因为正正得正,负负也得正,所以将两个数组分别按照正负性分开,然后让正数里面大的配上大的,负数里面绝对值大的配上绝对值大的,这样可以让正积总和尽量大。剩下不足的(必须要一正一负相乘的)让绝对值大的配绝对值小的,这样可以让负积总和尽量小。 #include<cstdio>
阅读全文
posted @ 2024-10-09 16:25
Jerrycyx
阅读(177)
推荐(1)
摘要:
排序算法 稳定性 最优时间复杂度 平均时间复杂度 最坏时间复杂度 空间复杂度 选择排序 不稳定 \(O(N^2)\) \(O(N^2)\) \(O(N^2)\) \(O(1)\) 冒泡排序 稳定 \(O(N)\) \(O(N^2)\) \(O(N^2)\) \(O(1)\) 插入排序 稳定 \(O(
阅读全文
posted @ 2024-10-05 20:40
Jerrycyx
阅读(31)
推荐(0)
摘要:
思路与官方题解一样,不过我采用了递归的写法,这样就可以避免排序等操作。 另外还要注意递归的时候不能让多个不同的递归函数同时修改一个数组,否则这个数组同时被多个函数使用,会很混乱。我这里把它开成了二维来避免这个问题。 代码如下: #include<cstdio> #include<algorithm>
阅读全文
posted @ 2024-10-05 20:40
Jerrycyx
阅读(26)
推荐(0)
摘要:
题目大意: \(2 \times n\) 大小的方格矩阵,某些格子不能走,走过的格子不能走。从任意点出发,一次最多走多少次? 首先有一个贪心的思想,每次从最左走到最右,只能向上下右走,不能向左走(因为向左走一定不会让步数更多)。 动态规划,设 \(f_{i,j}\) 表示从每个连通块走到 \((i,
阅读全文
posted @ 2024-10-05 19:07
Jerrycyx
阅读(20)
推荐(0)
摘要:
题目大意:一个由四种镜面(| - / \)组成的矩阵,根据镜面的方向反射光线。问坐标 \((x,y)\) 处向某方向射入一束光线后(此光线会直接穿过此位置 \((x,y)\) 的镜面),一共会反射(直接穿过的不算)到多少个不同(一个坐标算一个镜面)的镜面。 总体思路为预处理出每一个坐标向每一个位置发
阅读全文
posted @ 2024-10-05 16:48
Jerrycyx
阅读(40)
推荐(0)
摘要:
快速幂 递归 long long quick_pow(long long x,long long y,long long p) { long long tmp=quick_pow(x,y>>1,p); tmp=tmp*tmp%p; if(y&1) return tmp*x%p; else retur
阅读全文
posted @ 2024-10-02 17:23
Jerrycyx
阅读(20)
推荐(0)
摘要:
背包 01 背包 for(int i=1;i<=n;i++) for(int j=m;j>=v[i];j--) { f[j]=max(f[j],f[j-v[i]]+w[i]); ans=max(ans,f[j]); } 完全背包 for(int i=1;i<=n;i++) for(int j=v[i
阅读全文
posted @ 2024-10-02 17:03
Jerrycyx
阅读(23)
推荐(0)
摘要:
原题链接 解析 在操作一时,最小值如果在最后一位,其无法更新任何数,会被删除;否则不在最后一位时一定会被其右侧更大的数更新。所以在操作一时,最小值一定会被更新掉。 同理,在操作二时,最大值一定会被更新掉。 由此,操作一决定了答案的下限,操作二决定了答案的上限。 所以可以得出贪心策略:先进行 \(m\
阅读全文
posted @ 2024-09-01 08:27
Jerrycyx
阅读(18)
推荐(0)
摘要:
原题链接 思路 + 算法 首先,考虑读入到 \(a_i\) 时,如果要得到此时的最优解(指所有牛的编号不重不漏地覆盖 \([1,i]\) 的所有编号),对于第 \(i\) 头奶牛,因为在它前面有 \(a_i\) 头奶牛的编号小于它,所以第 \(i\) 头奶牛的编号应当为 \(a_i+1\)。 如果有
阅读全文
posted @ 2024-09-01 08:26
Jerrycyx
阅读(51)
推荐(0)
摘要:
原题链接 介绍一种(也许是正解的)卡常做法 先说总体思路:对于每个三元组 \((x,y,z)\),若有一个 \(w\) 满足 \((x,y,w),(x,z,w),(y,z,w)\) 均存在,则找到了一个合法的四元组 \((x,y,z,w)\)。 \(20\ \rm{Pts}\) 做法 如果暴力搜索,
阅读全文
posted @ 2024-09-01 08:24
Jerrycyx
阅读(44)
推荐(0)
摘要:
大部分是上课做的笔记,包含我自己的一些思考的推导,希望可以帮助到大家! 本文在以下平台同步发送:洛谷(已通过全站推荐)、博客园。 (因为洛谷专栏更新需要重新审核全站推荐,所以更新相对博客园略有延迟) UPD 2024.11.2:撤除了引用格式并添加了分割线以分割不同结论及证明;修正了整除的 \(\K
阅读全文
posted @ 2024-08-28 15:21
Jerrycyx
阅读(275)
推荐(0)
摘要:
原题链接 题目描述 算法 引用自 树的直径 - OI-Wiki: 若树上所有边边权均为正,则树的所有直径中点重合 证明:使用反证法。设两条中点不重合的直径分别为 \(\delta(s,t) 与 \delta(s',t')\),中点分别为 \(x\) 与 \(x'\)。显然,\(\delta(s,x)
阅读全文
posted @ 2024-08-21 19:15
Jerrycyx
阅读(34)
推荐(0)
摘要:
最长公共上升子序列(LCIS) 原题链接:CodeForces、洛谷 时间限制:C/C++ 1000MS,其他语言 2000MS 内存限制:C/C++ 256MB,其他语言 512MB 描述 给定两个整数序列,写一个程序求它们的最长上升公共子序列。 当以下条件满足的时候,我们将长度 \(N\) 的序
阅读全文
posted @ 2024-08-14 15:29
Jerrycyx
阅读(258)
推荐(0)
摘要:
[HAOI2009] 逆序对数列 原题链接 题目描述 对于一个数列 \(\{a_i\}\),如果有 \(i<j\) 且 \(a_i>a_j\),那么我们称 \(a_i\) 与 \(a_j\) 为一对逆序对数。若对于任意一个由 \(1 \sim n\) 自然数组成的数列,可以很容易求出有多少个逆序对数
阅读全文
posted @ 2024-08-12 11:34
Jerrycyx
阅读(46)
推荐(0)
摘要:
KMP namespace KMP{ int nxt[LEN]; void Init() { nxt[1]=0; for(int i=2,j=0;i<=plen;i++) { while(j && p[j+1]!=p[i]) j=nxt[j]; if(p[j+1]==p[i]) j++; nxt[i
阅读全文
posted @ 2024-08-09 21:47
Jerrycyx
阅读(20)
推荐(0)
摘要:
并查集 定义 & 初始化 int fa[N]; void uInit() { for(int i=1;i<=n;i++) fa[i]=i; return; } 查询 int uask(int x) { if(fa[x]==x) return fa[x]; else return fa[x]=uask
阅读全文
posted @ 2024-08-09 19:47
Jerrycyx
阅读(26)
推荐(0)
摘要:
邻接表(链式前向星)存图 定义 struct Allan{ int val; int to,nxt; }edge[M]; int idx,head[N]; 加边 inline void add(int x,int y,int z) { edge[++idx]={z,y,head[x]}; head[
阅读全文
posted @ 2024-08-09 19:45
Jerrycyx
阅读(29)
推荐(0)
摘要:
预处理部分 \[\max(a[i,i+2^k-1]) =\max \left\{ \begin{aligned} \max&(a[i,i+2^{k-1}-1])\\ \max&(a[i+2^{k-1},i+2^{k-1}+2^{k-1}-1]) \end{aligned} \right.= \lef
阅读全文
posted @ 2024-08-05 10:14
Jerrycyx
阅读(25)
推荐(0)
摘要:
优秀的树 时间限制:C/C++ 2000MS,其他语言 4000MS 内存限制:C/C++ 256MB,其他语言 512MB 描述 给定一棵树,其所有边权重均为 \(1\),定义 \(f(u)=Σ_v dis(u,v)\),v 表示树上的所有结点,\(dis(u,v)\) 表示结点 \(u\) 和
阅读全文
posted @ 2024-08-02 19:37
Jerrycyx
阅读(25)
推荐(0)
摘要:
树(tree) 时间限制:C/C++ 2000MS,其他语言 4000MS 内存限制:C/C++ 256MB,其他语言 512MB 描述 给定一个 \(n\) 个结点,\(n−1\) 条边的有根树。 第 \(i\) 条边可以用 (\(a_i,b_i\)) 来描述,它表示连接结点 \(a_i\) 和结
阅读全文
posted @ 2024-08-02 18:34
Jerrycyx
阅读(234)
推荐(0)
摘要:
费解的开关 时间限制:C/C++ 1000MS,其他语言 2000MS 内存限制:C/C++ 256MB,其他语言 512MB 描述 你玩过“拉灯”游戏吗? \(25\) 盏灯排成一个 \(5×5\) 的方形。 每一个灯都有一个开关,游戏者可以改变它的状态。每一步,游戏者可以改变某一个灯的状态。 游
阅读全文
posted @ 2024-07-29 23:55
Jerrycyx
阅读(35)
推荐(0)
摘要:
昆虫繁殖 时间限制:C/C++ 1000MS,其他语言 2000MS 内存限制:C/C++ 256MB,其他语言 512MB 描述 科学家在热带森林中发现了一种特殊的昆虫,这种昆虫的繁殖能力很强。每对成虫过 \(x\) 个月产 \(y\) 对卵,每对卵要过两个月长成成虫。假设每个成虫不死,第一个月只
阅读全文
posted @ 2024-07-29 23:46
Jerrycyx
阅读(142)
推荐(0)
摘要:
奇怪的汉诺塔 时间限制:C/C++ 1000MS,其他语言 2000MS 内存限制:C/C++ 256MB,其他语言 512MB 描述 汉诺塔问题,条件如下: 这里有 \(A\)、\(B\)、\(C\) 和 \(D\) 四座塔。 这里有 \(n\) 个圆盘,\(n\) 的数量是恒定的。 每个圆盘的尺
阅读全文
posted @ 2024-07-29 23:44
Jerrycyx
阅读(73)
推荐(0)
摘要:
【入门】统计每个月兔子的总数 时间限制:C/C++ 1000MS,其他语言 2000MS 内存限制:C/C++ 16MB,其他语言 32MB 描述 有一对兔子,从出生后第3个月起每个月都生一对兔子,一对小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第 \(n\) 个月(\(n<=50\)
阅读全文
posted @ 2024-07-29 23:41
Jerrycyx
阅读(290)
推荐(0)
摘要:
放苹果 时间限制:C/C++ 1000MS,其他语言 2000MS 内存限制:C/C++ 256MB,其他语言 512MB 描述 把 \(M\) 个同样的苹果放在 \(N\) 个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)\(5,1,1\) 和 \(1,5,1\) 是同一
阅读全文
posted @ 2024-07-29 23:39
Jerrycyx
阅读(44)
推荐(0)