注意:我仍在寻找快速解决方案。以下两个解决方案是错误的,第三个解决方案非常慢。
我有N个玩具,编号从1到N。每个玩具都有一个相关的成本。您必须进行购物狂欢,这样在特定的一天,如果您购买了玩具i,则您可以在同一天购买下一个玩具,该玩具的编号应为i + 1或更高。此外,任何连续购买的两个玩具之间的绝对成本差异应大于或等于k。我最少需要几天才能购买所有玩具?
我尝试了一种贪心方法,首先从玩具1开始,然后看看我可以在第一天买多少个玩具。然后,我找到未购买的最小i并从那里重新开始。
示例:
我有N个玩具,编号从1到N。每个玩具都有一个相关的成本。您必须进行购物狂欢,这样在特定的一天,如果您购买了玩具i,则您可以在同一天购买下一个玩具,该玩具的编号应为i + 1或更高。此外,任何连续购买的两个玩具之间的绝对成本差异应大于或等于k。我最少需要几天才能购买所有玩具?
我尝试了一种贪心方法,首先从玩具1开始,然后看看我可以在第一天买多少个玩具。然后,我找到未购买的最小i并从那里重新开始。
示例:
Toys : 1 2 3 4
Cost : 5 4 10 15
让 k 为 5
第一天,购买 1、3 和 4 号玩具; 第二天,购买 2 号玩具。
因此,我可以在 2 天内购买所有的玩具。
请注意,贪心算法无法解决以下示例:N = 151,k = 42, 按顺序排列的玩具成本如下:
383 453 942 43 27 308 252 721 926 116 607 200 195 898 568 426 185 604 739 476 354 533 515 244 484 38 734 706 608 136 99 991 589 392 33 615 700 636 687 625 104 293 176 298 542 743 75 726 698 813 201 403 345 715 646 180 105 732 237 712 867 335 54 455 727 439 421 778 426 107 402 529 751 929 178 292 24 253 369 721 65 570 124 762 636 121 941 92 852 178 156 719 864 209 525 942 999 298 719 425 756 472 953 507 401 131 150 424 383 519 496 799 440 971 560 427 92 853 519 295 382 674 365 245 234 890 187 233 539 257 9 294 729 313 152 481 443 302 256 177 820 751 328 611 722 887 37 165 739 555 811