ACM算法
装B且挨揍の
有python机器学习、爬虫、数据挖掘、算法等项目可以联系我,wxid_fz1xs8dl5xwy22
展开
-
ACM训练题:摆花
花的摆放是按顺序且同种在一块,这可以递推。设dp[i][j]表示前i种花总共摆放j个的方案数。遍历第i种花可能的摆放个数k,有递推公式:dp[i][j]+=dp[i-1][j-k]。唯一的坑点是这个j要从0开始。原创 2024-02-14 17:05:12 · 175 阅读 · 0 评论 -
ACM训练题:互不侵犯
具体算法:dp[i][j][k]表示第i行,前i行有j个棋子,第i行的棋子情况。第一行初始化一下,符合条件的设为1.然后循环枚举出第i行,m总数的棋子,j的前一行状态,k的这一行状态,验证是否相邻,是否总数超过。一看数据范围,如果是枚举所有的棋盘情况,2^K,肯定超了,自然是要一行一行递推,而相邻这个情况用位运算会比较方便,所以用状压dp。原创 2024-02-14 13:59:35 · 321 阅读 · 0 评论 -
ACM训练题:Division
题意是给你N,打印出所有相除等于N的五位数(包含前导零),可以枚举后五位,计算量是10!,然后乘N,一起检验10个数是否都出现。比较奇葩的是这个格式,在每一个N结果输出前加一个\n。原创 2024-02-05 20:05:20 · 244 阅读 · 0 评论 -
ACM训练题:Raising Modulo Numbers
主要意思就是上面的式子,求幂的和的模,求幂自然是快速幂,这里都带上模,求和的模也可以分开取模。原创 2024-02-05 15:18:53 · 231 阅读 · 0 评论 -
ACM训练题:Strange Integers
由于有对称性,可以先将数组排序。考虑最小的数选不选,一定选,因为如果不选最小的数也能达到最大的答案,那么换成最小的数一定不亏。接下来就遍历,遇到比上一个大k或以上的就选,因为如果你不选一定不赚。题意是给n个数,找出最多的数,使两两之差大于等于k。原创 2024-02-05 11:12:10 · 133 阅读 · 0 评论 -
ACM训练题:Fadi and LCM
如果a,b含有相同质因数,如果a中含质因数c的数量小于b,那么a去除所有c,显然lcm不变,这样将a、b中所有不必要的质因数去除后,显然a、b已经没有公共的质因数,于是a、b互质,要取max(a,b)最小,可以交换a、b中的质因数,这样可以找到最小的一对。首先LCM(a,b)=X,说明a*b>=X,当且仅当a,b互质时相等,题意要让a,b都尽可能小,最好让a*b=X,即a,b互质。于是可以遍历sqrt(X),比较互质的因数即可。原创 2024-02-05 00:13:29 · 276 阅读 · 0 评论 -
ACM训练题:曲线
这题只需要注意一个点,就是所有二次函数的二次系数都是大于0的,这说明这是个下凸函数,而且最小值旁边都是单调的,对于求区间凸函数极值问题,套三分模板即可。需要注意的是exp需要到1e-8级别,要不然可能会寄。原创 2024-02-04 17:58:36 · 200 阅读 · 0 评论 -
ACM训练题:0-1MST
如果给你的是不超过10^5的‘零边’,只需要求连通块-1即可,但这里要求‘一边’不超过10^5,当n很大时,很明显‘零边’是非常多的,可以考虑找到一个根节点,这个节点连通的‘零边’最多。很明显,这个节点的‘一边’最少,且=n-1-m/n,那么这些就可以构成一个联通块,剩下n-(n-1-m/n)=m/n+1个点,对这些点枚举每一条边,用并查集维护联通块,最后返回连通块-1.时间复杂度为O(m+n)。有m条边的边权为1,其余的都为0。问你这张图的最小生成树的权值。原创 2024-02-03 21:26:56 · 881 阅读 · 0 评论 -
ACM训练题:跳石头
看到让最小值最大,大概率是二分答案,先用二分假设一个答案,然后遍历数组看答案是否符合,再决定二分的方向。有个小小的坑,就是把终点也要算进去,不然寄了。原创 2024-02-03 15:26:22 · 152 阅读 · 0 评论