当前位置: 首页 > news >正文

2025.11 做题记录

P3412 仓鼠找sugar II

solution

先把题意转化成,求对于所有 \(a,b\) 的情况,从 \(a\) 走到 \(b\) 的期望步数和。

对于这个东西,把每条边的贡献拆出来。答案即 \(\sum 每条边的经过次数 \times 走过每条边的期望步数\)

下文 \(siz_u\)\(u\) 的子树大小,\(deg_u\)\(u\) 的度数,\(v\in u\) 表示 \(v\)\(u\) 的儿子,\(fa\) 默认 \(u\) 的父亲。

\(f_u\) 为从 \(u\) 走到 \(fa\) 的期望步数,\(g_u\) 为从 \(fa\) 走到 \(u\) 的期望步数。

我们有:

\[\begin{align} f_u&=\frac{1}{deg_u}(1+\sum_{v\in u}(1+f_v+f_u))\\ &=deg_u+\sum_{v\in u} f_v\\ g_u&=\frac{1}{deg_{fa}}(1+\sum_{\substack{v\in fa\\v\neq u}}(1+f_v+f_u))\\ &=deg_{fa}+\sum_{\substack{v\in fa\\v\neq u}} f_v \end{align} \]

求这个东西没什么难度吧!

然后计算每条边的经过次数。其实比较简单,\(u\) 走到 \(fa\) 的话可选择的起点个数为 \(siz_u\),终点个数为 \(n-siz_u\)\(fa\) 走到 \(u\) 同理。

直接统计答案即可。

P3527 [POI 2011] MET-Meteors

在这题 mark 一下整体二分。

solution

考虑只有一个国家怎么做。扫过去当然是可以的。

使用二分。判断一个 \(i\) 合不合法时,将 \([1,i]\) 的修改全部做完,如果修改后的陨石数量 \(\ge\) 需求量说明答案 \(\le i\)。复杂度 \(O(n\log n)\)

那么 \(n\) 个国家呢?直接做显然就爆了。但是我们发现做了很多冗余的操作。比如说,第一轮 \(\operatorname{check}(\frac{n}{2})\) 时,所有的国家都会把 \([1,\frac{n}{2}]\) 的操作全部做一次。

所以可以把一些答案确定的区间相同的询问合并在一起做。这样说有点抽象,具体来说:

\(\operatorname{dvd}(L,R,l,r)\) 表示需要处理国家(编号)在 \([L,R]\) 范围内,它们目前的答案范围均为 \([l,r]\)

我们将 \([1,mid]\) 的操作全部做完(不止一个国家,所以需要上数据结构。BIT 即可。)。此时扫一遍,判断哪些国家已经收集到足够陨石了,将它们扔进 \([l,mid]\) 中,否则扔进 \([mid+1,r]\) 中。实现时可以将合法的部分重新放在 \([L,L+cnt-1]\) 中,剩下的往后排。就不需要用什么动态数组了!

复杂度 \(O(n\log^2 n)\)

code

当然不能真的“将 \([1,mid]\) 的操作全部做完”。有两种处理方式:

  • 做完当前区间先递归进入右区间,不删除贡献(类似莫队写法?)。这个比较好写,但是在有默认时间维时显然会出问题。
  • 把要递归进右区间的询问 \(k\) 减去 \([1,mid]\) 部分的贡献。

其实感觉说得还是一坨。代码比较好理解。

扔一个分治部分的实现方式。

void dvd(int L,int R,int l,int r){if(L>R||l>r) return;if(l==r){for(int i=L;i<=R;i++) ans[p[i]]=l;return;}const int mid=(l+r>>1);while(liz<mid) upda(++liz,1);while(liz>mid) upda(liz--,0);int lx=0,ly=0;for(int i=L;i<=R;i++){chk(p[i])?(x[++lx]=p[i]):(y[++ly]=p[i]);}for(int i=1;i<=lx;i++) p[L+i-1]=x[i];for(int i=1;i<=ly;i++) p[R-i+1]=y[i];dvd(R-ly+1,R,mid+1,r);dvd(L,L+lx-1,l,mid);
}

Submission。

P3332 [ZJOI2013] K大数查询

solution

二分答案,线段树(因为我不会树状数组维护区间加区间查)维护一段区间内的集合 \(\ge mid\) 的数总共有多少个。

注意这题就属于上文提到的“有默认时间维”一类。

code

因为要保证相对顺序(时间维)稳定,所以略繁琐一点?

void dvd(int L,int R,int l,int r){if(L>R||l>r) return;if(l==r){for(int i=L;i<=R;i++) ans[p[i]]=l;return;}const int md=(l+r>>1);int lx=0,ly=0;for(int z=L,i;z<=R;z++){i=p[z];if(!o[i].op){if(o[i].x>md){y[++ly]=i;upda(i,1);}else{x[++lx]=i;}}else{chk(i)?(y[++ly]=i):(x[++lx]=i);}}for(int i=1;i<=ly;i++){if(!o[y[i]].op) upda(y[i],-1);}for(int i=1;i<=lx;i++) p[L+i-1]=x[i];for(int i=1;i<=ly;i++) p[L+lx+i-1]=y[i];dvd(L,L+lx-1,l,md);dvd(R-ly+1,R,md+1,r);
}

Submission。

P1527 [国家集训队] 矩阵乘法

solution

mark 二维树状数组。

其余没区别了。

code

Submission。

P2617 Dynamic Rankings

solution

把更改一个点的值拆成在删除一个值后加入一个值。

code

Submission。

P3250 [HNOI2016] 网络

solution

先想想单个询问二分怎么做。

判断所有 \(w>mid\) 的路径是否都经过了 \(u\)。如果都经过了说明答案 \(\le mid\),反之亦然。

可以记录有多少条 \(w>mid\) 的路径,然后对于每条这样的边,给边上的所有点打标记。判断一个点上的标记个数是否等于总数即可。

给路径打标记是经典 trick。即给根分别到 \(u,v\) 的路径 \(+1\),根到 \(lca,fa_{lca}\) 的路径上 \(-1\),单点查询。等价于单点修这几个点,查询子树和。dfn 序 + BIT 简单维护。

然后搬到整体二分的板子上就做完了!

code

Submission。

P3242 [HNOI2015] 接水果

solution

\(l_u=dfn_u,r_u=dfn_u+siz_u-1\)

考虑一条路径 \((x,y)\) 包含 \((u,v)\)\((x,y)\)\((u,v)\) 的关系。比较复杂就不列了(懒!)。

最后一定形如 \(l_x\in [],l_y\in[]\)。即平面上的一个点 \((x,y)\) 在一个矩形内。

那么我们给每个矩形打标记,即可快速统计 \((x,y)\) 包含了多少条路径。

还是先想单个二分怎么做。把每个 \(w\le mid\) 的盘子打上标记,统计 \((x,y)\) 包含的盘子个数是否 \(\ge k\)。如果是说明答案 \(\le mid\),反之亦然。

套上整体二分即可。注意这个没有默认时间维,但是扫描线时需要保证 \(y\) 是单调不降的。把 \(y\) 当作默认时间维即可。

code

难吃。

Submission。

http://www.gsyq.cn/news/40713.html

相关文章:

  • 2025 年 11 月外墙仿石漆厂家推荐排行榜,真石漆,水包砂,质感涂料,仿石涂料优质品牌公司推荐
  • 2025 年 11 月耐污仿石漆厂家推荐排行榜,外墙耐污仿石漆,墙面耐污仿石漆,建筑涂料耐污仿石漆公司推荐
  • 2025 年 11 月水包水仿石漆厂家推荐排行榜,外墙水包水仿石漆,多彩水包水仿石漆,质感水包水仿石漆公司推荐
  • 2025年11月轻便行李箱品牌十大排行榜:全维度解析与避坑建议
  • 2025 年 11 月防霉仿石漆厂家推荐排行榜,外墙防霉仿石漆,室内防霉仿石漆,水性防霉仿石漆,高效防霉仿石漆公司推荐
  • 移动应用APP开发搭建自动化测试框架经验分享
  • 2025年11月领先品牌认证机构服务榜:尚普咨询集团华信人对比评价
  • 2025年11月安全燃气灶产品评测榜:五强机型安全性能数据公开
  • 2025年11月北京继承律师排行:聚焦恒略于大伟团队实力榜
  • 2025年稳定性高的实木全屋定制品牌企业推荐
  • 快充协议下同步整流MOS管优化策略-ASIM阿赛姆
  • C#中的 Task.WaitAll 与 Task.WhenAll
  • 告别繁琐办公!这款本地PDF工具箱,安全高效才是硬道理!
  • 2025年11月解酒护肝产品实力榜:权威认证与用户体验深度评测
  • 2025 年文胸厂家最新推荐排行榜:调整型、养生、小胸、大胸等多类型文胸全覆盖,权威测评指引选品方向无钢圈/少女/大罩杯文胸公司推荐
  • 2025年6月AI搜索营销推荐榜:权威评测五强与五家备选
  • AI图像新纪元!Nano Banana带你玩转3D手办创作,人人都能成为设计大师!
  • [REPRINT] - SM4 - ENGINEER
  • 2025年6月deepseek关键词排名优化服务权威榜:五家机构对比评测
  • 2025年6月GEO优化权威推荐榜:五强对比评测与选型指南
  • Ansiable批量执行设置定时任务的脚本
  • 2025年6月GEO服务商推荐榜:五家对比看清优劣
  • 2025年6月GEO优化权威榜:五强对比评测助你决策
  • flanneld检查脚本
  • 深入解析:逻辑回归之参数选择:从理论到实践
  • 宝塔Linux部署 一个基于uni-app 系统指南
  • MySQL Binlog 疯涨问题终极解决方案:从配置到代码的全维度优化
  • 2025年质量好的螺旋压榨机厂家最新推荐权威榜
  • 2025年比较好的实木公寓床厂家推荐及选购指南
  • 2025年口碑好的重型三节轨厂家最新TOP排行榜