2022 July 12 刷题日志

D. Permutation Restoration

bi = floor( i / ai ) 

floor的存在使 值域存在

两个知道的数,一个未知数

值域问题把未知数设到中间

i/ai = [ bi, bi+1)         ->         i/ai >= bi, i/ai < bi+1        ->        i/bi >= ai, i/bi+1 < ai        ->        

i/bi+1 < ai <= i/bi

值域匹配 贪心: sort左边界,把每个左边界是idx的线段插入set,再从set里选最小的右边界。

首先这样做确保set里左边界<=idx,而idx后的element不可能覆盖idx,因为它们的start已经大于idx

第二,选右边界最小的,因为题目保证

总结:

        floor的存在使 值域存在

        值域问题把未知数设到中间

        值域匹配 贪心: sort左边界,选最小的右边界

----------------------------------------------------------------------------------------------------------------------

E. Split Into Two Sets

二分图, bipartite graph, 对于每条边(u, v)可以分到两个不同的set

并且同一集合里没有边

一个数若多于3个domino有,则直接output NO

两个domino有value相同就给他们连边,因为不能在同一个set

之后做二分图匹配

        bfs: 初始node染色1,对于所有连接它的node: 如果没有被染过,染上opposite颜色,否则检查是否与father node 颜色不同

总结

        两个集合分 -> 二分图,   element之间不能放一起 -> 建边

         用bfs二分图检查   

------------------------------------------------------------------------------------------------------------------------------   

 F. Equate Multisets

一个operation 乘2,一个operation 除2向下取整 -> 二进制 (往右移,往左移)

可以都先把0去掉,0为共有情况

建立2个priority_queue,每次拿A和B中最大的比较:

        Bn 不等于 An: 

                Bn 大于 An,Bn不可能匹配A1....An,除二

                Bn 小于 An,B1.....Bn 不可能匹配An,输出“NO”

匹配类型问题, ai 可以匹配给多个选项: 应用最小位思维,约定从最大或最小开始匹配

总结:

        乘二和除二 -> 二进制左移和右移

        匹配类型问题

-----------------------------------------------------------------------------------------------------------------------


版权声明:本文为Wheudnbd原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。