CF1932D Card Games 题解
思路
赛时没想出来贪心,于是写了爆搜但一直 WA,赛后发现是 dfs 函数忘记回溯了。
时间复杂度看起来是假的,但是跑得很快,推测是一堆卡牌里面能够进行匹配的数量实际上并没有那么多,实测最慢的点才 15ms,提交记录:link
爆搜的方法就是先用 (2n)2(2n)^2(2n)2 的时间预处理每两张牌是否能够匹配(匹配条件即两张牌中有且只有一张能赢过对方),然后再从第一张牌开始搜:对于每一张牌枚举和它匹配的另一张牌,标记之后接着搜下一张,搜不到就回溯继续搜,终止条件就是搜到第 2n2n2n 张牌时 return 1 以及无解时 return 0。
代码
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667constexpr int N = 40;char trump;int n;struct card{ char suit;int rank; inline void ...
AtCoder Beginner Contest 340 E - Mancala 2 题解
题意
有编号为 000 到 N−1N-1N−1 的 NNN 个盒子。最初,盒子 iii 里有 AiA_iAi 个球。
高桥君将按顺序对 i=1,2,…,Mi=1,2,\ldots,Mi=1,2,…,M 执行以下操作:
将一个变量 CCC 设置为 000。
从盒子 BiB_iBi 中取出所有球并拿在手里。
当手里至少还有一个球时,重复以下过程:
将 CCC 的值增加 111。
将手里的一个球放入盒子 (Bi+C) mod N(B_i+C) \bmod N(Bi+C)modN 中。
在完成所有操作后,确定每个盒子中的球数。
思路
题面中的操作可以被转化为以下步骤:
把位置 iii 的值归零;
将整个序列的值增加 ⌊AiN⌋\lfloor\frac{A_i}{N}\rfloor⌊NAi⌋;
将 (i,min(i+Aimod N,N)](i,\min(i+A_i\mod N,N)](i,min(i+AimodN,N)] 的值增加 111;
如果 i+Aimod N>Ni+A_i\mod N>Ni+AimodN>N,再将 [1,i+Aimod N− ...
AtCoder Beginner Contest 340 D - Super Takahashi Bros. 题解
题意
有一个包含 NNN 个关卡的游戏。起初,只有第 111 个关卡可以游玩。
在每个可以被游玩的关卡 iii 中,你可以进行以下两种操作:
花费 AiA_iAi 的时间通关,并解锁关卡 i+1i+1i+1。
花费 BiB_iBi 的时间通关,并解锁关卡 XiX_iXi。
输出解锁关卡 NNN 所需的最短时间。
思路
看到这种题首先想到的当然是 dp,但对于这道题来说 dp 的转移顺序并不好确定,于是交了一发记忆化搜索却 WA 了。
这种情况下我们可以考虑建图,把关卡编号看成点,解锁关卡花费的时间看成边,然后我们就只需要对每个点 iii 到点 i+1i+1i+1 连一条长度为 AiA_iAi 的边,到点 XiX_iXi 连一条长度为 BiB_iBi 的边,直接以点 111 为起点跑最短路即可,最终到点 NNN 的距离就是答案。
代码
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263co ...
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就像流汗黄豆。全世界都是流汗黄豆。流汗黄豆。