奋战杭电ACM(DAY9)1011

2024-06-17 08:32
文章标签 day9 杭电 acm 1011 奋战

本文主要是介绍奋战杭电ACM(DAY9)1011,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

开学了,用电脑时间越来越少,军校一大麻烦,班长还特别贱,心情极度不好。发火直接发题,尽量写注释。

Starship Troopers

#include<iostream>
using namespace std;const int MAXN=110;
int N,M;struct Node
{int number,p;//p:该结点的possible;number:该结点的bug数
};
Node node[MAXN];//记录结点 int dp[MAXN][MAXN];//DP,dp[i][j]表示跟结点为i时,用掉j个士兵获得的最大值 
int adj[MAXN][MAXN];//存树 。adj[i][j]:结点为i,adj[i][0]表示该结点所连接的结点(父结点和子结点一共)个数//adj[i][j](j>=1)表示结点编号,j=结点个数+1
bool vis[MAXN];//访问标记 int max(int a, int b)
{return a>b ? a:b;
}void dfs(int root)//DFS,求该结点及其分支所能获得的最大possible
{vis[root]=true;//已经访问 int num=(node[root].number+19)/20;//获得该结点需要的士兵数目 for(int i=num;i<=M;i++)  dp[root][i]=node[root].p;//用掉i个士兵获得的possiblefor(i=1;i<=adj[root][0];i++){int u=adj[root][i];if(vis[u]) continue;//跳过已访问的,包括该结点的父节点和子结点dfs(u);//求该子结点的最大possiblefor(int j=M;j>=num;j--){for(int k=1;j+k<=M;k++)//剩余的士兵{if(dp[u][k])//该子结点的最大possibledp[root][j+k]=max(dp[root][j+k],dp[root][j]+dp[u][k]);//j+k:父节点和子结点共用了士兵数目//dp[root][j+k]父结点和前i-1个子结点中所获possible的最大值//dp[root][j]+dp[u][k]父结点和当前子结点u一共所获possible//用来找出所有子结点里能得到的最大possible//即该父结点能得到的最大possible}    }    }    
}  int main()
{int b,e;while(cin >> N >> M){if(N==-1&&M==-1) break;memset(vis,false,sizeof(vis));memset(dp,0,sizeof(dp));memset(adj,0,sizeof(adj));for(int i=1;i<=N;i++)cin >> node[i].number >>node[i].p;for(i=1;i<N;i++)//存图 {cin >> b >> e;//连接结点b和eadj[b][0]++;adj[b][adj[b][0]]=e;adj[e][0]++;adj[e][adj[e][0]]=b;}if(M==0)//这个必需要,有代价为0的房间,M=0则无法获得 cout << 0 << endl;else{dfs(1);cout << dp[1][M] << endl;}    } return 0;   
}     


这篇关于奋战杭电ACM(DAY9)1011的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1068947

相关文章

【会议征稿,ACM出版】2024年图像处理、智能控制与计算机工程国际学术会议(IPICE 2024,8月9-11)

2024年图像处理、智能控制与计算机工程国际学术会议(IPICE 2024)将于2024年8月9-11日在中国福州举行。本届会议由阳光学院、福建省空间信息感知与智能处理重点实验室、空间数据挖掘与应用福建省高校工程研究中心联合主办。 会议主要围绕图像处理、智能控制与计算机工程等研究领域展开,旨在为从事计算机等相关研究的专家学者提供一个交流科研成果和前沿技术的平台,了解学术发展趋势,拓宽研究思路

杭电 2044 一只小蜜蜂...

http://acm.hdu.edu.cn/showproblem.php?pid=2044 f[1]表示相差一时的路线数 #include<stdio.h>int main(){int n,a,b,i;__int64 f[50];scanf("%d",&n);f[1] = 1;f[2] = 2;for(i = 3;i < 50;i++)f[i] = f[i-1]+f[i-2]; wh

杭电ACM hdu 2110 Crisis of HDU 解题报告(母函数)

Problem Description 话说上回讲到HDU大战东洋小苟,结果自然是中方大胜,这一战也使得海东集团在全球同行业中的地位更加巩固。随着集团的发展,很多创业时期的元老逐步功成身退,先是8600移民海外,然后是linle夫妇退隐山林,逐渐的,最初众多的元老只剩下XHD夫妇和Wiskey三人了。 到了2020年,因为扩张过度加上老鼠数量逐年减少,公司的发展遇到了前所未有的危机,此时集团已经

杭电ACM hdu 2082 找单词 解题报告(母函数)

Problem Description 假设有x1个字母A, x2个字母B,..... x26个字母Z,同时假设字母A的价值为1,字母B的价值为2,..... 字母Z的价值为26。那么,对于给定的字母,可以找到多少价值<=50的单词呢?单词的价值就是组成一个单词的所有字母的价值之和,比如,单词ACM的价值是1+3+14=18,单词HDU的价值是8+4+21=33。(组成的单词与排列顺序无关,比如

杭电ACM hdu 2079 选课时间 解题报告(母函数)

Problem Description 又到了选课的时间了,xhd看着选课表发呆,为了想让下一学期好过点,他想知道学n个学分共有多少组合。你来帮帮他吧。(xhd认为一样学分的课没区别)   Input 输入数据的第一行是一个数据T,表示有T组数据。 每组数据的第一行是两个整数n(1 <= n <= 40),k(1 <= k <= 8)。 接着有k行,每行有两个整数a(1 <= a <= 8),b

杭电ACM 2018

http://acm.hdu.edu.cn/showproblem.php?pid=2018 首先得抽象出问题的数学公式! #include <iostream>using namespace std;int main(void){ //f1:活了1年的小牛//f2:活了2年的小牛//f3:活了3年的小牛//f :老牛int f1, f2, f3, f;int m;cin

杭电ACM 2015 偶数求和

偶数求和 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 26480 Accepted Submission(s): 11486 Problem Description 有一个长度为n(n<=100)的数列,该数列定义为从2开

选课时间 杭电ACM Java

选课时间(题目已修改,注意读题 Problem Description 又到了选课的时间了,xhd看着选课表发呆,为了想让下一学期好过点,他想知道学n个学分共有多少组合。你来帮帮他吧。(xhd认为一样学分的课没区别) Input 输入数据的第一行是一个数据T,表示有T组数据。 每组数据的第一行是两个整数n(1 <= n <= 40),k(1 <= k <=

【ACM出版】2024人工智能与自然语言处理国际学术会议(AINLP 2024,7月19-21)

2024人工智能与自然语言处理国际学术会议(AINLP 2024)将于2024年7月19-21日在中国·珠海召开,该会议作为第四届人工智能、自动化与高性能计算国际会议(AIAHPC 2024)分会场召开。 本次会议主要围绕“人工智能与自然语言处理”的最新研究展开,旨在荟聚世界各地该领域的专家、学者、研究人员及相关从业人员,分享研究成果,探索热点问题,交流新的经验和技术。 1. 会议官方