题目限制
时间限制 内存限制 评测方式 题目来源
1000ms 131072KiB 标准比较器 Local
题目描述
学校实行学分制。每门的必修课都有固定的学分,同时还必须获得相应的选修课程学分。学校开设了N(N<300)门的选修课程,每个学生可选课程的数量M是给定的。学生选修了这M门课并考核通过就能获得相应的学分。   在选修课程中,有些课程可以直接选修,有些课程需要一定的基础知识,必须在选了其它的一些课程的基础上才能选修。例如《Frontpage》必须在选修了《Windows操作基础》之后才能选修。我们称《Windows操作基础》是《Frontpage》的先修课。每门课的直接先修课最多只有一门。两门课也可能存在相同的先修课。每门课都有一个课号,依次为1,2,3,…。 例如: 表中1是2的先修课,2是3、4的先修课。如果要选3,那么1和2都一定已被选修过。   你的任务是为自己确定一个选课方案,使得你能得到的学分最多,并且必须满足先修课优先的原则。假定课程之间不存在时间上的冲突。 输入格式
输入文件的第一行包括两个整数N、M(中间用一个空格隔开)其中1≤N≤300,1≤M≤N。
以下N行每行代表一门课。课号依次为1,2,…,N。每行有两个数(用一个空格隔开),第一个数为这门课先修课的课号(若不存在先修课则该项为0),第二个数为这门课的学分。学分是不超过10的正整数。 输出格式
输出文件只有一个数,实际所选课程的学分总数。 样例数据
输入样例 #1 输出样例 #1
7 4
2 2
0 1
0 4
2 1
7 1
7 6
2 2
13

树上的分组背包。

容积:m

对于一个节点x,物品组数为其子节点个数,每组物品有[0,m-1]的体积,对应每个体积vi的价值为f[son[x][i],vi]

就解决了“分配”课程的问题


#include<iostream>
#include<cstdio> using namespace std; const int MAXN=500; int n,m;
int f[MAXN][MAXN];
int val[MAXN]; struct Edge{
int next,to;
}e[MAXN];
int ecnt,head[MAXN];
inline void add(int x,int y){
e[++ecnt].next = head[x];
e[ecnt].to = y;
head[x] = ecnt;
}
int ind[MAXN]; int dfs(int x){
int sum=0;
for(int i=head[x];i;i=e[i].next){
int v=e[i].to;
int t=dfs(v);
sum+=t+1;
for(int j=sum;j>=0;j--){
for(int k=j;k>=0;k--){
f[x][j]=max(f[x][j],f[x][j-k]+f[v][k]);
}
}
}
if(x) for(int i=m;i>=1;i--) f[x][i]=f[x][i-1]+val[x];
return sum;
} int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
int x;
cin>>x>>val[i];
add(x,i);
}
dfs(0);
cout<<f[0][m]<<endl; }

最新文章

  1. MySQL性能分析及explain的使用
  2. Django模板系统——过滤器
  3. Android中应用程序清除data/data,清除cache,超详细
  4. Freemarker遍历map
  5. detection reading
  6. 从DNS配置
  7. linux 安装 easygui
  8. spring来了-02-HelloWorld
  9. 循环语句for
  10. java去除重复的字符串和移除不想要的字符串
  11. sublime text3设置文件类型(CR/LF)
  12. 8天玩转并行开发——第八天 用VS性能向导解剖你的程序
  13. Docker学习笔记 - Docker容器内部署redis
  14. Vue入门笔记(二)--基础部分之条件渲染
  15. Python第6天
  16. 使用Docker for Windows初体验
  17. IIS7.0提示“请求筛选模块被配置为拒绝包含双重转义序列的请求”处理办法
  18. Eclipse markers窗口使用
  19. centos7 apache设置伪静态 开启rewrite_module
  20. ms sql server读取xml文件存储过程-sp_xml_preparedocument

热门文章

  1. 06_传智播客iOS视频教程_源文件后缀名和main函数
  2. C# 多边形面积计算公式
  3. 【WIP】Swift4 异常处理, JSON处理
  4. VirtualBox搭建1主2从虚拟机
  5. 使用python计算softmax函数
  6. virtualenv杂记
  7. magento controller直接渲染Block 以及传参
  8. AngularJs调用NET MVC 控制器中的函数进行后台操作
  9. Resources.getSystem() 与 getResources()区别
  10. Spring Mvc相关随笔