[poj 1947]树dp+背包问题
2024-09-04 18:10:50
题目链接:http://poj.org/problem?id=1947
看了很多题解都是直接一遍dfs就搞定的方法,但是我实在是没看懂那个转移方程。最后在茫茫博客中终于发现了一个有逻辑的方法,但是复杂度好像要高一些,但是还是把这个题过了。http://www.chongchonggou.com/g_91242661.html
#include<cstdio>
#include<vector>
#include<cstring>
using namespace std; const int maxn=;
vector<int> G[maxn]; const int INF=0x3f3f3f3f;
int dp[][maxn];
int f[maxn][maxn];
int res[maxn][maxn]; void dfs(int u,int fa)
{
if (G[u].size()==)
{
f[u][]=f[u][]=;
if (fa==-) res[u][]=res[u][]=;
else res[u][]=res[u][]=;
}
else
{
for (int i=;i<G[u].size();i++)
{
int v=G[u][i];
dfs(v,u);
}
memset(dp,INF,sizeof(dp));
dp[][]=;
for (int i=;i<=G[u].size();i++)
{
for (int j=;j<=;j++)
{
dp[i&][j]=INF;
for (int k=;k<=j;k++)
{
dp[i&][j]=min(dp[i&][j],dp[i&^][j-k]+f[G[u][i-]][k]+(k==));
}
}
}
f[u][]=;
if (fa==-) res[u][]=;
else res[u][]=;
for (int i=;i<=;i++) f[u][i]=dp[G[u].size()&][i-];
for (int i=;i<=;i++) res[u][i]=f[u][i]+(fa!=-);
}
} int main()
{
memset(f,INF,sizeof(f));
memset(res,INF,sizeof(res));
int n,P;
scanf("%d%d",&n,&P);
for (int i=;i<n;i++)
{
int u,v;
scanf("%d%d",&u,&v);
G[u].push_back(v);
}
dfs(,-);
int ans=INF;
for (int i=;i<=n;i++) ans=min(ans,res[i][P]);
printf("%d\n",ans);
return ;
}
最新文章
- Warning: Using a password on the command line interface can be insecure.解决办法
- 攻城狮在路上(叁)Linux(零)--- 软件环境、参考书目等一览表
- spi_flash
- SQL 2012 镜像 图解(解决1418)
- js button onclick动作赋值操作
- Mac下safari、chrome打开开发者工具快捷键
- [VS2012]无法新建或者编译已有的项目
- static关键字修饰类
- FAL[client]: Failed to request gap sequence GAP - thread 1 sequence 29-29
- Hadoop学习历程(五、真正的分布式系统搭建)
- 1298 The Hardest Problem Ever
- python与redis交互
- No mapping found for HTTP request with URI [/user/login.do] in DispatcherServlet with name &#39;dispatcher&#39;错误
- ionic 3 热更新 Hot Code Push
- SQL SERVER LINUX
- [转帖]xserver相关知识汇总
- BBWebImage 设计思路
- NodeJs笔记 : express框架创建工程 ----- 路由设计
- vue element-ui 用checkebox 来模拟选值 1/0
- TClientDataSet[9]: 计算字段和 State
热门文章
- PublicCMS 网站漏洞 任意文件写入并可提权服务器权限
- Java+Selenium3自动化测试框架设计系列--href=";javascript:void(0)";如何获得元素定位
- 在amazon linux上安装Jenkins
- 6 wireshark 安装使用 数据包抓取
- VINS紧耦合优化公式及代码解析
- SpringCloud项目,接口调用返回http 500 - Internal Server Error的错误
- Messy Code in Windows Server 2008 R2 English Edition
- 什么鬼,又不知道怎么命名class了
- CSP201412-1:门禁系统
- 在阿里云上遇见更好的Oracle(四)