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

百度网站怎么做信息优化方案化学

百度网站怎么做信息,优化方案化学,私人可以做org后缀网站吗,免费com域名注册永久树形 d p dp dp 例1 - 基础 链接#xff1a;树上子链 练手 分析 其实一看题就很显然的树形 d p dp dp子链在这里分为两种情况#xff0c;如图黑链和红链 思路 d p [ i ] dp[i] dp[i] 表示以 i i i 开头的红链的最大权值易得#xff1a; d p [ i ] m a x ( d p [ i…树形 d p dp dp 例1 - 基础 链接树上子链 练手 分析 其实一看题就很显然的树形 d p dp dp子链在这里分为两种情况如图黑链和红链 思路 d p [ i ] dp[i] dp[i] 表示以 i i i 开头的红链的最大权值易得 d p [ i ] m a x ( d p [ i ] , a [ u ] d p [ v ] ) dp[i] max(dp[i], a[u] dp[v]) dp[i]max(dp[i],a[u]dp[v])黑链的更新你可以另设一个 d p dp dp 也可以直接更新答案 a n s m a x ( a n s , d p [ u ] d p [ v ] ) ans max(ans, dp[u] dp[v]) ansmax(ans,dp[u]dp[v])黑链存在的话一定是最长两条红链的和应该说是两条子红链加父亲节点权值 你可以想想这样为什么行 #include bits/stdc.husing ll long long;int main() {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);int n;std::cin n;std::vectorll a(n 1);for (int i 1; i n; i) {std::cin a[i];}std::vectorstd::pairint ,int e((n 1) 1);std::vectorint head(n 1);int cnt 0;auto add [](int u, int v) {e[cnt] {v, head[u]}, head[u] cnt;};for (int i 1; i n; i) {int u, v;std::cin u v;add(u, v);add(v, u);}ll ans -1e18;std::vectorll dp(n 1);std::functionvoid(int, int) dfs [](int u, int f) {dp[u] a[u];for (int i head[u]; i; i e[i].second) {int v e[i].first;if (v xor f) {dfs(v, u);ans std::max(ans, dp[u] dp[v]);dp[u] std::max(dp[u], a[u] dp[v]);}}ans std::max(ans, dp[u]);};dfs(1, 0);std::cout ans;return 0; }例2 - 进阶 链接二叉苹果树 练手 分析 树上背包 思路 设 d p [ i ] [ j ] dp[i][j] dp[i][j] 表示以 i i i 节点保留 j j j 条树枝最多苹果数量。易得 ∑ j 2 m ∑ k 1 , k j s z [ v ] d p [ u ] [ j ] m a x ( d p [ u ] [ j ] , d p [ u ] [ j − k ] d p [ v ] [ k ] \sum\limits_{j2}^m \sum\limits_{k1,kj}^{sz[v]}dp[u][j]max(dp[u][j],dp[u][j-k]dp[v][k] j2∑m​k1,kj∑sz[v]​dp[u][j]max(dp[u][j],dp[u][j−k]dp[v][k] 。注意这里的二维其实相当于普通背包的一维所以 j j j 的枚举应该倒序。 #includebits/stdc.husing ll long long;int main() {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);int n, q;std::cin n q;q;std::vectorstd::tupleint, int, int e((n 1) 1);std::vectorint head(n 1);int cnt 0;auto add [](int u, int v, int w) {e[cnt] {v, w, head[u]}, head[u] cnt;};for (int i 1; i n; i) {int u, v, w;std::cin u v w;add(u, v, w);add(v, u, w);}std::vectorstd::vectorint dp(n 1, std::vectorint(q 1));std::vectorint sz(n 1);std::functionvoid(int, int, int) dfs [](int u, int f, int m) {sz[u] 1;for (int i head[u]; i;) {auto [v, w, nxt] e[i];if (f xor v) {dp[v][1] w;dfs(v, u, m);sz[u] sz[v];for (int j m; j 1; --j) {for (int k 1; k sz[v] and k j; k) {dp[u][j] std::max(dp[u][j], dp[u][j - k] dp[v][k]);}}}i nxt;}};dfs(1, 0, q);std::cout dp[1][q];return 0; }例3 - 困难 链接树上染色 练手这个更难 分析 可以考虑上题一样就背包思想枚举。 思路 设 d p [ u ] [ j ] dp[u][j] dp[u][j] 为 u u u 节点 染 j j j 个为黑色最大效益。易得 ∑ j 0 m i n ( k , s z [ u ] ) ∑ l 0 m i n ( s z [ v ] , l ) d p [ u ] [ j ] m a x ( d p [ u ] [ j ] , d p [ u ] [ j − l ] d p [ v ] [ l ] v a l \sum\limits_{j0}^{min(k,sz[u])} \sum\limits_{l0}^{min(sz[v],l)}dp[u][j] max(dp[u][j], dp[u][j-l]dp[v][l]val j0∑min(k,sz[u])​l0∑min(sz[v],l)​dp[u][j]max(dp[u][j],dp[u][j−l]dp[v][l]val 。 v a l val val 即是很常见的计算贡献的思想。考虑一条边把树分成两部分树 A A A 树 B B B 树 B B B 选择 l l l 个点染黑色那么另外 k − l k - l k−l 个黑色节点即在树 A A A那么这条边就会被计算 l × ( k − l ) l \times (k-l) l×(k−l) 次贡献即为 l × ( k − l ) × w l\times(k-l)\times w l×(k−l)×w 。树 B B B 的另外 s z [ B ] − l sz[B]-l sz[B]−l 个节点即为白色那么另外 n − k − ( s z [ B ] − l ) n-k-(sz[B]-l) n−k−(sz[B]−l) 个白色节点即在树 A A A 所以该边白色贡献为 ( s z [ B ] − l ) × ( n − k − ( s z [ B ] − l ) ) ∗ w (sz[B] - l) \times (n - k - (sz[B] - l)) * w (sz[B]−l)×(n−k−(sz[B]−l))∗w 。同样倒序枚举 j j j 。 #include bits/stdc.husing ll long long;int main() {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);int n, k;std::cin n k;std::vectorstd::tupleint, ll, int e((n 1) 1);std::vectorint head(n 1);int cnt 0;auto add [](int u, int v, ll w) {e[cnt] {v, w, head[u]}, head[u] cnt;};for (int i 1; i n; i) {int u, v;ll w;std::cin u v w;add(u, v, w);add(v, u, w);}std::vectorstd::vectorll dp(n 1, std::vectorll(k 1, -1));std::vectorint sz(n 1);std::functionvoid(int, int) dfs [](int u, int f) {sz[u] 1;dp[u][0] dp[u][1] 0;for (int i head[u]; i;) {auto [v, w, nxt] e[i];if (v xor f) {dfs(v, u);sz[u] sz[v];for (int j std::min(k, sz[u]); j 0; --j) {for (int l 0; l std::min(sz[v], k); l) {if (dp[u][j - l] not_eq -1 and j l) {ll val 1ll * l * (k - l) * w 1ll * (sz[v] - l) * (n - k - (sz[v] - l)) * w;dp[u][j] std::max(dp[u][j], dp[u][j - l] dp[v][l] val);}}}}i nxt;}};dfs(1, 0);std::cout dp[1][k];return 0; }
http://www.pierceye.com/news/212073/

相关文章:

  • 如何在搜索引擎做网站企业咨询公司名字大全
  • 贵金属网站模板阿里云建设网站的流程
  • 维护一个网站要多少钱个人网页设计的主要内容和要求
  • 西安网站优化推广方案新网站做百度百科
  • 网站外链建设到底该怎么做flash网站案例
  • 成都私人网站制作卓越网站建设的优点
  • 做网站下载别人的图算不算侵权源码之家免费
  • 宁夏住房城乡建设厅网站应用网站建设
  • 宾馆网站建设网站建设管理规范
  • 内部网站建设的步骤过程选择邯郸做网站
  • 国外免费外贸网站dw网页制作教程个人网站
  • 西安建设局网站地址室内设计效果图一套方案
  • php 建网站电子商务网站建设项目规划书
  • 常熟建设局网站代理办营业执照的公司
  • 济南网站关键词优化公司如何制作网站赚钱
  • 长春旅游网站开发360投放广告怎么收费
  • 微信公众号做网站卖东西静态化网站的缺点
  • 网站空间购买今天的新闻头条最新消息
  • 网站制作教程图解怎么解压wordpress
  • 唐山市城市建设规划局网站腾讯云建设一个网站要多少钱
  • 邢台集团网站建设费用聚牛建设网站
  • 如何创建电子商务网站学校网站设计首页
  • 扬州建设投资集团网站世界总人口实时数据
  • 沧州制作网站食品商务网-网站建设
  • 0592 网站建设模板网站建设+百度
  • 请人做个网站多少钱免费商城app
  • 网站建设包括哪些方面?手游源码网站
  • 机关门户网站建设管理情况软件开发工具都有哪些
  • 官方网站建设专家磐石网络wordpress对应的id
  • 学生自做网站优秀作品徐州企业建站模板