2025.11.8 NOIP 复活赛总结

由于蒟蒻今年 S 组只拿了 \(15\) 分,作为机房最低分与另一位没过线的同志(今年 SD NOIP体验线为 \(25\) 分)在教练的安排下开始了复活赛比赛,时长两个小时,三个题目,谁分数高谁获得推荐名额。

不过还是要吐槽一下,教练从网上找了个三个 DP 题,真是无语了

题目链接
由于是复活赛,教练没有给出题解,只能自己写了
T1 一开始看像是贪心,后来假了(耗费了 \(10\) min),然后想到线性 DP,但是一看数据范围 \(1\le m\le 10^9\) 直接炸了,复杂度里不能有 \(m\),没想出来只能打了 \(60\) 分部分分(\(1\le m \le10^5\)),结果后来没时间,写了个 dfs 挂了。正解是注意到当这个数大于 \(4*7-4-7\)\(17\) 时就都能到达,直接离散化全都缩成一个点就行,这里的结论来自于小凯的疑惑,还有就是这道题我感觉很熟悉,是因为这道题就是过河的弱化版,我还做过只是忘记了,哎。

T2 我只看了一眼,好像是二位价值 DP,但是因为忘记了方差公式变形,直所以接去做 T3,没做 T2。考完问了一下才知道方差公式可以变形为:
\(s^2=\sum_{i=1}^{n} (a_{i}-\bar{a})^2\)
\(=\sum_{i=1}^{n} a_{i}^2-2n\sum_{i=1}^{n} a_{i}\bar{a}+n \bar{a}^2\)
\(=\sum_{i=1}^{n} a_{i}^2-2n \bar{a}^2+n \bar{a}^2\)
\(=\sum_{i=1}^{n} a_{i}^2-n \bar{a}^2\)
\(=\sum_{i=1}^{n} a_{i}^2-(\sum_{i=1}^{n}a_{i})^2\)
所以就能知道最后求得的就是 \((n-m+1)\sum_{i=1}^{n} a_{i}^2-(\sum_{i=1}^{n}a_{i})^2\)
所以可以枚举每一种和所对应的平方和做一遍 DP(因为最大加和不超过 \(1800\)),状态表示 \(dp[i][j][k]\) 就表示在第 \(i\) 行第 \(j\) 列加和为 \(k\) 的最小平方和,状态转移方程为:
向下:\(dp_{i,j,k}=min(dp_{i,j,k},dp_{i-1,j,k-a_{i,j}}+a_{i,j}^2);\)
向右:\(dp_{i,j,k}=min(dp_{i,j,k},dp_{i,j-1,k-a_{i,j}}+a_{i,j}^2);\)
最后的答案就是:\(\min_{k=0}^{1800} (n+m-1)dp_{n,m,k}-k^2\)
代码:

#include<bits/stdc++.h>
using namespace std;
const int N=30;
inline int read(){int x=0,f=1;char c=getchar();while(c<'0' || c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0' && c<='9'){x=x*10+c-'0';c=getchar();}return x*f;
}
int T=read(),t,a[N+5][N+5],dp[N+5][N+5][2*N*N+5];
int main(){while(T--){t++;int n=read(),m=read();for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)a[i][j]=read();for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)for(int k=0;k<=1800;k++)dp[i][j][k]=1<<30;dp[1][1][a[1][1]]=a[1][1]*a[1][1];for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(i==1 && j==1)continue;for(int k=0;k<=1800;k++){if(i>1 && k>=a[i][j])dp[i][j][k]=min(dp[i][j][k],dp[i-1][j][k-a[i][j]]+a[i][j]*a[i][j]);if(j>1 && k>=a[i][j])dp[i][j][k]=min(dp[i][j][k],dp[i][j-1][k-a[i][j]]+a[i][j]*a[i][j]);}}}int ans=1<<30;for(int k=0;k<=1800;k++){if(dp[n][m][k]==1<<30)continue;int cnt=(n+m-1)*dp[n][m][k]-k*k;ans=min(ans,cnt);}printf("Case #%d: %d\n",t,ans);}return 0;
}

T3 我一眼出是换根 DP,但是我忘记怎么写了,手推了一个小时的式子结果错了,主要是第二个 dfs 错了,我一开始想的是:\(ans_{y}=ans_{x}+(size_{x}-size_{y}-1)dist[y]-size_{y}dist[y]\),考完才想起来,每次换根都会导致原有的 \(dist\) 数组发生改变,不应该乘 \(dist\) 而是要乘 \(x\)\(y\) 之间的边权 \(w\),即 \(ans_{y}=ans_{x}+*(n-2size_{y})w\),还有这里的 \((n-2size_{y})w\) 与上面的 \((size_{x}-size_{y}-1)w-size_{y}w)\) 是一样的
所以当 \(m=0\) 时的代码:

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
inline int read(){int x=0,f=1;char c=getchar();while(c<'0' || c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0' && c<='9'){x=x*10+c-'0';c=getchar();}return x*f;
}
int n,m,dist[N],siz[N],ans[N],f[N];
vector< pair<int,int> > edges[N];
inline void dfs1(int x,int father){siz[x]=1;for(auto y:edges[x]){if(y.first!=father){dfs1(y.first,x);siz[x]+=siz[y.first];f[x]+=f[y.first]+siz[y.first]*y.second;}}
}
inline void dfs2(int x,int father){for(auto y:edges[x]){if(y.first!=father){ans[y.first]=ans[x]+(n-2*siz[y.first])*y.second;dfs2(y.first,x);}}
}
int main(){
//	freopen("warehouse.in","r",stdin);
//	freopen("warehouse.out","w",stdout);n=read(),m=read();for(int i=1;i<n;i++){int x=read(),y=read(),z=read();edges[x].push_back({y,z});edges[y].push_back({x,z});}dfs1(1,1);ans[1]=f[1];dfs2(1,1);for(int i=1;i<=n;i++)printf("%d\n",ans[i]);return 0;
} 

但是这道题最难得点不在于换根 DP,而是每次边权 \(\bigoplus m\) ,这个就比较麻烦了,不过可以先把每个边权变成减去其除以 \(16\) (因为 \(m\) 的范围为 \(1\le m \le 15\))的余数,并把余数单独拿出来放后面处理,先用处理后的边权跑一遍正常的换根 DP,然后统计每条路径的长度处理余数,如果路径长度是偶数就不变(因为连续异或上两次一样的数不放声改变),否则就异或一次就行,最后加起来就是答案

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/959550.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 年 11 月粘度计厂家推荐排行榜,在线粘度计,旋转粘度计,振动粘度计,反应釜在线粘度计,实验室旋转粘度计公司推荐

2025年粘度计行业权威推荐:在线、旋转、振动粘度计厂家综合评估 随着工业自动化水平的不断提升,粘度测量技术在流程工业中的重要性日益凸显。在线粘度计、旋转粘度计和振动粘度计作为工业生产与实验室研究的关键设备…

完整教程:JMeter之 json提取器与json path语法

完整教程:JMeter之 json提取器与json path语法pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…

2025 年 11 月连铸机设备厂家推荐排行榜,扇形段,大包回转台,钢包中间罐,结晶器总成,拉矫机,引锭杆,输送辊道,钢坯液压剪等核心部件专业供应商

2025年连铸机核心设备供应商综合评估与选购指南 一、连铸设备行业发展趋势 随着钢铁行业向绿色化、智能化方向转型,连铸设备作为钢铁生产的关键环节,其技术革新与设备升级已成为行业关注焦点。2025年,连铸设备市场呈…

简洁思维:python实现插入排序、冒泡排序和选择排序

一、插入排序(Insertion Sort) 实现思路: 插入排序的核心思想是:将数组分为「已排序区间」和「未排序区间」,初始时已排序区间只有第一个元素。然后依次从未排序区间中取出元素,插入到已排序区间的合适位置(保证…

2025 年 11 月不锈钢酸洗钝化液厂家推荐排行榜,环保型不锈钢管酸洗钝化液,不锈钢清洗钝化液,酸洗钝化处理与不锈钢清洗剂公司推荐

2025 年 11 月不锈钢酸洗钝化液厂家推荐排行榜:环保型不锈钢管酸洗钝化液、不锈钢清洗钝化液、酸洗钝化处理与不锈钢清洗剂公司推荐 行业背景与发展趋势 不锈钢材料因其优异的耐腐蚀性和机械性能,在石油化工、食品医…

价值权衡范式:环境-价值体系-规则体系

价值权衡范式:环境-价值体系-规则体系 岐金兰 这个范式描述了任何价值权衡决策都是在三个系统的动态交互中完成的: graph TDA[环境<br>现实约束与机遇] --> B[价值体系<br>意义生成与评判];B --> …

2025 年 11 月 Type-C 连接器厂家推荐排行榜,Type-C 连接器分析,Type-C 连接器模具,高性能连接方案专业制造商精选

2025 年 11 月 Type-C 连接器厂家推荐排行榜,Type-C 连接器分析,Type-C 连接器模具,高性能连接方案专业制造商精选 Type-C 连接器作为现代电子设备中不可或缺的接口组件,其技术演进和市场应用正经历着快速变革。随…

深入理解计算机启动流程:从按下电源到操作系统加载

关键词:启动引导 MBR 分区表 磁盘格式化 BIOS/UEFI目录深入理解计算机启动流程:从按下电源到操作系统加载一、 系统启动过程的“四级接力”第一棒:ROM中的引导程序第二棒:磁盘引导程序第三棒:分区引导程序第四棒:…

2025年深圳保税区域一日游机构权威推荐榜单:综合保税区域一日游/保税地区一日游/保税区一日游源头机构精选

在粤港澳大湾区一体化进程加速的背景下,深圳保税区域"一日游"业务以其高效便捷的通关模式,正成为企业优化供应链、降低运营成本的重要选择。 随着深圳外向型经济的持续发展,保税区域"一日游"业…

2025 年 11 月氢气检测仪厂家推荐排行榜,在线式氢气检测仪,固定式氢气检测仪,便携式氢气检测仪,手持式氢气检测仪公司推荐

2025年氢气检测仪行业深度解析与权威推荐榜单 一、行业背景与发展趋势 随着全球能源转型进程加速,氢能作为清洁能源的重要组成部分,其安全检测需求日益凸显。氢气检测仪作为保障氢能产业链安全运行的关键设备,在石油…

2025 年 11 月 TYPE-C 母座 2PIN 厂家推荐排行榜,TYPE-C 母座,2PIN TYPE-C 母座,TYPE-C 2PIN 连接器优质供应商精选

2025 年 11 月 TYPE-C 母座 2PIN 厂家推荐排行榜 TYPE-C 连接器作为现代电子设备的核心接口,其技术演进与市场应用正呈现多元化发展趋势。特别是 2PIN 配置的 TYPE-C 母座,凭借其紧凑结构、高兼容性和成本优势,在智…

2025 年 11 月工作服厂家推荐排行榜,防静电/劳保/国网/餐厅/工厂/电工/防酸碱/电力/车间/航空/员工工作服,文化衫/t恤/polo衫/冲锋衣/t恤衫公司推荐

2025 年 11 月工作服厂家推荐排行榜:专业防护与职业着装的全方位指南 在工业生产、特种作业和服务行业中,工作服不仅关乎企业形象,更直接关系到员工的安全与工作效率。随着2025年临近,工作服行业在防静电、劳保、防…

2025 年 11 月卖得好的学习机品牌推荐:市场榜五强评测

开学季刚过,双 11 又至,家长群里最热的话题莫过于 “该给孩子换哪台学习机”。有人担心课程版本不匹配,有人怕屏幕伤眼,更有人被动辄三四千的价格吓退。教育部 2025 年二季度发布的《教育智能硬件消费观察》显示,…

2025年户外广播喇叭生产厂家权威推荐榜单:户外扩音喇叭/户外的喇叭/户外高音喇叭源头厂家精选

从公园景区到应急指挥,户外广播喇叭正以其不可替代的声场覆盖能力,成为公共安全和信息传递的关键设备,其精准的音质和稳定的性能直接关系到信息传递的效果。 户外广播喇叭作为专业音频设备的重要组成部分,其市场需…

2025 年 11 月不锈钢水箱厂家推荐排行榜,不锈钢方形水箱,组合式水箱,消防水箱,生活水箱,保温水箱,承压水箱,不锈钢水塔公司推荐

2025年11月不锈钢水箱厂家推荐排行榜:专业选购指南与权威榜单 在现代化建筑设施和工业体系中,不锈钢水箱作为关键的储水设备,其性能和质量直接影响着供水系统的安全稳定运行。随着市场对不锈钢方形水箱、组合式水箱…

OCX与C# 之二:初始OCX

核心结论 可以这样简单地理解它们(ActiveX 控件 ocx文件 OCX)的演变关系: OCX(一种文件格式) → OLE 控件(一种技术) → ActiveX 控件(一个营销新名称) 换句话说:OCX 是文件的容器和扩展名。 ActiveX 控件 是…

python:python执行js

一,安装node 安装Node.js(推荐)下载地址:https://nodejs.org 验证安装:node -v$ node -v v22.20.0 二,安装python库 $ pip install PyExecJS Collecting PyExecJSDownloading PyExecJS-1.5.1.tar.gz (13 kB)Inst…

flask:模板用extends扩充页面内容

一,代码: base模板: common/mainbase.html {% include common/header.html %} <h1>{{ meta.title }}</h1>{% block listcontent %}{% endblock %} {% include common/footer.html %} 子模板: user/list.…

详细介绍:深度解析 Spring Boot 应用 Logback 初始化失败问题:从报错定位到彻底解决

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

flask: 用模板渲染html页面

一,代码 结构:py from flask import Blueprint,jsonify,render_templateuser = Blueprint(user, __name__)@user.route("/list/") def tech_news():meta = {"title": "用户列表",&quo…