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

校园网上超市网站建设推广360公司官网首页

校园网上超市网站建设推广,360公司官网首页,关于网站备案前置审批的相关说明 吉林,东莞做网站排名优化推广P1273 有线电视网 - 洛谷 算法讲解079【必备】树型dp-下_哔哩哔哩_bilibili 正常的树形dp, 对于dp[i][j]表示对于节点i, j个用户净赚钱的最大值, dp[i][j]由子节点转移过来, 遍历每个i的子节点v时, 每个子节点v都更新一次dp[i][j], 每次更新O(m * m) 时间复杂度不行 利用dfn序…

P1273 有线电视网 - 洛谷

算法讲解079【必备】树型dp-下_哔哩哔哩_bilibili

正常的树形dp, 对于dp[i][j]表示对于节点i, j个用户净赚钱的最大值, dp[i][j]由子节点转移过来, 遍历每个i的子节点v时, 每个子节点v都更新一次dp[i][j], 每次更新O(m * m) 时间复杂度不行

利用dfn序的话, 从dfn序号从小到大开始遍历, 对于每个点i, i点选或者不选有,   dp[i][j] = max(dp[i - size(i)][j], dp[i - 1][j - 1]) 

为什么可以这么做: 常规做法 点i从第一个子节点转移过来时, dp[i]只能从dp[i][0]转移过来, 但是当从i的第二个叶子节点来更新i时, dp[i]的所有第二维都会有值, 更新需要O(m * m)时间, dfn序的写法, 点i只从点i - 1(dfn序中的序号)和i - size(i)更新而来, 而且这两个互相不影响

代码

#include<bits/stdc++.h>
using namespace std;
using i64 = long long;struct info {int to, w;
};void solve(){int n, m;cin >> n >> m;vector<int> dfn(n + 1), size(n + 1);vector<vector<info>> edge(n + 1);vector<vector<int>> dp(n + 1, vector<int>(m + 1, -1e9));vector<int> cost(n + 1);int idx = 1;for(int i = 1; i <= n - m; i++) {int k;cin >> k;while(k--) {int a, c;cin >> a >> c;edge[i].push_back({a, -c});cost[a] += -c;}}for(int i = n - m + 1; i <= n; i++) {int x;cin >> x;cost[i] += x;}dp[0][0] = 0;auto dfs = [&] (auto self,int x, int p) -> void {for(auto [to, w] : edge[x]) {if(to == p) continue;self(self, to, x);size[x] += size[to];}size[x] ++;dfn[x] = idx++;dp[dfn[x]][0] = 0;for(int i = 1; i <= m; i++) {if(x <= n - m) {dp[dfn[x]][i] = max(dp[dfn[x] - 1][i] + cost[x], dp[dfn[x] - size[x]][i]);} else {dp[dfn[x]][i] = max(dp[dfn[x] - 1][i - 1] + cost[x], dp[dfn[x] - size[x]][i]);}}};dfs(dfs, 1, 0);int ans = 0;for(int i = 0; i <= m; i++) {if(dp[dfn[1]][i] >= 0) ans = max(ans, i);// cout << dp[dfn[1]][i] << '\n';}cout << ans;}int main(){std::ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);int T = 1;//cin >> T;while(T--) solve();return 0;
}

http://www.dtcms.com/wzjs/155869.html

相关文章:

  • 展示网站和营销网站的区别b站推广
  • h5制作网站开发汉中网站seo
  • 彩票推广网站如何做希爱力跟万艾可哪个猛
  • 网站开发学什么比较有优势网络营销课程作业
  • 高端定制外贸网站全网关键词搜索
  • 建设工程许可证在那个网站办台州seo服务
  • 网站搜索框用ps怎么做bt兔子磁力天堂
  • 一般可以在哪些网站做推广百度百科官网登录
  • 成都企业门户网站建设免费刷赞网站推广免费
  • 商城网站建设服务seo研究中心怎么样
  • 柳市外贸网站建设厦门seo招聘
  • 展示型网站设计方案百度首页广告多少钱
  • 做网站赌博代理没有盈利违法吗竞价推广托管开户
  • 广西南宁做网站怎么申请一个网站
  • 优秀的企业网站设计百度站内搜索的方法
  • 公司网站建设有哪些正规教育培训机构
  • 东莞手机微信网站百度搜索排名靠前
  • 男子替人做赌博网站百度平台客服人工电话
  • b2b免费发布信息网站推广竞价托管公司
  • php做彩票网站网站优化方式有哪些
  • 中国军事世界排名百度网站排名优化价格
  • 营口做网站公司企业宣传视频
  • 北京高端网站建设咸阳苏州网络公司
  • 如何创建一个网站链接百度知道一下首页
  • 自助建站系统是怎么实现知名品牌营销策划案例
  • 怎么在网站中做弹窗广告搜狗登录入口
  • 怎么代码放到网站上软文推广多少钱
  • seo快速优化软件网站博客seo教程
  • 邯郸专业网站建设公司保定百度首页优化
  • 专业做家具的网站天津网站优化软件