POJ 2442 Sequence(堆的使用练习)】的更多相关文章

题目地址:id=2442">POJ 2442 真心没想到这题的思路. .原来是从第一行逐步向下加,每次都仅仅保存前n小的数.顺便练习了下堆.. 只是感觉堆的这样的使用方法用的不太多啊.. 又是手残. . 把j写成了i,于是就改啊改..改的跟题解上的差点儿一样了= = !. . 代码例如以下: #include <iostream> #include <cstdio> #include <string> #include <cstring> #…
题目描述 给定m个序列,每个序列包含n个非负整数.现在我们可以从每个序列中选择一个数字以形成一个具有m个整数的序列.显然,我们可以得到n ^ m种这种序列.然后,我们可以计算每个序列中的数字总和,并获得n ^ m个值.我们需要的是最小的n个和.你可以帮我们吗? 题目大意:给定M个长度为N的序列,从每个序列中任意取一个数求和,可以构成N的M次方个和,求其中最小的N个和. 输入格式 第一行是整数T,它显示测试用例的数量,然后是T个测试用例.每种情况的第一行都包含两个整数m,n(0 <m <= 10…
2442 -- Sequence 真郁闷,明明方法是对的,为什么我的代码老是那么的慢._(:з」∠)_ 这题要想考虑两列的情况,然后逐列拓展. 代码如下: #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <queue> using namespace std; ; const int Q = N * N; template…
题目链接:http://poj.org/problem?id=2442 Time Limit: 6000MS Memory Limit: 65536K Description Given m sequences, each contains n non-negative integer. Now we may select one number from each sequence to form a sequence with m integers. It's clear that we ma…
题目链接:http://poj.org/problem?id=2442 题目大意:给出一个m*n的矩阵,从每一行中取出一个数相加.能得到n^m个不同的结果.要求输出当中前n项. 建立一个以n元数组为底层数组的堆,在这里,利用stl中的make_heap,pop_heap.push_heap等函数解决. 1.将第一组数据输入arr1数组.升序排序. 2.将接下来的数据输入到arr2数组中.而且heap[i]=arr1[0]+arr2[0...n-1].make_heap(heap,heap+n).…
Pro. 1 给定k个有序表,取其中前n小的数字.组成一个新表,求该表? 算法: 由于  a1[1] < a1[2] < a1[3] ... <a1[n] a2[1] < a2[2] < a2[3] ... < a2[n] ......... ak[1] < ak[2]<ak[3]...... < ak[n] 首先每个有序表的第一个元素入堆,然后最小元素出堆.该元素入新表L,相应线性表的下一个元素入堆. 例如:如果出堆得是a2[2],那么a2[3]入堆…
题目:http://poj.org/problem?id=2442 题意:给你n*m的矩阵,然后每行取一个元素,组成一个包含n个元素的序列,一共有n^m种序列, 让你求出序列和最小的前n个序列的序列和. 又是一个机智的题 #include <iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<stack> #include<queue> #in…
题目: http://poj.org/problem?id=2442 #include <stdio.h> #include <string.h> #include <queue> #include <algorithm> using namespace std; priority_queue<int>q; ][]; int main() { int t, n, m; scanf("%d", &t); while(t-…
Sequence POJ - 2442 口胡一个结论:就是前i行产生的最小的n个和,一定可以在"前i-1行产生的最小n个和,每一个加上这一行的任意一个数,产生的n2个数"中找到.(其实显然是对的) 因此每次只需要求两个有n个数的序列每个序列中选一个产生的所有和中最小n个.方法就是先将两个序列排序,这之后去模拟一个一个取出和的过程.如果第一个序列取的已经确定,那么第二个序列一定是按顺序取.因此枚举第一个序列中取某一个,对于第一个序列中取某一个的情况维护当前已经取到的第二个序列中的序号.用…
[POJ 3581]Sequence 标签: 后缀数组 题目链接 题意 给你一串序列\(A_i\),保证对于$ \forall i \in [2,n],都有A_1 >A_i$. 现在需要把这个序列分成三段,并且将这三段分别翻转,求如何翻转使整个序列字典序最小.(每一段不能为空) 题解 首先可以确定第一段的位置. 注意到,\(A_1\)是最大的,所以我们就只用考虑怎样找到一个前缀使其翻转后的字典序最小. (假如不是的话,就可能找到两个前缀翻转之后,一个为另一个的前缀,无法解决) 这等价于翻转之后找…