[AHOI2018初中组] 球球的排列
前言
紫题, 启动!
思路
转化题意
对于
个物品, 每个物品拥有特征值 , 其编号为
一个合法的排列定义为 :不是一个完全平方数
求合法排列的数量
这个题听别人讲过, 一如既往地忘掉了
怎么做呢?
看了下
考虑根据完全平方数的性质进行一个处理 : 对于
那么你发现数组变成了一个多重集, 我们要计算的是所有多重集排列中, 满足相邻数字不等的方案数
这个问题其实很典啊, 考虑正难则反算不满足条件的方案数, 令
如何计算
然后就不会做了, 然后去 讨论区 问, 然后被金钩爷震撼到了
与 某篇题解 一样, 我们考虑先用柿子表示
定义
对于一组确定的
解释一下,
-
: 你发现把一个相同且相邻的对看做一条无向边, 连一条边相当于把一个点加进一个连通块使得这个图不存在环, 同颜色元素个数为 , 那么最多可以加 条边, 组合数选一下即可, 肯定也是不区分顺序的任意选择 -
: 你发现把一个相同且相邻的对看做一条无向边, 连一条边相当于把一个点加进一个连通块使得总的元素数量 , 所以「钦定」 个相邻且相同的对一定会留下 个 颜色的元素, 做一个多重集排列即可 -
: 比较显然, 对于每种颜色都要区分顺序
然后你就可以根据这个计算出
具体的, 你可以搞一个
总结
善于利用特殊性质转化问题
本题中利用了完全平方数的性质, 将其转化成常见的多重集, 奇偶次的特性也是完全平方数常见的考点
不好做的问题, 先推柿子
一类相邻对的问题考虑连边之后在图上理解
特别的是一类按照元素种类作为
从某种意义上来讲我们可以将其理解成一个特殊的推柿子方式
紫题的含金量还是很高的, 比 [BZOJ4665] 小 w 的喜糖 多了整整
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通