退役划水(22)/一道题的题解以及这道题加强版的题解以及这道题加强版的加强版的题解征集
开篇是一些扯淡,如果你想看的是那道题,直接往下翻到没有图片的地方就好(有两条分界线的地方)
高产之后阅读量下滑了(不如不更)
但是还是记录一下生活(一些个流水账)
上一篇博客没多少人读,可能是读的比较粗也可能是发现了也懒得破译也可能是没破译出来(应该不会吧 很简单的)
不过结论是并没有人对此做出什么回应(其实似乎也没什么可回应的)
如果单看一个空行的话太容易被发现了,所以选择直接接在最后一行后面
但是似乎大家对这种谜语人行为并不感兴趣,而且为了防止以后大家点进我博客第一件事就是Ctrl+A,所以还是先不这么玩了
然而按照DC的尿性,等到有什么需要一点脑洞加密的东西可能还会再加密放出来
按照惯例转发一些发在QQ空间的值得纪念的小事
终于到萌新线了
(虽然事实上在昨天我又推了一点到了11.54)
(仔细比对的话 发现有些歌真的半年没破记录了 如Vindication)
(骨折光prs快一年没推了)
事实上是在仿写半年前的说说(
(但是半年前说的卷可一点都没有实现)
除了打游戏以外,其实也在尝试做一些有点意义的事情
(看着同龄人一个比一个现充,唉当代大学生就数我最失败)
脑子不行那就上身体,也算是有点贡献
(但有一说一针管怎么那么粗,我没见过那么粗的针管)
不过有一点后悔,早知道就在浙江献了,似乎在浙江献血可以有志愿者小时数,但在河北就没有
上个学期啥也没干,志愿者小时数还保持着0呢
算了 来点有营养的东西
今天起床,没什么事,打算学习
但是我打开了B站
然而B站也觉得我太颓了,所以给我推了学习的东西
感觉是可以做成交互题然后扩展到OI上的,而且大概还不算太简单
考虑下面的问题:
(Easy version): 个硬币,其中没有假币或有个假币, 假币重量与其它的不同,但不确定是更重还是更轻。 天平称量次,确定是否有、哪个是假币、假币偏轻还是偏重(共25种情况)
(Hard version): 你必须在第一次称量开始前就把三次称量方案都确定,而不能根据上一次称量的结果来决定下一次的方案
(???? version): 硬币增加一个(个硬币,种情况)
上来就说左右的回去重新看题,如果天平不平衡的话那你只排除了全都是真的的情况,由于不知道下一步没法做了
最开始我在想,跟有什么关系
然后很快就发现这个是没有来由的,天平有左倾 右倾 平衡种状态,那么一共有种可能
用来应对种情况应该是足够的,但也差不多满了
每次称量会分出个分支,我们要尽量充分的运用每一个分支
那么也就是说,要让种可能情况尽量均衡的分布在个子分支里
我们先规定一下种情况的表示方式,表示全是真(),表示是假币且比其余硬币重,反之
现在我们有这些情况
如果想均衡的话,那你应该会想分成
那么由于对称性,左右倾应该都对应种情况,而平衡是种情况
如果一个硬币不上秤的话,那么自然就都在平衡的情况里(剩下的都是真的,怎么称怎么平衡)
所以我们决定让个硬币不上秤,那么平衡就有种情况了
为了后续表达方便,我们就暂定让不上秤吧。剩下的均匀分,在左侧,在右侧
那么结果以及所对应的情况如下:
B(平衡):
L(左倾):
R(右倾):
继续分类讨论:
这样的话其实就是硬币机会的完全一样的子问题。
类似的,一共种情况,我们想让它们被均分。
平衡对应种,那么应该是有一个没上称,假设是吧
然后个硬币似乎没办法均匀放在左右边,所以我们决定把放在左边,取用号硬币中的个放在右边
(我们已经确定它们都是真的,所以用它们来做“砝码”)
这就很简单了,要么正常要么轻要么重,别的都正常
放在左边,随便拿一个放在右边
这样的话我们知道中一定恰好有一个是重的
那么随便拿两个上来,例如在左在右吧
与类似
现在有种情况,要么是中有一个重了,要么是中有一个轻了
已经确定都是真的,可以当作砝码使用
种情况分给个分支,那大概是了
然后这一步其实有点难想。平衡是的话那应该有两个不上秤,假定是和吧
然后直观的想法是把放一组,放一组,但发现很难构造对应的称量方案
一种直观的想法是把放左边,右边放上个标准的真币。但是我们只有个已经确定的真币,所以不太可行
所以我们退而求其次吧,搞一个更加混乱的分组方法:在左,在右(其中已经确定为真币)
拿号直接跟真币比对一下就好了。
和比对一下谁重,谁重谁就假,平等那就是号假
与类似
与类似
至此的所有情况就说明完了
的核心思想就是均分可能性(情况)
用的话来说,结点数固定且儿子数不超过,那么满三叉树中平衡的那一个深度最小
来说说
不管怎么说,上述方法需要分类讨论,且后一步对前一步有依赖
如果问题简单的扩展到次机会个币(是的倍数且没有满),可解但是讨论量非常非常大
这样的方法人力消耗极大,而且也很难用计算机实现
把问题扩展到数据范围,那直接玩完
所以我们要把问题抽象化,改成数学问题
我们考虑天平干的是个什么事:
假设每个硬币的质量分别是
那么天平实际上是一个函数,其中参数是操作数组
即说明硬币放在左侧,说明硬币放在右侧,说明不上秤
天平返回的是$sgn(\sum\limits_{i=1)^{12} a_i \times m_i$
表示左倾,表示右倾,表示平衡
天平的那个和式实际上类似于矩阵(向量)乘法
我们重写每个硬币的质量为,其中表示真币质量,表示偏差量
由于我们只在意的正负(或)而不在意大小,所以我们假设只有三种取值
构造矩阵
我们发现一次称量就是,只有三种取值
由于我们有次称量,就有个向量。我们把它们并起来,得到一个新的矩阵
这样的话结果也会是一个向量
现在还是一个。其中是一个所有元素都相等的列向量
如果我们假定中每行的行和为,那么等式就可以化简为
(很好理解。放在原问题里就是,如果天平左右侧硬币数量相等,那么真币有多重便不再产生影响)
现在我们的问题是,我们要构造一个的由构成的矩阵
然后根据每一种返回的,求出对应的。
且还满足一个性质:要么全是,要么恰有一个元素为或
进一步发现:由于满足这样的性质,所以如果,那么一定等于中的某一列,或者是负的某一列
如果那么也就是说怎么称都相等,这样的话也就是没有假币
如果也就是等同于第列,这样的话就说明也就是是假币且偏重
如果也就是等同于负的第列,这样的话就说明也就是是假币且偏轻
为了使结果与情况一一对应,我们需要保证中的任意两列不相等,任意两列不互补
同时由于零向量被用去表示怎么称都相等的情况,所以中的任意一列也不能是全零
同时当然受到题意限制,中的每个元素必须是中的一个
还有上面为了简化问题规定的,中每一行的行元素和为
随便构造一个满足这些条件的矩阵吧
实际上只有对可能的列向量(去掉全零,每一对互补,也就是),每一对里选一个,有一对舍弃掉。
事实上你要舍弃的一对一定是三个元素都不为的四对之一
因为你要求每行的和为。那么也就是说绝对值的和一定要是偶数。这对的绝对值和是
所以要去掉哪一个其实是有这样的限制的
不管怎么说,现在有一个能用的了,然后就可以根据向量来查找对应的结果了
很妙。我线性代数真有如白学
至于,首先我们先不考虑那个限制,也就是即使我们依然可以根据结果决定下一步决策
这样的话,个币意味着情况全满(种)
而且硬币总数不是的倍数也不是的倍数会带来一些不便。例如说第一步分成可能都相当困难
所以在的情况中出现的混乱可能会更加的多
更进一步的话,第一次平衡需要种情况,那就说明是,有个币不上称
剩下的个币都要上称,那么两侧币的数量就不一致了,就很难继续考虑了
这是建立在没有额外提供真币的情况下,如果给出了足量的真币作为砝码,那上述问题会相当简单
例如我如果有个已知真币,那么左侧放右侧放个真币就能把情况很整齐地划分
同时如果是,我们用矩阵去构造
由于是个币,所以对列向量我们都不能舍弃,那么每一行和为的条件就不能被满足
如果我们有已知的真币的话,我们可以通过往币数量少的一边添加真币来使得的贡献在两侧达到平衡
如果是的话,那么给我个真币其实就够了。我左侧放右侧放加一个真币
那么结果就分为了
同时添加一个币也是没问题的。按照原来的方案表示即可。
这就进一步引出了一堆问题:个币不添加真币是否无解?呢?
我的大脑宕机了。我好菜
希望能有人给出解答
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2019-08-08 [考试反思]0807NOIP模拟测试14:承认