首页 > 其他分享 >P2014 [CTSC1997] 选课

P2014 [CTSC1997] 选课

时间:2023-03-12 19:57:20浏览次数:51  
标签:ch const CTSC1997 选课 P2014 int define

P2014 [CTSC1997] 选课 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

这题的技巧:把这些没有父亲节点的点,把他们的父亲节点令为0,则可从多课树变成一棵树。

细节:由于0点是必须取的,所以m要加1

其他便是正常的背包树形dp

Code:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mp make_pair
#define pb push_back   
#define popb pop_back  
#define fi first
#define se second
const int N=310;
//const int M=;
//const int inf=0x3f3f3f3f;     
//const ll INF=0x3ffffffffffff;
int T,n,m,a[N],dp[N][N];
vector<int> g[N];
inline int read()
{
    int x=0,f=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
    return x*f;
}
void dfs(int x)
{
    dp[x][1]=a[x];
    for(auto v:g[x]) dfs(v);
    for(auto v:g[x])
        for(int j=m;j;j--)
            for(int k=0;k<j;k++)
                dp[x][j]=max(dp[x][j],dp[x][j-k]+dp[v][k]);
}
int main()
{
//    freopen("","r",stdin);
//    freopen("","w",stdout);
    n=read(),m=read();
    m++;
    for(int i=1;i<=n;i++)
    {
        int u=read();
        a[i]=read();
        g[u].pb(i);
    }
    dfs(0);
    printf("%d",dp[0][m]);
    return 0;
}

 

标签:ch,const,CTSC1997,选课,P2014,int,define
From: https://www.cnblogs.com/Willette/p/17208901.html

相关文章

  • 选课系统二次修改
      在csdn上发现了一篇高校选课系统的设计,其流程图如上。缺点:教师只能查询信息与录入成绩,没有修改课程信息、辞退学生等的能力。改进后如下:  ......
  • 选课寄
    2月20号周一并不知道第二天才开放选课申请,适逢jwfw炸了,很是着急;结果大群说次日10:00才开放,于是干着急。2月21号周二拿着早就写好的说辞去打选课申请,却被告知第二个平型......
  • C/C++学生选课管理系统[2023-02-20]
    C/C++学生选课管理系统[2023-02-20]4.15学生选课管理系统题目描述:假定有n门课程,每门课程有课程编号,课程名称,课程性质(必须/选修),学时,授课学时,实验或上机学时,学分等信......
  • 【Vijos1180】选课
    problemsolutioncodes//vijos1180#include<iostream>#include<vector>usingnamespacestd;structEdge{intw;vector<int>to;}G[1010];intf[1010][1010];//dfs(x,y)......
  • 洛谷 P2014 选课 树形依赖背包
    题目描述在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习。现在有N门功......
  • Java+Swing实现学生选课管理系统 (1)
    @目录一、系统介绍二、系统展示1.课程查询2.课程添加3.退课三、系统实现四、获取源码一、系统介绍本系统实现了学生登录和管理员登录,学生实现选课,查看已选课程,修改密码,查......
  • Java+Swing+dat文件存储实现学生选课管理系统
    @目录一、系统介绍二、系统展示1.用户登陆、注册2.课程信息查询3.添加课程4.选课5.退课三、系统实现四、.获取源码一、系统介绍功能展示:用户注册、用户登陆课程管理:课程......
  • mysql:聊聊mysql学完之后心得,从哪里学,学哪些,怎么选课程,学到什么程度。
    mysql:聊聊mysql学完之后心得,从哪里学,学哪些,怎么选课程,学到什么程度。学习完一套课程之后习惯性总结一下。首先说一下,咕咕是跟着尚硅谷的康老师学习的mysql,大家想学习的话可......
  • P2014 选课 ( 树上背包 )
    先看树上背包的板子:假设我们的树长这样:那么其实我们就有个比较朴素的想法:对一个结点对它的儿子们进行背包dp比如对于1号点我们就可以对2号3号进行背包dp问题是4......
  • P1941 [NOIP2014 提高组] 飞扬的小鸟 题解
    WC-2023上的题目。线性动态规划P1941[NOIP2014提高组]飞扬的小鸟我们先不管障碍物。设\(f[i][j]\)表示来到点\((i,j)\)的最少点击屏幕数。因为每秒要不上升\(......