玄关
  • 板块灌水区
  • 楼主jager_8
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/4/25 13:37
  • 上次更新2024/4/25 18:05:42
查看原帖
玄关
875454
jager_8楼主2024/4/25 13:37

题目选课wa最后一个点是大数据

代码

#include<bits/stdc++.h>
using namespace std;
long long e[305][305],k[305],f[305][309];

int n,m;
void dfs(int u)
{
	
	for(int i=1;i<=e[u][0];i++)
	{
		int v=e[u][i];
		dfs(v);
		for(int l=m;l>0;l--)
		{
			for(int j=1;j<=m;j++)
			{
			
				if(f[u][l]&&f[v][j])
					f[u][l+j]=max(f[u][l+j],f[v][j]+f[u][l]);
				if(u==0)
				{
					f[u][l+j]=max(f[u][l+j],f[v][j]+f[u][l]);
				}
			}
		}
	}
}
void check()
{
	for(int i=0;i<=n;i++)
	{
		cout<<i<<':';
		for(int j=1;j<=m;j++)
		{
			cout<<f[i][j]<<' ';
		}
		cout<<endl;
	}
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		int s;
		cin>>s>>k[i];
		e[s][++e[s][0]]=i;
		f[i][1]=k[i];
	}
	m++;
	dfs(0);
	cout<<f[0][m];
	
	return 0;
}

数据

300 160 0 7 1 3 0 9 3 5 1 7 2 9 2 3 2 6 0 1 2 1 9 3 5 10 10 6 13 4 0 6 5 2 5 6 10 4 15 5 17 2 19 4 7 7 17 10 4 2 5 8 17 4 10 9 25 8 26 3 0 4 18 6 4 1 3 2 6 2 31 7 28 7 7 10 15 4 14 2 17 5 27 7 24 1 26 10 40 1 37 7 24 4 44 9 22 5 41 6 26 9 29 10 10 9 32 6 24 1 50 3 25 9 45 1 29 8 44 10 28 5 60 10 36 5 45 5 47 3 51 1 5 9 48 7 62 5 3 10 19 7 31 3 18 4 12 7 30 10 62 6 46 3 29 7 10 5 65 7 0 9 20 10 57 3 81 9 69 9 3 3 46 3 18 5 40 10 28 9 53 2 57 7 53 6 45 3 3 5 40 2 95 5 49 6 64 5 74 5 99 3 55 5 80 6 79 4 35 9 84 5 82 8 74 9 81 10 34 5 3 2 102 9 2 7 101 5 70 6 24 3 68 6 10 9 55 6 109 10 96 5 23 1 7 2 40 6 80 1 45 9 95 5 3 3 11 3 94 10 81 6 41 9 127 2 91 4 121 8 99 4 55 6 13 7 129 8 85 10 125 9 94 5 105 1 97 9 117 4 54 9 18 7 113 6 85 3 130 8 49 3 84 3 53 9 15 10 45 8 59 3 48 3 123 8 65 8 16 7 74 1 28 9 152 8 6 8 7 9 118 1 142 5 165 5 77 5 140 2 67 5 43 3 138 7 133 2 13 2 137 10 165 9 92 7 50 10 67 5 22 7 140 1 88 4 163 3 40 7 170 2 171 1 110 9 88 6 38 2 176 10 91 5 151 2 156 1 151 2 153 7 137 10 26 10 22 2 82 2 148 9 6 2 185 7 108 5 102 7 36 4 12 6 42 2 42 10 92 2 87 2 6 9 172 8 85 7 113 7 202 1 168 7 179 4 180 5 218 5 59 8 66 5 101 8 53 2 0 3 191 8 134 9 147 9 145 8 158 8 93 3 34 1 171 10 230 1 116 5 149 2 61 1 165 2 234 9 31 3 157 2 114 10 22 1 231 10 118 6 157 2 76 6 238 9 160 10 54 7 37 7 225 7 28 8 2 4 105 4 178 4 69 2 197 2 21 4 0 5 212 3 102 6 184 8 154 2 50 8 60 5 106 10 260 7 161 6 106 9 106 6 6 7 163 8 56 3 35 7 173 2 61 7 169 1 259 6 133 4 191 10 210 3 73 5 237 1 182 9 149 8 133 10 128 9 9 10 79 9 53 5 128 3 130 5 139 6 70 9 108 8 26 1 156 4 38 10 65 3 88 10

正确答案 1158

2024/4/25 13:37
加载中...