因子容斥

PCB印刷电路缺陷检测实战:从数据集准备到模型训练全流程解析 本文详细解析了PCB缺陷检测从数据集准备到模型训练的全流程。重点介绍了PKU-Market-PCB数据集的特点与下载方法,并提供了数据格式转换、模型选择(如YOLOv8)与训练配置的实战代码。针对PCB小目标检测的难点,文章给出了数据分析和模型优化的具体策略,帮助读者构建高效的缺陷检测系统。 阅读详情

针对某些题目莫比乌斯反演公式法不太好用的情况

hdu5212:

求\sum_{i=1}^{n}\sum_{j=1}^{n}(ai,aj)^2-(ai,aj),ai,n<=1e4

第一步化简柿子:ans=\sum_{d=1}^{mx}(d^2-d)*\sum_{i=1}^{n}\sum_{j=1}^{n}[(ai,aj)==d]

第二步看注释:

注意:倒着维护dp就是因子容斥

正着维护dp容斥系数是莫比乌斯函数

维护dp本质上是至少变恰好的容斥过程

//求hdu5212sum{i=1~n}{j=1~n}(ai,aj)^2-(ai,aj) n,ai<=1e4;带T 
//化简一下柿子:ans=sum{i=1~1e4}(d^2-d)*dp[d]
//dp[d]: 有多少对(ai,aj)==d
//维护cnt[i],有多少个aj是i的倍数
//那么dp[i]的初始值为cnt[i]*cnt[i] (乘法定理)
//辅助理解:初始值dp[i]=cnt[i]*cnt[i]表示有dp[i]对(at,aj)是i的倍数 
//然后因子容斥即可 
#include<bits/stdc++.h> 
#define ll long long
using namespace std;
const int mod=1e4+7;
int dp[10005];int cnt[10005];
int a[10005];
int main()
{
	int n;
	while(~scanf("%d",&n))
	{
		ll ans=0;
		for(int i=1;i<=10000;i++)cnt[i]=0,dp[i]=0;
		for(int i=1;i<=n;i++)scanf("%d",&a[i]),cnt[a[i]]++;
		
		for(int i=1;i<=10000;i++)
		{
			for(int j=2*i;j<=10000;j+=i)
				(cnt[i]+=cnt[j])%=mod;
		}
		for(int i=10000;i>=2;i--)
		{
			dp[i]=1ll*cnt[i]*cnt[i]%mod;
			for(int j=2*i;j<=10000;j+=i)
				(dp[i]-=1ll*dp[j]+mod)%=mod;
			ans=ans+(1ll*(1ll*i*i-i+mod)%mod)*dp[i]%mod;
			ans%=mod;
		}
		printf("%I64d\n",(ans+mod)%mod);
	}
}

CodeForce839D:

子集gcd,嘛,第一步也是先化简柿子

ans=\sum_{d>1 }d* \sum_{S\subset A}[gcd(S)==d]*|S|

这种柿子也不好用公式法

后面那戳设为dp[d],然后看注释

//CF839D题意:给一个集合A,若子集S的gcd不为1,则做贡献gcd(S)*|S|
//问总贡献是多少  ai<=1e6,n<=2e5 
//思路:枚举gcd(1e6=>i>=2),答案就是sum{i=2~1e6}i*dp(i)
//dp(i):gcd为i的子集S出现次数*|S|,考虑dp[i]的初值,后面因子容斥 
//维护cnt[i]:有cnt[i]个aj满足aj是i的倍数
//我们的子集大小|S|可以是1~cnt[i] ,枚举子集大小j: 
//dp[i]=sum{j=1~cnt[i]}j*C(cnt[i],j)=cnt[i]*2^(cnt[i]-1); 

#include<bits/stdc++.h>
#define ll long long 
using namespace std;
const int mod=1e9+7;
int cnt[1000005];
int a[1000005];
ll dp[1000005];
ll ans=0;
ll f[1000005];
int main()
{
	
	int n;scanf("%d",&n);
	for(int i=1;i<=n;i++)scanf("%d",&a[i]),cnt[a[i]]++;
	f[0]=1;
	for(int i=1;i<=1000000;i++)
	{
		f[i]=1ll*2*f[i-1]%mod;
		for(int j=2*i;j<=1000000;j+=i)
			cnt[i]+=cnt[j];
	}
	for(int i=1000000;i>=2;i--)
	{
		if(cnt[i])
		dp[i]=1ll*cnt[i]*f[cnt[i]-1]%mod;
		for(int j=2*i;j<=1000000;j+=i)
			dp[i]-=dp[j],dp[i]=(dp[i]+mod)%mod;
		ans+=1ll*i*dp[i]%mod;	
	}
	printf("%I64d\n",ans%mod);
		
} 

 

 

 

 

 

 

CodeForce1043F

隐晦的因子容斥,需要注意到答案t在1~8之间

维护dp[j]:n个数取t个数gcd为j的方案数

//CF1043F题意:n个数选尽量少的数使得gcd为1  n,ai<=3e5  如果没有输出-1 
//思路:
//首先,如果答案存在,那么最多为7(因为前7个质数乘起来>=3e5)
//问题转化成n个数取i个数gcd为1的方案数不为0 的最小的i 
//考虑DP[i][j] n个数选i个数gcd为j的方案数 
//子集选取gcd为j,考虑因子容斥 
//dp[i][j]-=dp[i][j*k] ,k>=2 初始dp[i][j]=C(cnt[j],i);
//问题变成找到最小的i使得dp[i][1]>0
//i从小到大枚举检测即可   
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int mod=1e9+7; 
int a[300005];
ll dp[10][300005];
int cnt[300005];
int jc[300005];
int jv[300005];
ll qmod(ll a,ll b)
{
	ll res=1;while(b)
	{
		if(b&1)res=res*a%mod;
		a=a*a%mod;b=b>>1;
	}return res;
} 
ll getC(ll a,ll b)
{
	if(a<b)return 0;
	return 1ll*jc[a]*jv[b]%mod*jv[a-b]%mod;
}
int main()
{
	jc[0]=jv[0]=1;
	for(int i=1;i<=300000;i++)jc[i]=1ll*jc[i-1]*i%mod,cnt[i]=0;
	jv[300000]=qmod(jc[300000],mod-2);
	for(int i=299999;i>=1;i--)jv[i]=1ll*jv[i+1]*(i+1)%mod;
	int n;scanf("%d",&n);
	for(int i=1;i<=n;i++)scanf("%d",&a[i]),cnt[a[i]]++;
	
	for(int i=1;i<=300000;i++)
	{
		for(int j=2*i;j<=300000;j+=i)
			cnt[i]+=cnt[j];
	}	
	
	for(int i=1;i<=8;i++)
	{
		for(int j=300000;j>=1;j--)
		{
			dp[i][j]=getC(cnt[j],i);
			for(int k=2*j;k<=300000;k+=j)
				dp[i][j]=(dp[i][j]-dp[i][k]+mod)%mod;
		}
		if(dp[i][1]>0)
		{
			printf("%d\n",i);
			return 0;
		}
	}
	//5   7 2 4 4 4
	//printf("test:%d %d %d %d\n",dp[2][1],dp[2][2],dp[2][4],dp[2][8]); 
	
	puts("-1");
} 

 

CodeForce803F

经典的因子容斥

//CF803F  因子容斥 n<=1e5,ai<=1e5 
//题意:问有多少个子集S满足gcd(S)==1 
//思路:设dp[j]为 子集的gcd恰好是j的个数
//现在求 dp[1]  

//cnt[j]表示有多少个ak满足ak是j的倍数
//在cnt[j]里取任意个都是满足要求的子集 
//C(cnt[j],1)+C(cnt[j],2)+... C(cnt[j],cnt[j]) =2^cnt[j]-1
//初始化dp[j]=2^cnt[j]-1,此时dp[j]表示子集的gcd是j的倍数的个数
//我们要求恰好为j的个数,因子容斥即可 

//一开始想设dp[i][j]为n个选i个gcd为j的方案数
//但是Wa13了才发现i可以取很大
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int mod=1e9+7;
int cnt[100005];
int a[100005];
ll dp[100005];
ll jc[100005];
ll jv[100005];
//ll getc(ll a,ll b)
//{
//	if(a<b)return 0;
//	return 1ll*jc[a]*jv[b]%mod*jv[a-b]%mod;
//}
ll qmod(ll a,ll b)
{
	ll res=1;while(b)
	{
		if(b&1)res=res*a%mod;
		a=a*a%mod;b=b>>1;
	}return res;
}
int main()
{
//	jc[0]=jv[0]=1;
//	for(int i=1;i<=100000;i++)jc[i]=jc[i-1]*i%mod;
//	jv[100000]=qmod(jc[100000],mod-2);
//	for(int i=99999;i>=1;i--)jv[i]=jv[i+1]*(i+1)%mod;
	int n;scanf("%d",&n);
	for(int i=1;i<=n;i++)scanf("%d",&a[i]),cnt[a[i]]++;
	
	for(int i=1;i<=100000;i++)
	{
		for(int j=2*i;j<=100000;j+=i)
			cnt[i]+=cnt[j];
	}
	ll ans=0;
//	for(int i=1;i<=60;i++)
//	{
//		for(int j=100000;j>=1;j--)
//		{
//			dp[i][j]=getc(cnt[j],i);
//			for(int k=2*j;k<=100000;k+=j)
//				dp[i][j]=(dp[i][j]-dp[i][k]+mod)%mod;
//		}
//		ans=(ans+dp[i][1])%mod;
//	}
	for(int j=100000;j>=1;j--)
	{
		dp[j]=(qmod(2,cnt[j])-1+mod)%mod;
		for(int k=2*j;k<=100000;k+=j)
		{
			dp[j]=(dp[j]-dp[k]+mod)%mod;
		}
	}
	ans=(ans+dp[1])%mod;
	printf("%I64d\n",ans%mod);	
} 

 

 

[QMT量化交易小白入门]-七十三、主力资金动向:板块与个股资金流数据API(量化python代码解析) 本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。 阅读详情

相关推荐

全本地AI代理实战:零数据外泄的本地化Agent工作流搭建

全本地AI代理是一种将大语言模型推理、长期记忆与工具调用完全运行于用户本地设备的智能体架构,其核心原理在于通过进程隔离与标准化协议实现模型层、记忆层和工具层的解耦协同。相比依赖云端API的传统方案,它在数据主权、响应确定性与环境复现性上具备不可替代的技术价值。典型应用场景包括法务合规文档处理、离线工业现场辅助决策、以及高敏感度企业知识管理。本文聚焦Qwen2+Ollama+SurrealDB+Agno技术栈,详解如何构建可落地的全本地AI代理系统,覆盖从硬件适配、向量记忆建模到多模态插件协同的完整链路。

weixin_34194964的博客 650

背包问题——01背包|完全背包

01背包你真的都会吗?各位佬们还不进来看看?

冷兮雪的博客 3万+

数据分析——员工离职预测

员工离职预测一. 题目描述二. 数据说明三. 步骤实现1.导入并查看2.数据探索性分析3.数据处理4.模型分析5.结果分析(1) 可视化的结果分析(2)特征选择结果分析(3)多模型交叉验证结果分析 一. 题目描述 员工是否准备离职是困扰用人单位的问题,其关系到单位业务的开展及新人员的招聘,及时的分析出有离职倾向的员工成为关键的因素。数据主要包括影响员工离职的各种因素(工资、出差、工作环境满意度、工作投入度、是否加班、是否升职、工资提升比例等)以及员工是否已经离职的对应记录。 二. 数据说明 数据分为训练数据

weixin_43925467的博客 1万+

32.hdu6363 因子容斥+模型+数论

32.hdu6363 因子容斥+组合模型+数论 题意:有N本一摸一样的书,有一个共有K层的书架,现在要把书都放到书架上。 放完后假设第 i层书架有 Bi本书,则该层书架的稳固值为 (2^Bi)-1 定义整个书架的美观值为所有层书架的稳固值的GCD 问现在随机放这些书,整个书架的美观值的期望值是多少。 思路:直接搬得官方题解,很清晰了 所以我们只用考虑GCD(x1,x2,x3….)的...

animalcoder 245

OTN设备核心知识速记

本文章为工作笔记,若有错误,还需大家指正。不定期更新。

Hiddengold的博客 2648

YOLOv26与其他目标检测算法的对比分析

本文对YOLOv26与其他主流目标检测算法进行了全面对比分析。YOLOv26在COCO数据集上达到96.0% mAP@0.5和79.0% mAP@0.5:0.95,显著优于其他YOLO系列算法,同时保持85FPS的推理速度和35MB的轻量级模型。相比两阶段算法(如Faster R-CNN),YOLOv26在速度、模型大小和内存占用方面优势明显;相比Anchor-free算法(如CenterNet),YOLOv26在速度和模型压缩方面更优。其核心创新包括动态锚框分配、自注意力机制和轻量级设计,使其成为适用于复

一键难忘的博客 994

动态规划背包问题之01背包详解

动态规划背包问题之01背包详解

晨的博客 5万+

Unity 编辑器篇|(四)编辑器拓展GUI类 (全面总结 | 建议收藏)

GUI 类是 Unity GUI 的接口,并且具有手动定位功能。“即时模式”GUI 系统(也称为 IMGUI)是一个完全独立的功能系统,不同于 Unity 基于游戏对象的主 UI 系统。IMGUI 是一个代码驱动的 GUI 系统,主要用作程序员的工具。为了驱动该系统,需在实现脚本上调用 OnGUI 函数即时模式 GUI 系统常用于:创建游戏内调试显示和工具。为脚本组件创建自定义检视面板。创建新的编辑器窗口和工具以扩展 Unity 本身。

游戏开发小Y的博客 12万+

背包问题详解(01背包,完全背包,多重背包,分组背包)

有 N 件物品和一个容量是 V的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0

走在努力路上的自己的博客 6万+

OpenClaw人人养虾:接入Synology Chat

Synology Chat 是群晖 NAS(Network Attached Storage,网络附属存储)内置的即时通讯应用。

王国平的博客 780

python抓取美团外卖的数据(商家、评分、评论)

本文详细介绍了如何使用Selenium和抓取美团外卖的商家、评分和评论数据。我们从基础的爬虫原理入手,分析了美团外卖的网页结构,提出了应对反爬虫机制的策略,并给出了详细的代码实现。通过使用Selenium,我们能够绕过动态加载内容的限制,直接抓取网页中的商家信息和评论。结合多线程和代理池等技术,我们可以进一步提高爬虫效率,并避免IP被封禁。未来,随着爬虫技术的发展,我们可以进一步探索深度抓取、数据清洗和数据分析等高级应用,以实现更智能的网页数据抓取。

2201_76125261的博客 2699

可能你已经刷了很多01背包的题,但是真的对01背包领悟透彻了吗?,看我这一篇,使君对01背包的理解更进一步【代码+图解+文字描述】

关于对01背包问题的更深层次的理解

m0_65431718的博客 9321

YOLO26魔改:ICIP2026 SDTA|单深度转置注意力注入C2PSA,长程依赖与局部细节双增强,mAP提升显著

多尺度适配:SDTA的深度卷积与C2PSA的空间注意力结合,增强对多尺度目标的结构感知,改善遮挡与密集场景下的检测鲁棒性。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 293

ABC206 并查集 贪心 莫反 因子容斥

并查集,贪心每次可以把一个元素的所有出现都替换成另一种元素,问吧整个序列变成回文的,最少需要操作多少次。手玩样例可以发现,对称位置的两个元素如果不同,肯定要用操作把颜色改成一样的。我们把这个关系视作一条边,用并查集合并,最后会得到一些连通块。一个连通块中保存的是必须变成同一颜色的所有颜色种类,显然如果有x种,需要操作x-1次把他们都变成其中一种,这样是操作次数最少的。

Maxwell_Newton的博客 1041

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ABC304 枚举因子 因子容斥

但是问题是,两个不同的因子,可能形成相同的最终方案,需要去重,注意到其实一个因子的因子的方案,都包含在这个因子里面了,比如6肯定包含了2,3的所有方案,把长度2的方案循环三次就是长度6的方案了。所以我们需要从小到大处理因子,然后对于每个因子,把他的因子的方案减掉。一个人的上班情况给出,另一个人的上班情况循环,只用决定第一个循环节。但必须每天至少有一个人上班,问第二个人有多少种上班方案。显然可以枚举天数的因子,第二个人的循环节必是一个因子,然后第二个人必须覆盖上第一个人没上班的天,这可以。

Maxwell_Newton的博客 252

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

26.1.16 gcd因子容斥|区间合并|根号分治|至少装满背包

首先把所有区间以左端点为第一关键字升序,右端点为第二关键字升序排序,然后枚举区间,维护前一个区间集合的右端点最大值。注意到过程类似于区间合并的过程,如果两个区间有交集就把他们合并成一个大区间,最后剩下的每个区间彼此之间都无交集,且不能拆开,那这些区间里,我们可以让一个区间作为一个集合,另外的所有区间作为另一个集合。另一个易错点是,既然我们没有把右端点当第一关键字,右端点就可能不是单增的,所以后枚举的区间右端点不一定大,所以把一个区间合并到一个集合内时,是要把当前区间右端点,和集合最大右端点取。

Maxwell_Newton的博客 599

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

26 分解质因子 容斥 数学公式

15.41% 1000ms 131072K A sequence of integer {an}\lbrace a_n \rbrace{an​} can be expressed as:   an={0,n=02,n=13an−1−an−22+n+1,n&gt;1\displaystyle a_n = \left\{ \begin{array}{lr} 0, &amp; n=0\\ 2, ...

qq_39792342的博客 603

质因子拆贡献+朴素容斥:1007T3

考虑容,然后发现不用容,直接恰好转至少后变差分就行了。考虑枚举gcd,然后容斥,恰好转至少。,但其实不用这么麻烦。

zhangtingxiqwq的博客 137

一类数论容斥题枚举贡献因子的套路

        这里主要提供这类题莫比乌斯的推导套路,推完柿子再维护东西思路会清晰许多 A hdu4135 题意:         给A B N 问【A,B】中与N互质的个数,N&lt;=1e9,B&lt;=1e15 公式推导:         先将题意化成柿子:                  由 ,*指狄利克雷卷积,其实就是莫比乌斯反演啦                  令...

animalcoder 323

HDU - 4135Co-prime 容斥 分解质因子

DescriptionGiven a number N, you are asked to count the number of integers between A and B inclusive which are relatively prime to N. Two integers are said to be co-prime or relatively prime if they

xinxiaxindong的博客 364

数论--因子&容斥&bitmask--codeforces1007b Pave the Parallelepiped

给A,B,C,求他们的因子(a,b,c)的三元组的个数(a|A ,b|B,c|C,不考虑顺序) A,B,C有重复因子很麻烦,所以考虑容斥 //1.因子总是和bitmask在一起 //要么是对因子用位压缩 //要么用二进制表示是a,b,c谁的因子,并且容斥 //2.m个不同的球有放回的取n个 = C(m + n - 1,n) //3.__builtin_popcount(i) 返回i二进制中1的...

unintended 366

2022“杭电杯”中国大学生算法设计超级联赛(9)

2022“杭电杯”中国大学生算法设计超级联赛(9)

m0_53846741的博客 411

Grodno 2015 (Urozero May 2015 Day 5) D Triangles

给出$P(<=10^9)$, 求有多少个有序三元组$(a, b, c),\ gcd(a, b, c) = 1,\ a + b + c <= P$且以它们构成的三角形中存在某个角是另外一个角的两倍。 题解: 不妨设$a,b,c$所对的角分别是$A,B,C$且$C = 2*A$. 根据正弦定理$$\frac{a}{\sin A} = \frac{b}{\sin B} = \fra...

dehs8915的博客 151

容斥原理练习

A. HDU 4135 求 \([A,B]\) 中有多少个数与 \(N\) 互质。 \(A,B\le 10^{15},N\le 10^9\) 解 \(O(\sqrt n)\) 找出 \(n\) 的所有质因子,然后指数级容斥。可以证明质因子个数不会超过15个。 B. HDU 4059 \(T\le 1000\) 组询问,给定 \(n\) ,求与 \(n\) 互质的数的四次方和。 解 \(O(\sqr...

weixin_30793643的博客 104

2017 Multi-University Training Contest - Team 6 7.GCDispower(数论+离线处理+容斥原理)

链接:http://acm.hdu.edu.cn/showproblem.php?pid=6102 题解: 分析:有点难想。。首先逐个加入右端点,每加入一个,枚举倍数,和题解做法一样,然后更新每个Ai位置的值,当某个区间右端点恰好的刚刚枚举完的右端点时,这时候更新答案,对应询问的答案就是这个时候的区间和,用树状数组处理一下,可以先把询问按右端点从小到大排序,方便查找右端点恰好达到...

weixin_30840573的博客 69

DeepSeek LeetCode 3725. 统计每一行选择互质整数的方案数 Golang实现

4. 容斥求恰好GCD=1:从大到小遍历 d,exact[d] = mul[d] - sum(exact[2d], exact[3d], ...)。· 时间复杂度:O(m * n * τ + V * log V),其中 V=150,τ 为每个数的因子数(平均约12个),完全可接受。3. 计算倍数方案数:mul[d] = ∏ cnt[row][d],即每行选出的数都是 d 的倍数。2. 统计每行倍数计数:对每行统计能被 d 整除的数字个数 cnt[row][d]。// 2. 统计每行每个因子的出现次数。

m0_37843156的博客 72
上一篇: 2018ccpc桂林站总结
下一篇: vim偶数行合并到奇数行
animalcoder
博客等级 码龄9年 43粉丝 150原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值