CF1322C:Instant Noodles
生活随笔
收集整理的這篇文章主要介紹了
CF1322C:Instant Noodles
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
解析
神仙題了屬于是
設SiS_iSi?為右側第i個點連向的左側點的集合
然后把所有SiS_iSi? 相同的點合并成一個點(就稱為新點吧),點權相加
合并后的所有點權的gcd(設為w吧)就是答案
為什么?
首先一個顯然的結論是,SiS_iSi?相同的點要么都被選到,要么都選不到
然后考慮任何一個左側點的選取方案,權值肯定是一些新點的權值和
因此w也一定是這個方案權值的因子
w的合法性得以證明
然后是w的最優性
考慮假設有一個x,是比w更大的符合的答案
那么一定至少存在一個新點k,使x不是它的因子了
那么考慮當選取的集合為SkS_kSk?的時候都權值和
如果這個權值和仍是x的倍數,說明至少存在一個新點k′k'k′,使Sk′S_{k'}Sk′?是SkS_{k}Sk?的子集,且k’的權值也不是x的倍數(這樣他們加起來才可能是x的倍數)
那么把k’作為新的k,遞歸到考慮選取集合為Sk′S_{k'}Sk′?的情況
這樣集合會越來越小,直到無法找出新的k’為止,就一定能找到一種方案,使x不是該方案權值的因子
最優性得以證明
思路有了以后,代碼實現就不難了
我偷懶沒有用哈希,使用的是map套vector
總結
以上是生活随笔為你收集整理的CF1322C:Instant Noodles的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 获取路由器的公网地址如何在公司知道自己家
- 下一篇: 如何用word制作组织架构流程图(wor