#5239. Problem 2. I Would Walk 500 Miles

0

Problem 2. I Would Walk 500 Miles

Problem 2. I Would Walk 500 Miles

USACO 2019 US Open Contest, Gold

Farmer John想要将他的编号为1N1 \ldots NNN头奶牛(N7500N \leq 7500)分为非空的KK组(2KN2 \leq K \leq N),使得任意两头来自不同组的奶牛都需要走一定的距离才能相遇。奶牛xx和奶牛yy(其中1x<yN1 \leq x < y \leq N)愿意为了见面走(2019201913x+2019201949y) mod 2019201997(2019201913x + 2019201949y)\text{ mod } 2019201997英里。

给定一个将NN头奶牛分为KK个非空小组的分组方案,令MM为任意两头来自不同组的奶牛愿意为了见面行走的英里数的最小值。为了测试奶牛们相互之间的忠诚度,Farmer John想要将NN头奶牛以最佳的方式分为KK组,使得MM尽可能大。

这个问题的运行内存限制为512MB,超过一般问题所给的256MB内存限制。

输入格式(文件名:walk.in):

输入仅有一行,包含NNKK,用空格分隔。

输出格式(文件名:walk.out):

输出最优的MM

输入样例:


3 2

输出样例:


2019201769

在这个例子中,奶牛1和奶牛2愿意为了见面走2019201817英里。奶牛2和奶牛3愿意走2019201685英里。奶牛1和奶牛3愿意走2019201769英里。所以,将奶牛1单独分为一组,奶牛2和奶牛3分为一组,M=min(2019201817,2019201769)=2019201769M = \min(2019201817,2019201769) = 2019201769(这是我们在这个问题中能够达到的最佳结果)。

供题:Brian Dean