USACO 2024 January Contest Bronze 铜组题解
前言
感觉这次难度完全没有去年 12 月的铜组高,那个时候刚学三个月看到那几个题直接爆零,这次直接在研学路上用手机 ak 了。。
T1 - Majority Opinion
题意
给定一个长度为 NNN 的序列 hhh,每次操作可以选择一个 hhh 的连续子串,并且将其中的元素全部修改成子串中出现次数最多且超过其长度一半的元素,输出在经过若干次操作后,可以让哪些元素 hih_ihi 成为序列中唯一一种元素。
思路
看到 NNN 的数据范围是 2×1052\times 10^52×105,我们首先思考 O(N)\mathcal O(N)O(N) 的算法。
很容易想到,序列 hhh 中存在三个元素,其中有两个相同的 hih_ihi(即序列中存在两个距离相隔不超过一个元素的 hih_ihi) 是 hih_ihi 满足题面要求的充分条件,因为我们可以先把这三个元素全部修改为 hih_ihi,然后就可以一点点将 hih_ihi 扩展到整个 hhh 序列里。
以下是充要条件的证明:
做法证明
假设 hhh 中距离相隔最短的两个 hih_ihi 之间间隔为两个元素或以上。
那么一个包 ...
AtCoder Beginner Contest 339 - E Smooth Subsequence 题解
题意
给定一个长度为 NNN 的序列 AAA 和整数 DDD,求出序列 AAA 中满足任意两个相邻元素之差的绝对值都不小于 DDD 的子串的最大长度。
数据范围
1≤N≤5×1051\leq N \leq 5\times10^51≤N≤5×105
0≤D≤5×1050\leq D \leq 5\times10^50≤D≤5×105
1≤Ai≤5×1051\leq A_i \leq 5\times10^51≤Ai≤5×105
所有输入数据都是整数。
思路
显然是一道 dp 题。
状态设计&转移
用 fif_ifi 代表以 aia_iai 为结尾的 AAA 的满足要求的子串中的最大长度,则我们只要找一个符合要求的 jjj 并把以 aja_jaj 为结尾的最长子串接在 aia_iai 之前即可,于是可以得到以下状态转移方程:
fi=max{fj}+1 (j<i,∣ai−aj∣≤D)f_i=\max\{f_j\}+1 \ (j<i,|a_i-a_j|\leq D)fi=max{fj}+1 (j<i,∣ai−aj∣≤D)
但从 111 到 ...
AtCoder Beginner Contest 338 C Leftover Recipes 题解
前言
场上刚开始还天真的以为是个爆搜或者奇怪的背包,浪费了好久。。
思路
看到这个题我们首先想到的一定是暴力 dfs 枚举做菜品 a 还是菜品 b,但复杂度为 O(2ans)\mathcal O(2^{ans})O(2ans),显然无法通过本题。于是我们来思考一下贪心做法。
实际上,这道题的题意可以简化成 nnn 个不等式,设我们最后做了 xxx 道菜品 a,yyy 道菜品 b,就可以表示成如下形式:
a1x+b1y≤q2,a2x+b2y≤q2,⋯ ,anx+bny≤qna_1x+b_1y\leq q_2,a_2x+b_2y\leq q_2,\cdots,a_nx+b_ny\leq q_na1x+b1y≤q2,a2x+b2y≤q2,⋯,anx+bny≤qn
并且注意到题意里 a,b,qa,b,qa,b,q 的取值范围都不超过 10610^6106,于是我们可以考虑枚举当前的 xxx 或 yyy(这里选择枚举 yyy),对不等式做变形,得到如下式子:
x≤⌊qi−biyiai⌋(1≤i≤n,biyi≤qi)x\leq \lfloor \frac{q_i-b_iy ...
研学游记
研学游记
Day 1
文章的封面是从萌百上偷的《空奏列车》的曲绘。因为很适合旅行的时候听。
选的是苏杭线。
本来是要跟香香一起去来着,但是香香要和妹妹一起打数学建模,不开心。
还好分房没和老师分到一起。
在车上的几个小时过的很舒服,一直在写题和看《1984》。
可惜的是因为怕打扰坐在旁边的妹妹睡觉而没有去买饭,导致午餐这一块的营养没能补上,最飞屋的一集。
路上把洛谷P4943 密室写掉花了好久,原因是优先队列的优先级写反了,多少有点唐。
在两点的时候到了苏州。
下午去了枫桥,感觉还行吧,除了游船坐起来很舒服以外好像没有什么特别值得说的。
晚饭很丰盛可惜有点凉。
今晚八点甚至有一场abc,但愿晚上不要开会导致阻止我上分。
研学分组把四班其他所有同学分到了一组,把我分到了另一组。这下孤立全班了,玉玉。
晚上的abc爆炸了,c题写了一个小时,果然我只有普及组小学生实力吗。
Day 2
今天去了拙政园和乌镇。
拙政园风景不错,但人真的巨多,跟一群人挤着很有压力。
中午的虾仁很好吃。
在去乌镇的车上本来是打算卷题的,结果对着 SP1684 这道题看了二十分钟没思路,直接就睡着了,很舒服地睡 ...
期末游寄
生活就像流汗黄豆。成绩就像流汗黄豆。OI就像流汗黄豆。全世界都是流汗黄豆。流汗黄豆。
生活就像流汗黄豆。成绩就像流汗黄豆。OI就像流汗黄豆。全世界都是流汗黄豆。流汗黄豆。
生活就像流汗黄豆。成绩就像流汗黄豆。OI就像流汗黄豆。全世界都是流汗黄豆。流汗黄豆。
生活就像流汗黄豆。成绩就像流汗黄豆。OI就像流汗黄豆。全世界都是流汗黄豆。流汗黄豆。
生活就像流汗黄豆。成绩就像流汗黄豆。OI就像流汗黄豆。全世界都是流汗黄豆。流汗黄豆。
Codeforces / AtCoder 刷题记录 since 2023.12
日常训练模式已经改为 Misaka’s Daily,因此本页面已经弃用。原内容如下。
从 2024/1/26 开始记录每一道题的罚时。
评分标准:1-10:
1表示代码照着题解打的
5以下代表思路主要由题解启发
7以下代表思路细节参考了题解
8代表参考了讨论区或者下载了数据
9代表看了算法标签
10表示完全独立完成
距离 NOIp 2024 还有\text{距离\ NOIp\ 2024\ 还有}
距离 NOIp 2024 还有
Codeforces
*难度未定:
*[1300,1500]:
CF1914E *1400 9\color{green}99
CF1850F *1300 10\color{green}1010
CF1913C *1300 10\color{green}1010
CF1907D *1400 9\color{green}99
CF1915F *1500 10\color{green}1010
CF1916C *1200 5\color{orange}55
CF1922C *1300 10\color{green}1010 (−2\color{red ...
AtCoder Beginner Contest 335 C - Loong Tracking 题解
前言
一眼题没场切,我是普及 3= 小飞屋,罚自己写篇题解。
题意
平面直角坐标系上有 NNN 个点,每个点 iii 的初始坐标为 (i,0)(i,0)(i,0)。
现在进行 QQQ 次操作:
1 C 代表把编号为 111 的点向方向 CCC 移动一个单位长度(R 代表 xxx 轴正方向,L 代表 xxx 轴负方向,U 代表 yyy 轴正方向,D 代表 yyy 轴负方向),同时对于每个编号大于 111 的点 iii,将点 iii 移动到点 i−1i-1i−1原先的位置;
2 x 代表查询编号为 xxx 的点当前的坐标。
思路
方法 111:O(NQ)\mathcal{O}(NQ)O(NQ),暴力更新坐标
对于每次操作 1 从点 111 开始暴力更新每个点 iii 的坐标即可。
方法 222:O(Nk)\mathcal{O}(Nk)O(Nk)(kkk 代表操作 1 的次数),暴力递推
我们可以用一个二维数组 f1[N][2]f1[N][2]f1[N][2] 记录点 111 在每一次操作 1 后的坐标,初始值 f1[0]={1,0}f1[0] = \{1,0\}f1[0] ...
Cfz Round 3 E / 洛谷 P10033 题解
前言
我场切了,看来这场题目顺序很诈骗,明明 C 和 D 都没写出来。
等等,这道题竟然评绿了?
好激动,第一次场切绿,所以来写篇题解。
题意
给定一个 1∼n1\sim n1∼n 的排列 ppp。你需要构造一个长度为 nnn 的序列 aaa,满足:
序列 aaa 中的每个元素均为不大于 nnn 的正整数;
不存在有序整数二元组 (l,r)(l,r)(l,r),满足 1≤l≤r≤n1 \le l \le r \le n1≤l≤r≤n 且 ∑i=lrai=∑i=lrpi\sum\limits_{i=l}^r a_i=\sum\limits_{i=l}^r p_ii=l∑rai=i=l∑rpi;或报告无解。
其中,1∼n1\sim n1∼n 的排列指满足所有不大于 nnn 的正整数恰好出现一次的序列。
数据范围
设 ∑n\sum n∑n 表示单个测试点中 nnn 的和。
对于所有数据,1≤T≤50001 \le T \le 50001≤T≤5000,2≤n≤1062 \le n \le 10^62≤n≤106,∑n≤106\sum n \le 10^6∑n≤106,保证 p ...
AtCoder Educational DP Contest I - Coins 题解
题意
有nnn枚硬币,第iii枚硬币有pip_ipi的概率正面朝上,有1−pi1-p_i1−pi的概率反面朝上。
扔完所有硬币,求正面朝上的银币数比反面朝上的银币数多的概率。
思路
是一道期望dp的入门题,其实比起dp把他叫做递推更合适。
状态设计
这道题的状态设计需要仔细思考,将状态f[i][j]f[i][j]f[i][j]设为前iii个硬币中有jjj个以上正面朝上的硬币显然不好,转移过于复杂。
于是我们考虑将状态设计为前iii个硬币中正好有jjj个正面朝上的硬币,最后再将f[n][⌈n+1⌉2]f[n][\frac{\lceil n+1 \rceil}{2}]f[n][2⌈n+1⌉]至f[n][n]f[n][n]f[n][n]的值累加起来即可。
转移方程
那状态转移方程如何编写呢?一个硬币iii的状态一定只有两种可能,有pip_ipi的概率正面朝上,1−pi1-p_i1−pi的概率反面朝上。
要让前iii个硬币里有正好jjj个正面朝上,也就有两种可能:
前i−1i-1i−1个硬币里有j−1j-1j−1个正面朝上,并且第iii个正面朝上,概率为f[i−1][j−1]×p[ ...