HDU 1011 Starship Troopers 树形+背包dp
http://acm.hdu.edu.cn/showproblem.php?pid=1011
- for(int k=m;k>=bu[x];k--){
- for(int j=;j+k<=m;j++){//注意这个地方从1开始
- f[x][k+j]=max(f[x][k+j],f[x][k]+f[y][j]);
- }
- }
j从1开始循环完美避免了不给下面的路分配人却得到brain值的事情发生,然后就可以ac了。。。
但是并没有ac。。为什么呢。。。因为我,没有把写好的清空数据函数放到主程序里。。。
- #include<cstdio>
- #include<cstring>
- #include<iostream>
- #include<algorithm>
- #include<cmath>
- using namespace std;
- const int maxn=;
- const double eps=1e-;
- const int modn=;
- int n,m;
- struct nod{
- int next,y;
- }e[maxn*];
- int bu[maxn]={},bra[maxn]={},head[maxn]={},tot=;
- bool vis[maxn]={};
- int f[maxn][maxn]={};
- void init(int x,int y){
- e[++tot].y=y;
- e[tot].next=head[x];
- head[x]=tot;
- }
- void dfs(int x){
- vis[x]=;
- int y;
- for(int i=bu[x];i<=m;i++){
- f[x][i]=bra[x];
- }
- for(int i=head[x];i;i=e[i].next){
- y=e[i].y;
- if(!vis[y]){
- dfs(y);
- for(int k=m;k>=bu[x];k--){
- for(int j=;j+k<=m;j++){
- f[x][k+j]=max(f[x][k+j],f[x][k]+f[y][j]);
- }
- }
- }
- }
- }
- void yu(){
- tot=;memset(f,,sizeof(f));
- memset(head,,sizeof(head));
- memset(vis,,sizeof(vis));
- }
- int main(){
- for(;;){
- yu();
- scanf("%d%d",&n,&m);
- if(n==-||m==-){
- break;
- }
- for(int i=;i<=n;i++){
- scanf("%d%d",&bu[i],&bra[i]);
- bu[i]=(bu[i]+)/;
- }
- int x,y;
- for(int i=;i<n;i++){
- scanf("%d%d",&x,&y);
- init(x,y);init(y,x);
- }
- if(m==){
- printf("0\n");
- continue;
- }
- dfs();
- printf("%d\n",f[][m]);
- }
- return ;
- }
HDU 1011 Starship Troopers 树形+背包dp的更多相关文章
- hdu 1011 Starship Troopers 树形背包dp
Starship Troopers Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- hdu 1011 Starship Troopers(树形背包)
Starship Troopers Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- hdu 1011 Starship Troopers(树形DP入门)
Starship Troopers Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- hdu 1011 Starship Troopers(树上背包)
Problem Description You, the leader of Starship Troopers, are sent to destroy a base of the bugs. Th ...
- [HDU 1011] Starship Troopers (树形dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1011 dp[u][i]为以u为根节点的,花了不超过i元钱能够得到的最大价值 因为题目里说要访问子节点必 ...
- HDU 1011 Starship Troopers 树形DP 有坑点
本来是一道很水的树形DP题 设dp[i][j]表示,带着j个人去攻打以节点i为根的子树的最大收益 结果wa了一整晚 原因: 坑点1: 即使这个节点里面没有守卫,你如果想获得这个节点的收益,你还是必须派 ...
- HDU 1011 Starship Troopers【树形DP/有依赖的01背包】
You, the leader of Starship Troopers, are sent to destroy a base of the bugs. The base is built unde ...
- hdu 1011(Starship Troopers,树形dp)
Starship Troopers Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- hdu 1011 Starship Troopers 经典的树形DP ****
Starship Troopers Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
随机推荐
- CodeForces - 1004C
Since Sonya is interested in robotics too, she decided to construct robots that will read and recogn ...
- 绿色的宠物店cms后台管理系统模板——后台
链接:http://pan.baidu.com/s/1c7qmsA 密码:2es8
- 某线下赛AWD
拿别人比赛的来玩一下,或许这就是菜的力量吧. 0x01 任意文件读取: switch ($row['media_type']) { case 0: // 图片广告 ...... break; case ...
- 64_p6
polkit-kde-5.10.1-1.fc26.x86_64.rpm 12-Jun-2017 13:45 84854 polkit-libs-0.113-8.fc26.i686.rpm 13-Apr ...
- MySQL创建相同表和数据命令
创建和表departments结构和数据一样的表departments_t mysql> create table departments_t like departments; Query O ...
- 135.Candy---贪心
题目链接 题目大意:分糖果,每个小朋友都有一个ratings值,且每个小朋友至少都要有一个糖果,而且每个小朋友的ratings值如果比左右邻舍的小朋友的ratings值高,则其糖果数量也比邻舍的小朋友 ...
- 设计模式之笔记--职责链模式(Chain of Responsibility)
职责链模式(Chain of Responsibility) 定义 职责链模式(Chain of Responsibility),使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系 ...
- Python抽象类和接口类
一.抽象类和接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名) ...
- linux系统cpu使用100%的命令
for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc -l)`; do dd if=/dev/zero of=/d ...
- Vue.js——60分钟快速入门(转)
var vm = new Vue({ el: '#app', data: { people: [{ name: 'Jack', age: 30, sex: 'Male' }, { name: 'Bil ...