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

P2515 [HAOI2010] 软件安装

~~~~~      P2515 [HAOI2010] 软件安装 ~~~~~      总题单链接

思路

~~~~~      发现构成的图是一个森林和一些环。

~~~~~      对于森林,建一个虚点然后树形 D P DP DP 即可。

~~~~~      对于环,发现要么把这个环上的每一个点都选了,要么每一个都不选。所以可以先缩点。

~~~~~      缩点后跑树形 d p dp dp 就行了。

代码

#include<bits/stdc++.h>
#define ll long long
#define fir first
#define sec second
using namespace std;ll n,m,v[505],w[505];
ll dfn[505],low[505],tot;
ll scc[505],din[505],cnt;
ll stk[505],ins[505],top;
vector<ll>eg[505],ng[505];
ll scw[505],scv[505],dp[505][505];void Tarjan(ll p){dfn[p]=low[p]=++tot;stk[++top]=p;ins[p]=1;for(ll v:eg[p]){if(!dfn[v]){Tarjan(v);low[p]=min(low[p],low[v]);}else if(ins[v])low[p]=min(low[p],dfn[v]);}if(low[p]==dfn[p]){cnt++;while(1){ll z=stk[top--];ins[z]=0;scc[z]=cnt;scv[cnt]+=v[z];scw[cnt]+=w[z];if(z==p)break;}}
}void dfs_dp(ll p){if(scv[p]<=m)dp[p][scv[p]]=scw[p];for(ll v:ng[p]){dfs_dp(v);for(ll i=m;i>=scv[p];i--)for(ll j=m;j>=0;j--)if(i+j<=m)dp[p][i+j]=max(dp[p][i+j],dp[p][i]+dp[v][j]);}
}signed main(){ios::sync_with_stdio(false);cin>>n>>m;for(ll i=1;i<=n;i++)cin>>v[i];for(ll i=1;i<=n;i++)cin>>w[i];for(ll i=1;i<=n;i++){ll f;cin>>f;eg[f].push_back(i);}for(ll i=1;i<=n;i++)if(!dfn[i])Tarjan(i);for(ll u=1;u<=n;u++)for(ll v:eg[u]){if(scc[u]==scc[v])continue;ng[scc[u]].push_back(scc[v]);din[scc[v]]++;}for(ll i=1;i<=cnt;i++)if(!din[i])ng[0].push_back(i);memset(dp,-0x3f,sizeof(dp));dfs_dp(0);ll ans=0;for(ll i=0;i<=m;i++)ans=max(ans,dp[scc[0]][i]);cout<<ans;return 0;
}
http://www.lryc.cn/news/437408.html

相关文章:

  • 51单片机快速入门之定时器和计数器
  • 【计算机网络 - 基础问题】每日 3 题(一)
  • Unity全面取消Runtime费用 安装游戏不再收版费
  • IDEA测试类启动报 “java: 常量字符串过长” 解决办法
  • 计算机科学基础 -- 访存单元
  • Linux压缩、解压缩、查看压缩内容详解使用(tar、gzip、bzip2、xz、jar、war、aar)
  • StreamReader 和 StreamWriter提供自动处理字符编码的功能
  • Gitlab备份、迁移、恢复和升级(Gitlab Backup, migration, recovery, and upgrade)
  • MySQL:INSERT command denied to user
  • 【Android安全】Ubuntu 16.04安装GDB和GEF
  • ISO 21434与网络安全管理系统(CSMS)的协同作用
  • Vue 67 vuex 四个map方法的使用
  • Unity自带脚本之GameObject脚本
  • 软件测试面试题-自测
  • 深度学习-神经网络
  • Redis - 集群篇 - 集群模式
  • Robot Operating System——线速度和角速度
  • 量化投资策略_因子打分选股的案例实现
  • 架构师知识梳理(七):软件工程-工程管理与开发模型
  • bp的模块被隐藏了
  • C++学习笔记(21)
  • Ubuntu系统入门指南:常用命令详解
  • keep-alive缓存不了iframe
  • Gradio快速部署构建AIGC的web应用 ,python
  • 《职教论坛》
  • JZ2440开发板——S3C2440的时钟体系
  • [数据集][目标检测]男女性别检测数据集VOC+YOLO格式9769张2类别
  • static 初始化报错
  • 3D Gaussian Splatting 论文学习
  • MySQL 安全机制全面解析