数据水,还是rp超范围了?????
查看原帖
数据水,还是rp超范围了?????
338632
robinyqc楼主2022/10/30 15:13

考场上以为这道题 bfs +划分 dp (我太菜了见谅)。最后直接摆烂不写了。就写了个把前四大的点加起来的程序。结果民间数据给出了个60分......

代码(文件操作已注释)

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=2500,M=1e4;
int n,m,k;bool vis[N];
ll a[N],s[N],dp[5][N][105],ans;
vector<int>e[N];
struct node{
	int u,fa,step;
	ll w;
	node(int u,int fa,int step,ll w):u(u),fa(fa),step(step),w(w){}
};
queue<node>q;
signed main(){
//	freopen("holiday.in","r",stdin);
//	freopen("holiday.out","w",stdout);
	scanf("%d%d%d",&n,&m,&k);
	for(int i=2;i<=n;i++)scanf("%lld",a+i);
	sort(a+1,a+1+n);
	for(int i=1,j=n;i<=4;i++,j--)ans+=a[j];
	cout<<ans<<endl;
//	for(int i=1;i<=m;i++){
//		int u,v;
//		scanf("%d%d",&u,&v);
//		e[u].push_back(v);
//		e[v].push_back(u);
//	}q.push(node(1,0,0,0));
//	while(!q.empty()){
//		int u=q.front().u,fa=q.front().fa;
//		int step=q.front().step;
//		ll w=q.front().w;q.pop();
//		if(step>2)continue;vis[u]=1;
//		s[u]=w;
//		for(int i=0,len=e[u].size();i<len;i++){
//			int v=e[u][i];
//			if(vis[v]){
//				ans=max(ans,w+s[v]);
//				s[v]=max(s[v],w);
//				continue;
//			}q.push(node(v,u,step+1,w+a[v]));
//		}
//	}cout<<ans<<endl;
	return 0;
}
2022/10/30 15:13
加载中...