摘要: 这是USACO4.1.2,题目大意是将几个给定木料尽可能多的切割成指定大小和个数的木块,由于没有指定顺序,很直观是搜索问题,木料N<=50,木块数R<=1023,单是搜索一次就有50^1023种可能,数字相当恐怖,必然要剪枝。如果切割成K个指定木块能够成功,那么将这K个木块中最大的一个换成另外一个小一点的也必然能成功,那么显然要用贪心,先将木块升序排列,如果前K个可以切割成功,前K-1个也必然成功。那么此时二分优化也是很明显的了,最多搜索LOG(R)次即可。但这些并没有改变单次搜索的复杂度,我在这里用了两个剪枝1。如果切剩的废料总数比(木料总数-前K个木块总数)还大,停止搜索。但是 阅读全文