Sequence POJ - 2442

如果行号影响了复制,请点击代码框左上角的按钮。

Sequence POJ - 2442

口胡一个结论:就是前i行产生的最小的n个和,一定可以在"前i-1行产生的最小n个和,每一个加上这一行的任意一个数,产生的n2个数"中找到。(其实显然是对的)

因此每次只需要求两个有n个数的序列每个序列中选一个产生的所有和中最小n个。方法就是先将两个序列排序,这之后去模拟一个一个取出和的过程。如果第一个序列取的已经确定,那么第二个序列一定是按顺序取。因此枚举第一个序列中取某一个,对于第一个序列中取某一个的情况维护当前已经取到的第二个序列中的序号。用优先队列维护最小的和,每次取出一个放进当前答案的数组,并将该和对应的第一个序列取法对应的第二个序列的序号加一并放回优先队列。

复制代码
 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<queue>
 5 using namespace std;
 6 typedef int LL;
 7 typedef pair<LL,LL> P;
 8 typedef pair<LL,P> P2;
 9 priority_queue<P2,vector<P2>,greater<P2> > qq;
10 LL a[105][2005];
11 LL t[2005];
12 LL T,sum,m,n;
13 int main()
14 {
15     P2 x;
16     LL i,j;
17     scanf("%d",&T);
18     while(T--)
19     {
20         memset(a,0,sizeof(a));
21         memset(t,0,sizeof(t));
22         scanf("%d%d",&m,&n);
23         for(i=1;i<=m;i++)
24         {
25             for(j=1;j<=n;j++)
26                 scanf("%d",&a[i][j]);
27             sort(a[i]+1,a[i]+n+1);
28         }
29         for(i=2;i<=m;i++)
30         {
31             while(!qq.empty())    qq.pop();
32             for(j=1;j<=n;j++)
33                 qq.push(P2(a[i-1][j]+a[i][1],P(j,1)));
34             for(j=1;j<=n;j++)
35             {
36                 x=qq.top();
37                 qq.pop();
38                 t[j]=x.first;
39                 qq.push(P2(a[i-1][x.second.first]+a[i][x.second.second+1],P(x.second.first,x.second.second+1)));
40             }
41             memcpy(a[i],t,sizeof(t));
42         }
43         for(i=1;i<=n;i++)
44             printf("%d ",a[m][i]);
45         puts("");
46     }
47     return 0;
48 }
复制代码
posted @   hehe_54321  阅读(227)  评论(0编辑  收藏  举报
编辑推荐:
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 《HelloGitHub》第 106 期
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
AmazingCounters.com
点击右上角即可分享
微信分享提示