C - Table Decorations

思路:一眼贪.jpg

不过讨论贪心的情况太多了就得考虑自己的思路是否错了,一些trick自己想不到还是得自己多做题积累

对于能够组成桌子的情况,分为abc和abb两种,桌子分得最多就代表着剩余的差值最少(对于大部分贪心问题而言,题目给出的条件到最后一般都为另一种条件的体现,如何正确地理解问题本质是解决问题的关键)

我们的贪心策略是尽可能减少数量多的字母,显然极端情况最小加次小*2<=最大这个情况下每个小的字母都会与最大的字母结合,这样分配完后剩余差值最少(目的不能忘)

对于不是这种情况的,abc和abb两种情况都会被包含,我们没法讨论每种情况各自的数量,但我们的目的是剩余的差值最少

可以先画个图

 

 显然存在三行上都有位置的我们都可以删去成为一个桌子,我当初的做法是把包含最小的以三行形式删除,次小与最大abb配对,但没法处理100 100 199这种数据,贪心策略错误

再分析一次表格我们发现只要把其他格子移动到当前不属于他自己的柱子,当一行数量满三即可删去

那么我们只需要不断移动格子,使图表尽可能构成方形,这样既保证了行数尽可能多,也保证了分配完后剩余差值最少

 

posted on 2022-06-10 20:56  zesure  阅读(25)  评论(0编辑  收藏  举报

导航