求调!一直RE!
查看原帖
求调!一直RE!
353967
baoyangawa楼主2023/12/1 16:47

已经交了近一页了,除了UKE就是RE,实在没办法了,求助大佬!!

//#pragma GCC optimize(2)
//#pragma GCC optimize(3)
//#pragma GCC optimize("Ofast","inline")
#include<bits/stdc++.h>
#define fr(a) freopen(a,"r",stdin)
#define fw(a) freopen(a,"w",stdout)
using namespace std;
typedef int ll;
const int N=1010;
struct node{
	ll v,nxt;
}edge[2*N];
ll n,m;
ll tv[N],tot,val[N],qwq;
string guo[N];
vector <string> son[N];
ll head[N],cnt,dp[N][N],sze[N];
bool b[N];
map <string,ll> mp;
ll to_ll(string s){
	ll ans=0;
	for(int i=0;i<s.length();i++) ans=ans*10+s[i]-'0';
	return ans;
}
ll add(ll u,ll v){
	edge[++cnt]=(node){v,head[u]};
	head[u]=cnt;
}
ll dfs(ll now,ll fa){//dp[i][j]表示以i为根的子树中,当然i不选,能买通j个国家的最小代价
	dp[now][0]=0;
	for(int i=head[now];i;i=edge[i].nxt){
		ll vv=edge[i].v;
		if(vv==fa) continue;
		dfs(vv,now);
		sze[now]+=sze[vv];
		for(int j=n;j>=0;j--){
			for(int k=0;k<=j;k++){
				dp[now][j]=min(dp[now][j],dp[now][j-k]+dp[vv][k]);
			}
		}
	}
	sze[now]++;
	if(now){
		dp[now][sze[now]]=min(dp[now][sze[now]],val[now]);
//		printf("now:%lld j:%d dp:%lld val:%lld\n",now,j,dp[now][j],val[now]);
	}
}
int main(){
	stringstream is;
	string tmp;
	while(getline(cin,tmp)&&tmp[0]!='#'){
		
		qwq=tot=cnt=0;memset(tv,0,sizeof tv),memset(val,0,sizeof val);
		memset(b,0,sizeof b);
		memset(dp,0x3f,sizeof dp);memset(head,0,sizeof head);
		memset(sze,0,sizeof sze);
		memset(son,0,sizeof son);
		is.clear();is.str(tmp);
		is>>n>>m;
		for(int i=1;i<=n;i++){
			string awa;ll k=0;
			getline(cin,tmp);
			is.clear();is.str(tmp);
			while(is>>awa){
				k++;
				if(k==1) guo[i]=awa;
				else if(k==2) tv[i]=to_ll(awa);
				else son[i].push_back(awa);
			}
			mp[guo[i]]=i;
		}
		for(int i=1;i<=n;i++){
			ll u=i,v;
			for(int j=0;j<son[i].size();j++){
				v=mp[son[i][j]];
				b[v]=1;
				add(u,v),add(v,u);
			}
			val[u]=tv[i];
		}
		for(int i=1;i<=n;i++){
			if(!b[i]){
				add(0,i),add(i,0);
			}
		}
		dfs(0,-1);
		ll ans=0x3f3f3f3f;
		for(int i=m;i<=n;i++){
			ans=min(ans,dp[0][i]);
		}
		printf("%d\n",ans);
	}
	return 0;
}
2023/12/1 16:47
加载中...