80pts求调
  • 板块P1392 取数
  • 楼主Hugh_Yu
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/29 14:51
  • 上次更新2024/7/29 15:45:26
查看原帖
80pts求调
1042965
Hugh_Yu楼主2024/7/29 14:51
#include<bits/stdc++.h>
using namespace std;
int n,m,s,f[810][810];
priority_queue<int> q;
int main()
{
	cin>>n>>m>>s;
	for(int i=1;i<=n;i++) 
	{
		for(int j=1;j<=m;j++)
		{
			cin>>f[i][j];
		}
	}
	for(int i=1;i<=m;i++) sort(f[i]+1,f[i]+m+1);
	for(int i=1;i<=s;i++) q.push(f[1][i]);
	for(int i=2;i<=n;i++)
	{
		for(int j=s;j>=1;j--) f[i-1][j]=q.top(),q.pop();
		for(int j=1;j<=s;j++) for(int k=1;k<=s;k++)
			if((int)q.size()==s&&f[i-1][k]+f[i][j]>q.top()) break;
			else 
			{
				q.push(f[i-1][k]+f[i][j]);
				if((int)q.size()>s) q.pop();
			}
	}
	vector<int> ans;
	while(!q.empty()) ans.push_back(q.top()),q.pop();
	reverse(ans.begin(),ans.end());
	for(auto o:ans) printf("%d ",o);
	printf("\n");
	return 0;
}
2024/7/29 14:51
加载中...