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

P9096 [PA 2020] Sen o podboju 题解

题目链接

続く日めくりカレンダー
一页页翻过的日历延续着

在【数据删除】遇到的题目,纯乱搞题。如果放在 OI 赛制,我估计是要被喷的。 得亏是 IOI 严格。

考虑一下最唐的DP,定义 \(f[i][j][k]\) 表示 \(i\) 子树,分成 \(j\) 段,当前答案为 \(j\),转移是显然的,这里不再赘述。这样的作法复杂度来到了 \(O(n^2 val^2)\),显然是过不去的。

一个很明显的策略是减少状态数。我们可以发现如果 \(f[i][j][k_1] \le f[i][j][k_2]\)\(k_1 < k_2\),那么 \(k_2\) 就肯定不会产生贡献,也就不用记录并转移。这样子状态数可以少很多。由于数据随机,因此出题人无法卡我们,因此跑的很快。

我是奶龙,因此不会分析复杂度。但反正过了。

Code

#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define fi first
#define se second
#define IOS ios::sync_with_stdio(false);cin.tie(0),cout.tie(0)
#define File(s) freopen(s".in","r",stdin);freopen(s".out","w",stdout)
const int N = 305;
const LL INF = 1e18;
vector< pair< LL , LL > > dp[N][N];//i节点 j块 fi:k,se:ans
vector< pair< LL , LL > > tmp[N];//临时的
LL a[N];
int n;
int siz[N];
vector<int> G[N];
void dfs(int u,int fa){siz[u] = 1;dp[u][1].push_back({a[u],a[u] * a[u]});for(int v : G[u]){if(v == fa) continue;dfs(v,u);for(int i=1;i<=siz[v];i++)for(int j=1;j<=siz[u];j++){for(pair<LL,LL> x : dp[v][i])for(pair<LL,LL> y : dp[u][j]){tmp[i+j-1].push_back({x.first + y.first,x.second + y.second + 2 * x.first * y.first});tmp[i+j].push_back({y.first,x.second + y.second});}}siz[u] += siz[v];for(int i=1;i<=siz[u];i++){sort(tmp[i].begin(),tmp[i].end());dp[u][i].clear();LL minn = INF;for(pair<LL,LL> x : tmp[i]){if(minn > x.se){dp[u][i].push_back(x);minn = x.se;}}tmp[i].clear();}}
}
void solve(){for(int i=1;i<=n;i++){siz[i] = 0;G[i].clear();tmp[i].clear();for(int j=1;j<=n;j++)dp[i][j].clear();}cin >> n;for(int i=1;i<=n;i++)cin >> a[i];for(int i=1;i<n;i++){int u,v;cin >> u >> v;G[u].push_back(v);G[v].push_back(u);}dfs(1,0);for(int i=1;i<=n;i++){int siz = dp[1][i].size();cout << dp[1][i][siz-1].se << " ";}cout << "\n";
}
int main()
{int T;IOS;// File("tree");cin >> T;while(T -- ) solve();return 0;
}
http://www.jsqmd.com/news/572413/

相关文章:

  • 从头拾起公众号文章创作....
  • R3nzSkin项目归档后,如何寻找和评估可用的Fork版本(以国服15.20为例)
  • 变频器谐波干扰治理实战:从硬件配置到系统优化的完整指南
  • Blender USDZ插件全解析:从基础应用到高级优化
  • 新手必看!像素剧本圣殿保姆级教程:从安装到创作全流程
  • 秒杀系统主库宕机不丢单方案-05-Redis预扣+消息队列
  • 香橙派Zero/PC双板实测:一篇搞定Ubuntu镜像下载、烧录与首次SSH连接
  • S32K3XX外设时钟配置详解:以UART1为例,手把手教你算波特率(EB配置全流程)
  • 高中学历快递小哥成功转行数据分析师,CDA数据分析师备考经验
  • Gophish密码重置全攻略:从SQLite操作到密码哈希替换
  • 从赛车标志到掌心强芯:F1中国站上的骁龙印记
  • STM32时钟配置避坑指南:HSE旁路模式与有源晶振实战解析
  • Phi-4-mini-reasoning惊艳案例:多约束逻辑题(时间/空间/因果)联合推理输出
  • 用PyTorch和MNIST数据集,手把手教你复现CGAN生成指定数字(附完整代码)
  • 深入UDS诊断刷写:对比DoCAN与DoIP在实车OTA中的完整流程与信号分析
  • Bash脚本实战:5个超实用的.sh文件编写技巧(附代码示例)
  • DOL-CHS-MODS整合包全攻略:从零基础到个性化定制
  • OpenCore Legacy Patcher:让老旧Mac重生的系统焕新工具
  • 【圆环阵列】HFSS圆环阵列【含Matlab源码 15259期】
  • 实测16公里无人机WiFi图传模块:如何在山地救援中实现零延迟高清回传?
  • 别再只盯着YOLO了!传统OpenCV轮廓检测+单目测距,在边缘设备上也能跑出高精度
  • 用STM32CubeMX和HAL库搞定编码电机测速:从定时器编码器模式到转速计算全流程
  • BlenderUSDZ:实现3D模型AR化的高效解决方案
  • 3步实现AI智能背景移除:开源工具让透明GIF制作变得如此简单
  • 不止于去广告:在UOS上配置AdGuardHome,解锁安全搜索、家长控制和防DNS劫持的全家桶网络守护
  • Cesium影像图层实战:从ImageryLayer到ImageryProvider的完整配置指南(附常见问题解决)
  • 语雀文档批量导出终极指南:快速备份你的创作内容
  • AUBO i5机械臂手眼标定后,如何让末端执行器稳定跟踪移动的ArUco码?
  • 三菱PLC GXWorks2实战:基于SFC的红绿灯控制系统设计与优化
  • 玩转ESP32-S3调试:GDB高级命令与自定义调试技巧大全