ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

LGP5366口胡

2022-04-27 08:31:06  阅读:169  来源: 互联网

标签:背包 钦定 然后 A4 LGP5366 lcm 复杂度


第一次看见这题的时候觉得挺牛逼的,然后想了半个小时发现其实还是挺简单(

首先:\(A=\max_{n=1}^{10^8}\sigma(n)=736,B=\max_{n=1}^{10^8}=8\)。

首先 \(G,L\) 都没啥必要,因为可以变成 \(1,n\)。

那么 \(X/L\) 只能是 \(n\) 的因数。问题变成了在 \(n\) 的因数中钦定某个数必选,然后要使 \(\gcd=1,lcm=n\)。

观察一下可以知道 \(\gcd,lcm\) 都是套在表面上的。设 \(n=\prod p_i^{k_i}\),把每个数状压一下,设这个数为 \(\prod P_i^{K_i}\),第 \(i\) 位为 \(0\) 表示 \(0<K_i<k_i\),\(2\) 表示 \(K_i=k_i\),\(1\) 表示 \(K_i=0\)。

然后这玩意儿看上去像是在做 Or 背包的同时做一个 And 背包。如果不钦定是可以做到 \(A4^B\) 的。

注意到这个 \(A4^B\) 的代价我们是可以接受的。所以我们考虑做一个“逆元”的操作,把钦定的数字从其中删去,这个时候得到的相当于是钦定这个数不选的结果。然后用之前的减去这个结果就行了。

这玩意儿好像不太可做。但是好像把 \(S1,S2\) 糅合到一起是没问题的。。。

所以重新设状态,\(f[S1<<k|S2]\) 表示上面的 \(f[S1][S2]\)。

然后这里就是纯纯 Or 卷积了。逆元很好做。(实际上也只可能是 \(2\))

需要注意的是要以点值形式保存,然后做一个高维差分。复杂度是单次 \(O(4^B)\),可以接受。

不过嘛,可以考虑计算每一个数对最开始背包的贡献。做一个子集和差不多了。

复杂度 \(O(A4^B)\)。

标签:背包,钦定,然后,A4,LGP5366,lcm,复杂度
来源: https://www.cnblogs.com/lmpp/p/16197482.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有