首页 > 拆迁入门
头像 AliLexiWalker
发表于 2026-05-09 08:22:09
给定按自上而下、自左而右编号的 n 层三角形麻将塔,初始被猫猫推倒若干块;若一块麻将的左右两个下方支撑都被推倒,则该块也会倒,求连锁反应最终倒下的总块数。 把每个编号先换成它在塔里的“第几行第几列”;然后从上往下一行一行看。每一行被猫抓倒的麻将会在这一行形成若干段连续的空位(区间),这些连续的空位会 展开全文
头像 小男娘
发表于 2026-05-09 03:21:45
首先不难发现可以从底向上递推,碰到两个相邻的就把上方的点添加进去喵~这样时间和答案成正比喵~但是答案高达 所以会超时喵~ 考虑优化这个模拟喵~一层一层向上推,如果原本是个连续区间推一层这个区间长度会短 喵~长度到小男娘 就会删除喵~ 所以可以考虑维护一个珂朵莉树喵~额外存储一个当前长度的有序集 展开全文
头像 FoolBlade
发表于 2026-05-09 14:19:06
将所有被选中的麻将分层处理,从最下面的那一层开始,对于每一层,如果多个麻将连结成了一个线段,那么以这个线段为底的一个金字塔都会被推倒,同时被推倒的这个金字塔有可能和上面的某层的线段形成新的金字塔,我们就可以将金字塔在这一层和上一层之间的部分先加上,再将这个金字塔与上一层的交集插入到上一层的线段中,这 展开全文
头像 IA3000
发表于 2026-05-09 19:17:39
#include <bits/stdc++.h> using namespace std; using LL = long long; const int K = 3e5 + 5; LL n, k; LL a[K]; int get_n(LL x) { int l = 1, 展开全文

等你来战

查看全部