小明の魔法计划——最长上升子序列
2017-07-24 22:02
183 查看
Think:
1知识点:最长上升子序列
2反思:知识体系需要加深拓展
SDUT题目链接
小明の魔法计划
Time Limit: 1000MS Memory Limit: 65536KB
Problem Description
在一个遥远的数学魔法国度,小明在学习一个魔法,这个魔法需要一些施法材料,所幸的是施法材料已经准备好了,下一步就是建立魔法阵了,每一个施法材料都有一个特性值,表示为一个大于1小于10 ^ 7的整数,当且仅当一个材料的特性值是另一个材料的特性值的倍数的时候,他们才可以建立法力连接。比如说,一个特性值为6和一个特性值为9的施法材料是不可以建立法力连接的,而一个特性值为9和一个特性值为18的材料是可以建立法力连接的,值得注意的是法力连接是双向的。一个稳定的魔法阵要求属于这个法阵的材料之间不存在任何两个不直接连接的施法材料,比如说由(1,3,9)组成的魔法阵是稳定的,而(3,6,9)组成的魔法阵是不稳定的,因为值为6和值为9的材料无法建立连接。一个魔法阵的威力定义为这个法阵需要的材料的个数。
现在小明已经收集到了一些材料,他想要知道在知道他收集的材料的特性值的前提下,能建立的最大威力的魔法阵的消耗材料的数量是多少。
Input
首先一个整数T,代表数据组数(T<=80)
对于每一组数据,第一行是一个整数n,代表小明收集的施法材料的数量(1 < = n < = 1000)
接下来一行一个有n个数,以空格隔开,分别代表n个施法材料的特性值,每个数1 < = a < = 10 ^ 7
具体见样例
Output
每组数据输出一行一个整数,代表最大威力的魔法阵的需要的材料的个数
Example Input
2
5
1 2 4 8 16
8
12 24 1 2 4 8 72 16
Example Output
5
6
Hint
魔法阵不一定是矩阵,施法材料可以随意摆放。
Author
QAsQ
以下为Accepted代码
SDUT_1299_最长上升子序列
最长上升子序列
Time Limit: 3000MS Memory Limit: 65536KB
Problem Description
一个数的序列bi,当b1 < b2 < … < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, …, aN),我们可以得到一些上升的子序列(ai1, ai2, …, aiK),这里1<= i1 < i2 < … < iK <= N。比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。这些子序列中最长的长度是4,比如子序列(1, 3, 5, 8)。
你的任务,就是对于给定的序列,求出最长上升子序列的长度。
Input
输入的第一行是序列的长度N (1 <= N <= 1000)。第二行给出序列中的N个整数,这些整数的取值范围都在0到10000。
Output
最长上升子序列的长度。
Example Input
7
1 7 3 5 9 4 8
Example Output
4
Hint
Author
Northeastern Europe 2002
以下为Accepted代码
1知识点:最长上升子序列
2反思:知识体系需要加深拓展
SDUT题目链接
小明の魔法计划
Time Limit: 1000MS Memory Limit: 65536KB
Problem Description
在一个遥远的数学魔法国度,小明在学习一个魔法,这个魔法需要一些施法材料,所幸的是施法材料已经准备好了,下一步就是建立魔法阵了,每一个施法材料都有一个特性值,表示为一个大于1小于10 ^ 7的整数,当且仅当一个材料的特性值是另一个材料的特性值的倍数的时候,他们才可以建立法力连接。比如说,一个特性值为6和一个特性值为9的施法材料是不可以建立法力连接的,而一个特性值为9和一个特性值为18的材料是可以建立法力连接的,值得注意的是法力连接是双向的。一个稳定的魔法阵要求属于这个法阵的材料之间不存在任何两个不直接连接的施法材料,比如说由(1,3,9)组成的魔法阵是稳定的,而(3,6,9)组成的魔法阵是不稳定的,因为值为6和值为9的材料无法建立连接。一个魔法阵的威力定义为这个法阵需要的材料的个数。
现在小明已经收集到了一些材料,他想要知道在知道他收集的材料的特性值的前提下,能建立的最大威力的魔法阵的消耗材料的数量是多少。
Input
首先一个整数T,代表数据组数(T<=80)
对于每一组数据,第一行是一个整数n,代表小明收集的施法材料的数量(1 < = n < = 1000)
接下来一行一个有n个数,以空格隔开,分别代表n个施法材料的特性值,每个数1 < = a < = 10 ^ 7
具体见样例
Output
每组数据输出一行一个整数,代表最大威力的魔法阵的需要的材料的个数
Example Input
2
5
1 2 4 8 16
8
12 24 1 2 4 8 72 16
Example Output
5
6
Hint
魔法阵不一定是矩阵,施法材料可以随意摆放。
Author
QAsQ
以下为Accepted代码
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int N = 1014; int a , b ; int main(){ int T, n, i, j, ans; scanf("%d", &T); while(T--){ scanf("%d", &n); for(i = 0; i < n; i++) scanf("%d", &a[i]); sort(a, a+n); memset(b, 0, sizeof(b)); ans = 0; for(i = 0; i < n; i++){ int mav = 0; for(j = 0; j < i; j++){ if(a[i]%a[j] == 0 && b[j] > mav) mav = b[j]; } b[i] = mav+1; ans = max(ans, b[i]); } printf("%d\n", ans); } return 0; } /*************************************************** User name: Result: Accepted Take time: 116ms Take Memory: 180KB Submit time: 2017-07-24 21:48:06 ****************************************************/
SDUT_1299_最长上升子序列
最长上升子序列
Time Limit: 3000MS Memory Limit: 65536KB
Problem Description
一个数的序列bi,当b1 < b2 < … < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, …, aN),我们可以得到一些上升的子序列(ai1, ai2, …, aiK),这里1<= i1 < i2 < … < iK <= N。比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。这些子序列中最长的长度是4,比如子序列(1, 3, 5, 8)。
你的任务,就是对于给定的序列,求出最长上升子序列的长度。
Input
输入的第一行是序列的长度N (1 <= N <= 1000)。第二行给出序列中的N个整数,这些整数的取值范围都在0到10000。
Output
最长上升子序列的长度。
Example Input
7
1 7 3 5 9 4 8
Example Output
4
Hint
Author
Northeastern Europe 2002
以下为Accepted代码
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int N = 1014; int a , b ; int main(){ int n, i, j, ans; while(~scanf("%d", &n)){ for(i = 0; i < n; i++) scanf("%d", &a[i]); memset(b, 0, sizeof(b)); ans = 0; for(i = 0; i < n; i++){ int mav = 0; for(j = 0; j < i; j++){ if(a[j] < a[i] && b[j] > mav) mav = b[j]; } b[i] = mav + 1; ans = max(ans, b[i]); } printf("%d\n", ans); } return 0; } /*************************************************** User name: Result: Accepted Take time: 0ms Take Memory: 196KB Submit time: 2017-07-24 22:01:14 ****************************************************/
相关文章推荐
- HDU-4521 小明系列问题——小明序列 间隔限制最长上升子序列
- hdu 5421 小明系列问题——小明序列(LIS最长上升子序列)
- 小明系列问题——小明序列 (线段树优化的最长上升子序列)
- 小明の魔法计划(最长倍数子序列)
- hdu4521 小明系列问题——小明序列 线段树 间隔大于d的最长上升子序列
- LIS(即最长上升子序列)
- 最长上升子序列
- ACdream 1216Beautiful People(二重最长上升子序列)
- 最长上升子序列LIS O(nlgn)算法
- 最长上升子序列
- 最长上升子序列问题
- hdoj1160最长上升子序列
- BestCoder Round #84 1002 hdu 5748 最长上升子序列
- 最长严格上升子序列O(nlogn)算法
- UVa 10534 - Wavio Sequence (简单DP 最长上升下降子序列)
- hdu5773(2016多校第四场,最长上升子序列n*logn变形)
- 【转载】动态规划--最长上升子序列(LIS)
- 最长不上升子序列
- 最长公共上升子序列
- 最长公共上升子序列算法