找回密码
 立即注册
首页 业界区 科技 2025/2/10课堂记录

2025/2/10课堂记录

薛小春 2025-6-9 19:53:24
目录


  • 选课
  • 叶子的染色
  • 数字转换


  • 选课
分组背包题
这次是自己写的代码了,也就瞟了标准答案几眼,真的就几眼
用的也是vector邻接表[code]#include#includeusing namespace std;vector zi[110];//zi[j]:i的第j个孩子 (j动态大小 int a[110],m,n,f[110][110];//f[j]:以i为根最多选j和节点,最大值 void maketree(int root){        for(int i=0;i=1;j--)                        for(int k=j;k>=1;k--)                                f[root][j]=max(f[root][j],f[root][j-k]+f[zi[root]][k]);        }        if(root!=0)                for(int i=m;i>=1;i--)                        f[root]=f[root][i-1]+a[root];}int main(){        cin>>m>>n;//m:待选,n:可选         for(int i=1;i>x>>y;                zi[x].push_back(i);//表示x的孩子再多一个i                 a=y;        }        maketree(0);        cout>n;        for(int i=1;i>c;        for(int i=1;i>x>>y;                add(x,y);                add(y,x);        }        dp(n+1,-1);//随便选一个不是叶子的节点都行,没有父亲为-1         cout
您需要登录后才可以回帖 登录 | 立即注册