首页 > 其他分享 >K. GCD of Set

K. GCD of Set

时间:2025-01-19 19:35:51浏览次数:1  
标签:Set GCD int sum 1000005 cin maxn ans

  • 贪心。猜测最优方案一定可以满足至多只有一个集合的大小不为1
点击查看代码
#include <bits/stdc++.h>
using namespace std;
int a[1000005];
int cnt[1000005];
vector<int>c[1000005];
vector<long long>s[1000005];
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	int T;
	cin>>T;
	while(T--)
	{
		int n,k;
		cin>>n>>k;
		int maxn=0;
		long long sum=0,ans=0;
		for(int i=1;i<=n;i++)
		{
			cin>>a[i];	
			cnt[a[i]]++;
			maxn=max(maxn,a[i]);
			sum+=a[i];
		}
		for(int i=1;i<=maxn;i++)
		{
			for(int j=i;j<=maxn;j+=i)
			{
				for(int k=1;k<=cnt[j];k++)
				{
					c[i].push_back(j);
					if(s[i].empty())
					{
						s[i].push_back(j);
					}
					else
					{
						s[i].push_back(s[i].back()+j);
					}
				}
			}
		}
		for(int i=1;i<=maxn;i++)
		{
			if(c[i].size()&&c[i].size()+k-1>=n)
			{
				ans=max(ans,sum-s[i][n-k]+i);
			}
		}
		cout<<ans<<"\n";
		for(int i=1;i<=maxn;i++)
		{
			c[i].clear();
			s[i].clear();
			cnt[i]=0;
		}
	} 
	return 0;
}

标签:Set,GCD,int,sum,1000005,cin,maxn,ans
From: https://www.cnblogs.com/watersail/p/18679812

相关文章

  • 让你手写一个reset的文件,你应该怎么写?要考虑哪些方面呢?
    在前端开发中,一个reset文件通常指的是一个CSS重置文件,其目的是消除浏览器默认样式的不一致性,从而提供一个更一致的起点来构建项目的样式。下面是一个简单的示例,展示了如何手写一个CSS重置文件,并考虑了几个方面:/*reset.css*//*1.移除边距*/body,h1,h2,h3,h4,h5......
  • MESED: A Multi-modal Entity Set Expansion Dataset with Fine-grained Semantic Cla
    MESED:AMulti-modalEntitySetExpansionDatasetwithFine-grainedSemanticClassesandHardNegativeEntities译文论文题目:MESED:AMulti-modalEntitySetExpansionDatasetwithFine-grainedSemanticClassesandHardNegativeEntities论文链接:https://ar......
  • exgcd(扩展欧几里得算法)
    当我们要求解ax+by=c时,注意到x和y应该是一个解集,c是a的x倍加上b的y倍的和,假设gcd(a,b)==d,那么,c也应该是d的整数倍,即d|c.那么根据这,我们可以想到在思考ax+by=c的解集前,我们可以先思考ax+by=d的解集,注意到等式右边缩小了c/d倍,假设原解集为x1,y1,现解集为x2,y2,那么将x2,y2扩大c/......
  • 将IDEA的setter代码模板改成链式setter
    setter传统模式UserInfouserInfo=newUserInfo();userInfo.setUserId("zhangsan");userInfo.setUserName("张三");userInfo.setAge(18);每一行都需要分号来隔断,影响编码效率。链式setterUserInfouserInfo=newUserInfo().setUserId("zhangsan").setUserNam......
  • settimer的坑
    现象说明某监控程序,想要实现间隔3秒做一些事情,间隔1分钟做一些事情,但是实测的时候发现只有最后一个定时器有执行。代码如下,代码层面上还做了些许重构,将定时器部分进行封装,本意是方便添加定时任务:#include<stdio.h>#include<stdlib.h>#include<signal.h>#include<time.h>......
  • 你不知道的javascript-14(Symbol,map,set)
    1.Symbol(生成唯一标识符)Symbol是JavaScript中的一种基本数据类型,它表示唯一的、不可变的值。以下是关于Symbol的详细说明:constsym1=Symbol();constsym2=Symbol("description");使用Symbol()函数可以创建一个新的Symbol。每个Symbol都是唯一的,即使它们的......
  • C-猪猪养成计划1(set)
    题目链接:https://ac.nowcoder.com/acm/contest/99785/C题意:给定一个数组,操作q次,分别为标记和查询思路:将每一个数组值放入集合set中,消除掉已经遍历过的数组值,通过set二分来加速区间遍历注意:集合本身就存在二分函数lower_bound,通过.lower_bound()调用set的erase操作分为......
  • 请说明 Vue 3 中的 setup() 函数的作用及其用法
    深入理解Vue3中的setup()函数在Vue3中,性能和可维护性得到了显著提升,其中最引人注目的变化之一就是引入了CompositionAPI,而setup()函数则是这一API的核心部分。本文将深入探讨setup()函数的作用及其用法,帮助您理解如何在Vue3中更高效地组织和管理组件逻......
  • Top Down 2D Dojo Chip Set
     以下是对这款2D微型像素关卡芯片集的简洁介绍:这是一款基于8x8像素网格的2D微型像素关卡芯片集,采用经典的像素风格。它包含66个.png格式的芯片,涵盖多种墙壁和门的变体,非常适合用于快速搭建游戏原型的道场关卡。利用这些丰富的像素资源,可以轻松创建出风格独特的格斗......
  • Flutter跨插件访问assets资源
    1.现在常常以插件话和组件化开发移动端,我们在使用原生访问flutter的Assets资源时常常可以这样写valflutterAssetStream=assetManager.open("flutter_assets/assets/my_flutter_asset.png")但是如果是跨插件的话可能就不行了,比如一个主项目可能引入了好几个问呢-----》使用......