2026/1/11 4:33:15
网站建设
项目流程
网站首页设计报告,哪个网站可以做分销,聊城网站设计公司,洛阳霞光网络科技P2014 [CTSC1997] 选课
题目描述
在大学里每个学生#xff0c;为了达到一定的学分#xff0c;必须从很多课程里选择一些课程来学习#xff0c;在课程里有些课程必须在某些课程之前学习#xff0c;如高等数学总是在其它课程之前学习。现在有 NNN 门功课#xff0c;每门课有…P2014 [CTSC1997] 选课题目描述在大学里每个学生为了达到一定的学分必须从很多课程里选择一些课程来学习在课程里有些课程必须在某些课程之前学习如高等数学总是在其它课程之前学习。现在有NNN门功课每门课有若干学分分别记作s1,s2,⋯ ,sNs_1,s_2,\cdots,s_Ns1,s2,⋯,sN每门课有一门或没有直接先修课若课程aaa是课程bbb的先修课即只有学完了课程aaa才能学习课程bbb。一个学生要从这些课程里选择MMM门课程学习问他能获得的最大学分是多少题目保证课程安排无冲突。即不会有aaa是bbb的先修课bbb也是aaa的先修课这类情况存在。输入格式第一行有两个整数NNNMMM用空格隔开(1≤N≤300(1 \leq N \leq 300(1≤N≤300,1≤M≤300)1 \leq M \leq 300)1≤M≤300)。接下来的NNN行第i1i1i1行包含两个整数kik_iki和sis_isikik_iki表示第iii门课的直接先修课sis_isi表示第iii门课的学分。若ki0k_i0ki0表示没有直接先修课(0≤ki≤N(0 \leq {k_i} \leq N(0≤ki≤N,1≤si≤20)1 \leq {s_i} \leq 20)1≤si≤20)。数据保证至少存在一个ki0k_i0ki0即至少一门课无先修课。输出格式只有一行选MMM门课程的最大学分。输入输出样例 #1输入 #17 4 2 2 0 1 0 4 2 1 7 1 7 6 2 2输出 #113C实现#includeiostream#includecstdio#definemaxn1000usingnamespacestd;intn,m,f[maxn][maxn],head[maxn],cnt;structedge{intto,pre;}e[maxn];inlineintin(){charagetchar();while(a0||a9){agetchar();}intt0;while(a0a9){t(t1)(t3)a-0;agetchar();}returnt;}voidadd(intfrom,intto){e[cnt].prehead[from];e[cnt].toto;head[from]cnt;}voiddp(intnow){// f[now][0]0;for(intihead[now];i;ie[i].pre){intgoe[i].to;dp(go);for(intjm1;j1;j--){for(intk0;kj;k){f[now][j]max(f[now][j],f[go][k]f[now][j-k]);}}}}intmain(){nin(),min();for(inti1;in;i){intfain();f[i][1]in();add(fa,i);}dp(0);printf(%d\n,f[0][m1]);return0;}后续接下来我会不断用C来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现记录日常的编程生活、比赛心得感兴趣的请关注我后续将继续分享相关内容