我有两种类型的笔记本,
对于给定的n个问题,我必须以这样的方式使用页面,使得两个笔记本都不会浪费任何空间。考虑到我也必须使用最少的页面。
输出应该返回解决所有问题所需的页数,如果不能通过它应该返回-1。
示例:
Problem count : 10
Output : 1 (one page from first notebook)
Problem Count :12
Output :1 (one page from second notebook)
Problem Count : 5
Output : -1 (Not possible)
Problem Count : 22
Output : 2(one from first notebook + one from second notebook)
Problem Count: 23
Output:-1(not possible)
如何解决此问题,提前谢谢
答案 0 :(得分:2)
让我们说问题的数量是2k。对于任何页面组合,它必须是均匀的。
然后你必须找到x和y这样
10x + 12y = 2k
5x + 6y = k
5(x + y) + y = k
你必须尽量减少x + y。设a = x + y然后,
5a + y = k
a >= y
这个问题的一个解决方案是
a' = floor(k / 5)
y' = k mod 5
该解决方案使y最小化,因此对于任何存在的解决方案,a' > = y'对于这个特定的解决方案
这种平等的一般解决方案是
a = a' - t
y = y' + 5t
从某种意义上说,y'借用一个' 最大化t将最小化a。
要解决:
a >= y
a' - t >= y' + 5t
a' - y' >= 6t
所以最大t是楼层((a' - y')/ 6) 而min a是一个' - t
恒定时间解决方案! :)