首页 > 其他分享 >G2 - Magic Triples (Hard Version)

G2 - Magic Triples (Hard Version)

时间:2023-04-28 20:57:57浏览次数:51  
标签:maxx Triples int LL Hard Version ma const define

题解:值域分治,降低时间复杂度到 n*1000+map
代码1:

点击查看代码
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<int,int> PLL;
#define IOS cin.tie(nullptr)->sync_with_stdio(false);
#define se second
#define fi first
#define mem(a,b) memset(a,b,sizeof a);
#define pri priority_queue<int,vector<int>,greater<int> >
#define low(a,b,c) lower_bound(a,a+b,c)-a;
#define upp(a,b,c) upper_bound(a,a+b,c)-a;
const int N=1e6+7;
const  LL M=1e9;
vector<int > factor[N];
void init(){
    for(int i = 2; i < N; i ++){
        for(int j = i; j <= N; j += i){
            factor[j].push_back(i);
        }
    }
}
LL a[N];
struct node
{
	int x,y;
}e[N];
int b[N];
bool cam(node x,node y)
{
	return x.y>y.y;
}

void solve()
{
	int n,d;
	cin>>n;
	int maxx=0;
	map<LL,LL> ma;
	for(int i=1;i<=n;i++)
	{
		cin>>d;
	//	maxx=max(maxx,d);
		ma[d]++;
	}
	
	LL ans=0; 
	for(auto w:ma)
	{
		LL j=w.fi;
		LL i=w.se;
		if(i>=3)
		{
			ans+=i*(i-1)*(i-2);
		}
		if(j<=1e6)
		{
			if(j*j<=M&&j!=1)
			{
				if(ma.count(j*j))
				{
					ans+=i*ma[j*j]*ma[1];
				}
			}
			for(int k=2;k*k<=j;k++)
			{
				if(j%k!=0) continue;
				LL kk=j/k; 
				if(ma.count(j*k)&&ma.count(j*k))
				{
					ans+=i*ma[j/k]*ma[j*k];
				}
				if(kk!=k)
				{
					if(ma.count(j*kk)&&ma.count(j*kk))
					{
						ans+=i*ma[j/kk]*ma[j*kk];
					}
				}
			}
		}
		else
		for(LL k=2;k*j<=M;k++)//min(j,1ll*32000)
		{
			if(j%k!=0) continue;
			if(ma.find(j/k)==ma.end()) continue;
			if(ma.find(j*k)==ma.end()) continue;
			 ans+=i*ma[j/k]*ma[j*k];
		}
	}
	cout<<ans<<"\n";
}
int main()
{
//	init();
	IOS; 
	int t=1;
	cin>>t;
	while(t--)
	{
		solve();
	}
	return 0;
}


代码2: 没代码一快,预处理需要处理到1e6,时间更长.

点击查看代码
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<int,int> PLL;
#define IOS cin.tie(nullptr)->sync_with_stdio(false);
#define se second
#define fi first
#define mem(a,b) memset(a,b,sizeof a);
#define pri priority_queue<int,vector<int>,greater<int> >
#define low(a,b,c) lower_bound(a,a+b,c)-a;
#define upp(a,b,c) upper_bound(a,a+b,c)-a;
const int N=1e6+7;
const  LL M=1e9;
vector<int > factor[N];
void init(){
    for(int i = 2; i < N; i ++){
        for(int j = i; j <= N; j += i){
            factor[j].push_back(i);
        }
    }
}
LL a[N];
struct node
{
	int x,y;
}e[N];
int b[N];
bool cam(node x,node y)
{
	return x.y>y.y;
}

void solve()
{
	int n,d;
	cin>>n;
	int maxx=0;
	map<LL,LL> ma;
	for(int i=1;i<=n;i++)
	{
		cin>>d;
	//	maxx=max(maxx,d);
		ma[d]++;
	}
	
	LL ans=0; 
	for(auto w:ma)
	{
		LL j=w.fi;
		LL i=w.se;
		if(i>=3)
		{
			ans+=i*(i-1)*(i-2);
		}
		if(j<=1e6)
		{
		//	for(auto w:factor[j]);
			if(j==1) continue;
			for(auto v:factor[j])
			{
				if(v*j<=M&&ma.count(j/v)&&ma.count(j*v)) ans+=i*ma[j/v]*ma[j*v];
			}
//			if(j*j<=M&&j!=1)
//			{
//				if(ma.count(j*j))
//				{
//					ans+=i*ma[j*j]*ma[1];
//				}
//			}
//			for(int k=2;k*k<=j;k++)
//			{
//				if(j%k!=0) continue;
//				LL kk=j/k; 
//				if(ma.count(j*k)&&ma.count(j*k))
//				{
//					ans+=i*ma[j/k]*ma[j*k];
//				}
//				if(kk!=k)
//				{
//					if(ma.count(j*kk)&&ma.count(j*kk))
//					{
//						ans+=i*ma[j/kk]*ma[j*kk];
//					}
//				}
//			}
		}
		else
		for(LL k=2;k*j<=M;k++)//min(j,1ll*32000)
		{
			if(j%k!=0) continue;
			if(ma.find(j/k)==ma.end()) continue;
			if(ma.find(j*k)==ma.end()) continue;
			 ans+=i*ma[j/k]*ma[j*k];
		}
	}
	cout<<ans<<"\n";
}
int main()
{
	init();
//	for(auto v:factor[8]) cout<<v<<endl;
	IOS; 
	int t=0;
	cin>>t;
	while(t--)
	{
		solve();
	}
	return 0;
}


标签:maxx,Triples,int,LL,Hard,Version,ma,const,define
From: https://www.cnblogs.com/xxj112/p/17363123.html

相关文章

  • 新建hardhat项目
    //初始化项目,一直回车即可yarninit//新增包之类的yarnadd--devhardhat//一直回车就行,初始化yarnhardhat//如果hardhat.config.js文件不在当前文件夹下yarnhardhat--verbose//该命令会帮助你找到错误的文件,然后删除他然后再次执行yarnhardhat编译命令yarnhardhat......
  • Correct the classpath of your application so that it contains a single, compatib
    1.背景有时候引入包有冲突,比如在Maven项目中的不同模块多次重复引入等这里遇到的问题是重复映入了如下包:<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.0-RELEASE</vers......
  • wpf中IValueConverter的两种实现方式(key和静态实例)以及 ValueConversion 特性
    使用值转换器的场景:你得到一个值,你需要根据你的需求转成另一个东西,可以是图片、对象等等都行传入的是object,传出的也是object,使用值转换器需要继承接口:IValueConverter里面有两个方法Convert和 ConvertBackConvert很好理解:你把xaml中某个对象中的某个属性或其他值传递到Value......
  • golang -WARNING: undefined behavior - version of Delve is too old for Go version
    1.背景启动警告 这是idea内置的dlv.exe调试器版本太低了2.解决安装最新的goinstallgithub.com/go-delve/delve/cmd/dlv@latest安装成功后,在golang的安装位置多出来个新的dlv.exe  idea打开配置 写上自己的地址即可下面是我的 重启idea生效......
  • 解决Python中报错RequestsDependencyWarning: urllib3 (1.26.9) or chardet (5.1.0)/c
      在运行requests包时,出现了以下报错信息:RequestsDependencyWarning:urllib3(1.26.9)orchardet(5.1.0)/charset_normalizer(2.0.12)doesn'tmatchasupportedversion!warnings.warn("urllib3({})orchardet({})/charset_normalizer({})doesn'tmatchasu......
  • leetcode调研version0
     这是我第一次发博客,所以许多功能还不太会使用。前几次的随笔既当作记录,也当作自己的练习。 最近想要刷leetcode,纠结用哪种语言(我自己学过c/c++,python,fortran,Java),所以前期做了一些调研,在此记录一下。 c语言: 网址:https://github.com/begeekmyfriend/leetcode ......
  • CF1822G2 - Magic Triples
    比较好的题目,别的不说,G1对G2有着不错的启发性。首先,因为\(b>0,a_k\le10^9\),所以\(b\)不可能超过\(\sqrt{a}\)考虑对\(b\)分类讨论,设置一个阈值\(B\),先处理\(b=1\)的情况,其实就是取三个相同的数然后排列,可以比较简单的排序之后做到\(O(n)\)。接着手写一个哈希表用......
  • The binary version of its metadata is 1.8.0, expected version is 1.5.1.
    C:/Users/sdt16354/.gradle/caches/transforms-3/b92f389f516aa233b37ae70b7a7c1337/transformed/jetified-annotation-jvm-1.6.0.jar!/META-INF/annotation.kotlin_module:ModulewascompiledwithanincompatibleversionofKotlin.Thebinaryversionofitsmetadata......
  • Vue学习笔记之Node Sass version 8.0.0 is incompatible with 4.0.0错误
    输入以下两个命令:npmuninstallnode-sassnpmi-Dsass注:Mac环境如果进行了系统升级,需要重新安装Xcode,执行命令xcode-selectinstall不然会出现如下的错误Mac解决gyp:NoXcodeorCLTversiondetected!报错 如果出现python2的错误gypverb`which`failedE......
  • LightOJ1007---Mathematically Hard (欧拉函数)
    Mathematicallysomeproblemslookhard.Butwiththehelpofthecomputer,someproblemscanbeeasilysolvable.Inthisproblem,youwillbegiventwointegersaandb.Youhavetofindthesummationofthescoresofthenumbersfromatob(inclusive).T......