5290: [Hnoi2018]道路

链接

分析:

  注意题目中说每个城市翻新一条连向它的公路或者铁路,所以两种情况分别转移一下即可。

  注意压一下空间,最后的叶子节点不要要访问,空间少了一半。

代码:

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<iostream>
#include<cctype>
#include<set>
#include<vector>
#include<queue>
#include<map>
#define fi(s) freopen(s,"r",stdin);
#define fo(s) freopen(s,"w",stdout);
using namespace std;
typedef long long LL; inline int read() {
int x=,f=;char ch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-;
for(;isdigit(ch);ch=getchar())x=x*+ch-'';return x*f;
} const int N = ;
int head[N], ls[N], rs[N], a[N], b[N], c[N], siz0[N], siz1[N], n;
LL dp[][][]; inline LL Calc(int u,int x,int y) { // 从根到u的路径上,表示翻新了x条公路,y条铁路
if (u >= n) return 1ll * c[u] * (siz0[u] - x + a[u]) * (siz1[u] - y + b[u]);
return dp[u][x][y];
} void dfs(int u) {
if (u >= n) { return ;
// for (int i = 0; i <= siz0[u]; ++i)
// for (int j = 0; j <= siz1[u]; ++j)
// dp[u][i][j] = 1ll * c[u] * (siz0[u] - i + a[u]) * (siz1[u] - j + b[u]); // 表示翻新了i条公路,j条铁路
// return ;
}
siz0[ls[u]] = siz0[u] + ; siz1[ls[u]] = siz1[u]; dfs(ls[u]);
siz0[rs[u]] = siz0[u]; siz1[rs[u]] = siz1[u] + ; dfs(rs[u]); for (int i = ; i <= siz0[u]; ++i)
for (int j = ; j <= siz1[u]; ++j) {
dp[u][i][j] = 1e18;
dp[u][i][j] = min(dp[u][i][j], Calc(ls[u], i + , j) + Calc(rs[u], i, j)); // 翻新公路
dp[u][i][j] = min(dp[u][i][j], Calc(ls[u], i, j) + Calc(rs[u], i, j + )); // 翻新铁路
}
}
int main() {
n = read();
for (int i = ; i < n; ++i) {
int u = read(), v = read();
if (u < ) u = -u + n - ;
if (v < ) v = -v + n - ;
ls[i] = u;
rs[i] = v;
}
for (int i = ; i <= n; ++i)
a[i + n - ] = read(), b[i + n - ] = read(), c[i + n - ] = read();
dfs();
cout << dp[][][];
return ;
}

最新文章

  1. 支付宝推AR实景红包,抢红包得拼脑力和体力
  2. iOS CommonCrypto 对称加密 AES ecb,cbc
  3. push submodule
  4. 基于Bootstrap简单实用的tags标签插件
  5. WinForm程序打包说明
  6. android 动画属性(一)之Animation
  7. pyinstaller使用小结
  8. spring boot 数据库连接池配置
  9. HDOJ--ACMSteps--2.1.8--Leftmost Digit-(取对数,数学)
  10. js中如何在一个函数里面执行另一个函数
  11. Oracle完全卸载详解
  12. 微信支付之02------整个微信支付功能----------Java实现
  13. php中cookie和session的总结
  14. build to win读后感
  15. 解决yii2 禁用layout时AppAsset不加载资源的问题
  16. 逻辑回归&amp;线性回归
  17. python-django rest framework框架
  18. AJAX unsupported media type 415错误处理
  19. BZOJ4205 : 卡牌配对
  20. Centos7 配置ssh 免秘钥登陆

热门文章

  1. CompletionService和ExecutorCompletionService
  2. [翻译] AAPullToRefresh
  3. @private、@protected与@public三者之间的区别
  4. jenkins+gitlib+git+mysql5.6+sonarqube+sonarrunner
  5. MySql报2006error错误的解决方法(数据过大)
  6. struts2.5动态方法绑定问题
  7. 关于RSA、公钥、私钥、加密、签名的那些概念
  8. 【Jenkins持续集成】好用的插件集合
  9. 各版本eclipse的maven配置
  10. ubuntu安装pycharm并设置快捷方式