zoukankan      html  css  js  c++  java
  • 杂题

    题意

    给你一堆石子,(n)个。给定(m),每次操作如下:
    若当前有(k)堆石子,每堆(a_i)个,给每堆指定(b_i)(.s.tsum b_ile m),然后把每堆分为两堆(b_i,a_i-b_i)
    求最少操作次数使得最后(n)堆石子,每堆一个
    (Tle 1000,mle nle 10^9)

    做法

    二分操作次数

    现在就相当于一个(n imes mid)的方格,初始全(0),每列填不超过(m)(1),使得任意行最后的状态不一样

    (1)等价于分配到(b_i)

    现在考虑每次给一些行填(1),枚举(i=1,...,mid),给一些行填(i)个,(i)产生的不同行个数就是({midchoose i})
    但同时还需要保证(sum b_ile m),我们发现这样填完后每列被填的个数均为({mid-1choose i})

  • 相关阅读:
    2020年3月22日
    2021年3月21日
    2021年3月20日
    人件集阅读笔记02
    2021年3月19日
    2021年3月18日
    2021年3月17日
    2021年3月16日
    2021年3月15日
    梦断代码阅读笔记01
  • 原文地址:https://www.cnblogs.com/Grice/p/12885183.html
Copyright © 2011-2022 走看看