大佬们看看哪里错了
  • 板块P1392 取数
  • 楼主ChenHacker
  • 当前回复11
  • 已保存回复11
  • 发布时间2018/8/12 15:46
  • 上次更新2025/1/14 09:41:05
查看原帖
大佬们看看哪里错了
92288
ChenHacker楼主2018/8/12 15:46
#include<bits/stdc++.h>
using namespace std;
priority_queue<int>w;
int m,n,k,a[805][805],gt[805],c[805],top;
int get(int i)
{
	return gt[n]-gt[i];
}
void search(int t,int s)
{
	for(int i=1;i<=m;i++)
	{
		s+=a[t][i];
		if(s+get(i)>w.top()) return;
		if(t==n) if(s<w.top()) w.pop(),w.push(s);else;
		else search(t+1,s);
		s-=a[t][i];
	}
}
int main()
{
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
			cin>>a[i][j];
		sort(a[i]+1,a[i]+1+m);
		gt[i]=gt[i-1]+a[i][1];
	}
	for(int i=1;i<=k;i++)
		w.push(INT_MAX);
	search(1,0);
	while(w.size()) c[++top]=w.top(),w.pop();
	for(int i=k;i>=1;i--)
		cout<<c[i]<<' ';
	return 0;
}

2018/8/12 15:46
加载中...