Gravatar
yrtiop
积分:2053
提交:304 / 803
STO Chenyao神犇 QAQ

Gravatar
Benjamin
积分:1054
提交:405 / 658
好题

Gravatar
胡嘉兴
积分:1935
提交:554 / 1668
妈耶,还要手动开栈

Gravatar
HZOI_蒟蒻一只
积分:1519
提交:319 / 790
回复 @Lovelove_boii :
你确定那是边么……

Gravatar
Lovelove_boii
积分:494
提交:166 / 428
如果一张图包含n个节点,n-1条边,且满足为一棵树,那它的任意一条边连接的两个节点不能为同一节点,且不能被连接过,但我发现数据中有许多边都连接了自己和自己,如79 79,11 11这样的数据,求解释

Gravatar
CSU_Turkey
积分:1723
提交:614 / 1589
去年的坑可算填完了...
有个小问题为什么本地测试第6个点往后都会e掉

Gravatar
Shirry
积分:2262
提交:554 / 1107
写到哭

Gravatar
wumingshi
积分:664
提交:163 / 318
终于把去年的坑填完了。。。

Gravatar
~玖湫~
积分:916
提交:251 / 418
这么神的题才两星半 = =
好骚 = =

Gravatar
Hzoi_QTY
积分:1008
提交:282 / 627
今年联赛要是来一道这样的。。。我就。。

Gravatar
天亮说晚安·
积分:940
提交:239 / 833
T2...

Gravatar
test
积分:1080
提交:380 / 1216
#include<bits/stdc++.h>
#define N 3010
using namespace std;
struct ed{int nxt,to;}e[N];
int head[N],tot,w[N],n,rt,dp[N][N],k;
void add(int u,int v){e[tot].nxt=head[u];e[tot].to=v;head[u]=tot++;}
void DP(int u,int cnt){if(!cnt)return;
for(int i=head[u];i!=-1;i=e[i].nxt){
int v=e[i].to;
for(int j=1;j<=cnt;++j)dp[v][j]=dp[u][j];DP(v,cnt-1);
for(int j=cnt;j>=1;j--)dp[u][j]=max(dp[u][j],dp[v][j-1]+w[v]);
}
}
int main(){
freopen("knapsack.in","r",stdin);
freopen("knapsack.out","w",stdout);
memset(head,-1,sizeof(head));cin>>n>>k;int zz;
for(int i=1;i<=n;++i){
cin>>zz;if(zz)add(zz,i);
else rt=i;
}for(int i=1;i<=n;++i)cin>>w[i];DP(rt,k);
cout<<dp[rt][k-1]+w[rt];
return 0;
}

Gravatar
Rapiz
积分:1619
提交:386 / 700
写到怀疑人生

Gravatar
真呆菌
积分:1102
提交:273 / 486
回复 @Hzoi_AntiLeaf : 233 人生已经如此的艰难 老年选手最后的装13机会都不给么(关爱老龄选手

Gravatar
AntiLeaf
积分:3393
提交:1527 / 4369
回复 @真呆菌 :
orz 学长您别装B了

Gravatar
Cydiater
积分:1063
提交:220 / 783
人傻自带大常数

Gravatar
Drench
积分:720
提交:173 / 389
写暴力用了9k 正解用了2k。。。

Gravatar
FoolMike
积分:5200
提交:1165 / 2240
表示只会树剖做

Gravatar
真呆菌
积分:1102
提交:273 / 486
还好noip考得早 摸鱼摸到个奖

Gravatar
cstdio
积分:4755
提交:1198 / 2108
@Fmuckss
@Chenyao2333
名垂青史!