首页 > 其他分享 >完备子集的最大元素和

完备子集的最大元素和

时间:2023-09-24 23:12:21浏览次数:30  
标签:完备 int 元素 完全 子集 long

给你一个下标从 1 开始、由 n 个整数组成的数组。
如果一组数字中每对元素下标的乘积都是一个完全平方数,则称这组数字是一个完全集 。
返回下标集 {1, 2, ..., n} 的 完全子集所能取到的最大元素和

1. 数学方法

这里选择从下而上,类似质数筛的方式进行枚举满足条件的完备集合
思考完全集合具备怎么样的性质,相互乘积都是完全平方数,那他们除以相同的公因数后,得到的集合同样是完备集
懒得证明了,直接枚举基本完备子集[1,4,9,16..]的倍数

class Solution {
public:
    long long maximumSum(vector<int> &nums) {
        long long ans = 0;
        int n = nums.size();
        for (int i = 1; i <= n; i++) {
            long long sum = 0;
            for (int j = 1; i * j * j <= n; j++) {
                sum += nums[i * j * j - 1]; // -1 是因为数组下标从 0 开始
            }
            ans = max(ans, sum);
        }
        return ans;
    }
};

标签:完备,int,元素,完全,子集,long
From: https://www.cnblogs.com/929code/p/17726914.html

相关文章

  • 从一个golang 员工emp数组中,找到其中name相同的元素,把结果放到一个新数组里,代码实现
    内容来自对chatgpt的咨询为了找到具有相同名称的员工,并将结果放入一个新的数组中,我们可以首先使用一个映射(map)来存储每个名称及其出现的次数。然后,我们可以遍历原始数组并使用映射来判断是否有重复的名称。以下是一个示例代码,演示如何实现这一目标:packagemainimport( ......
  • Opencv 中 Mat中元素的值读取方法总结
    1、利用at函数读取(1)单通道图像读取方式Matimg1=imread(filename,IMREAD_GRAYSCALE);for(size_tnrow=0;nrow<img1.rows;nrow++){for(size_tncol=0;ncol<img1.cols;ncol++){ucharval=mat_CV_8UC1.at<uchar......
  • 217. 存在重复元素
    给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。示例1:输入:nums=[1,2,3,1]输出:true示例2:输入:nums=[1,2,3,4]输出:false示例 3:输入:nums=[1,1,1,3,3,4,3,2,4,2]输出:true第一个想到的是用hash表,有冲突......
  • 【Java 基础篇】Java HashSet 集合详解:高效存储唯一元素的利器
    Java中的集合框架提供了各种各样的数据结构,用于存储和操作数据。其中,HashSet是一种常用的集合类,它实现了Set接口,用于存储不重复的元素。本篇博客将详细介绍HashSet的基本概念、创建和初始化、基本操作、遍历、性能考虑、使用注意事项以及示例代码。无论您是初学者还是有经验......
  • 【Java 基础篇】Java LinkedHashSet 详解:有序唯一元素存储的完美选择
    Java中的集合框架提供了多种数据结构,用于存储和操作数据。LinkedHashSet是其中的一个特殊类型,它结合了哈希表和链表的特性,适用于需要保持元素插入顺序并确保唯一性的情况。本篇博客将详细介绍LinkedHashSet,包括它的概念、特性、使用方法以及示例代码,旨在帮助初学者更好地理解和......
  • c语言双指针法--原地删除数组中的元素
     27.移除元素-力扣(LeetCode) intremoveElement(int*nums,intnumsSize,intval){intleft=0;intright=0;while(right<numsSize){if(nums[right]!=val){nums[left]=nums[right];left++;}......
  • css伪元素的应用(超实用的图标库)
    知识储备伪元素:伪元素是一个附加至选择器末的关键词,允许你对被选择元素的特定部分修改样式。伪元素主要有:::first-letter第一个字母的样式::first-line首行文字的样式::before元素头部添加的修饰::after元素尾部添加的修饰::placeholderinput的占位符样式::selection被选中......
  • 什么是定位元素
    在CSS中,定位是将元素摆放在特定位置的一种方法。元素的定位属性包括static,relative,fixed,absolute和sticky。Static定位:这是HTML元素的默认定位属性。它按照正常的文档流来布局。即元素在页面中的位置是由其在HTML文档中的位置决定的。Relative定位:如果为元素......
  • 【枚举】【贪心技巧】【集训队互测2021】子集匹配
    题目描述给定\(n,k(2k\geqn)\),二进制中有\(k\)个\(1\)的不超过\(n\)位的数有\(\binom{n}{k}\)个,有\(k-1\)个\(1\)的有\(\binomn{k-1}\)个,后者显然大于等于前者,要求对于每一个\(k\)个\(1\)的数\(x\),都找出一个\(k-1\)位的数\(y\)与之对应,且\(x......
  • 直接Remove集合中的元素会导致"集合已修改"的错误
    varF_JNXM_CFSplitEntry=DataEntity["F_JNXM_CFSplitEntry"]asDynamicObjectCollection;//拆单明细varmatchEntrys=F_JNXM_CFSplitEntry.Where(p=>p["F_JNXM_MaterialCategory"].GetStringJNXM().Contains("五金"));//过滤五金分录行......