Я бы подошел к этому, выяснив, сколько из 10^4
возможностей должен решить каждый клиент, если бы вы распределили предметы равномерно:
Items per client = 10^4 / N
Скажите N = 20
, затем Items per client = 500
. Так что теперь вам нужно разбить ввод на группы по 500
0-0/0-4/0-9/0-9 (0 - 499)
0-0/5-9/0-9/0-9 (500 - 999)
1-1/0-4/0-9/0-9 (1000 - 1499)
1-1/5-9/0-9/0-9 (1500 - 1999)
2-2/0-4/0-9/0-9 (2000 - 2499)
etc etc
Это становится немного более запутанным, когда N не делится равномерно на 10 ^ 4, но вы можете просто округлить # заданий для отправки каждому клиенту, чтобы клиенты иногда перекрывали задания в конечных точках интервалов
Редактировать: пример, если N = 3, то элементов на клиента = 3333,333. Затем округлите это до 3000 каждый, и пусть последний сделает 4000
Client 1: 0-2/0-9/0-9/0-9
Client 2: 3-5/0-9/0-9/0-9
Client 3: 6-9/0-9/0-9/0-9
Вы можете обобщить этот алгоритм, чтобы разделить элементы равномерно. Если N между 1-10, то вы будете разбивать первый интервал. Если N между 11-100, то вы будете разбивать 2-й интервал. Если N составляет от 101 до 1000, вы будете разбиваться на 3-м интервале