首页 > 其他 > 详细

[2016-03-26][632][D][Longest Subsequence]

时间:2016-03-26 12:30:15      阅读:245      评论:0      收藏:0      [点我收藏+]
  • 时间:2016-03-26 11:38:31 星期六

  • 题目编号:[2016-03-26][632][D][Longest Subsequence]

  • 题目大意:给定n个数字,求最长子序列,使得它们的lcm最小公倍数小于m

  1. #include <cstdio>
  2. using namespace std;
  3. const int maxn = 1E6 + 10;
  4. int cnt[maxn];
  5. int a[maxn];
  6. int main(){
  7. int n,m;
  8. scanf("%d%d",&n,&m);
  9. for(int i = 0;i < n ; ++i){
  10. scanf("%d",&a[i]);
  11. if(a[i] <= m) ++cnt[a[i]];
  12. }
  13. for(int i = m; i >= 1;--i){
  14. for(int j = i * 2;j <= m ; j += i){
  15. cnt[j] += cnt[i];
  16. }
  17. }
  18. int kmax = cnt[1],l;
  19. for(int i = 1;i <= m ; ++i){
  20. if(kmax < cnt[i]){
  21. kmax = cnt[i];
  22. l = i;
  23. }
  24. }
  25. printf("%d %d\n",l,kmax);
  26. for(int i = 0;i < n;++i){
  27. if(l % a[i] == 0) printf("%d ",i + 1);
  28. }
  29. printf("\n");
  30. return 0;
  31. }




[2016-03-26][632][D][Longest Subsequence]

原文:http://www.cnblogs.com/qhy285571052/p/6dd5f56d1eaf566709fcba224e690539.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!