题目名称 590. [USACO Nov09] 盛大的 Farm-off
输入输出 farmoff.in/out
难度等级
时间限制 3000 ms (3 s)
内存限制 128 MiB
测试数据 10
题目来源 Gravatarcqw 于2011-09-16加入
开放分组 全部用户
提交状态
分类标签
分享题解
通过:10, 提交:35, 通过率:28.57%
Gravatarkaaala 100 2.590 s 23.16 MiB C++
GravatarGDFRWMY 100 2.905 s 23.05 MiB Pascal
GravatarTruth.Cirno 100 2.966 s 23.15 MiB C++
GravatarTruth.Cirno 100 3.125 s 23.15 MiB C++
GravatarCzb。 100 3.633 s 11.71 MiB C++
GravatarMakazeu 100 4.813 s 23.16 MiB C++
Gravatarlizhe 100 6.398 s 23.00 MiB Pascal
Gravatarcqw 100 6.427 s 23.00 MiB Pascal
Gravatarsywgz 100 7.239 s 23.15 MiB C++
GravatarQhelDIV 100 9.967 s 7.66 MiB C++
本题关联比赛
20110916
关于 盛大的 Farm-off 的近10条评论(全部评论)
一道破题,把我智商都mod没了。。
GravatarGDFRWMY
2013-11-27 15:37 2楼
难道要用高精度?
GravatarTruth.Cirno
2011-10-27 08:33 1楼

590. [USACO Nov09] 盛大的 Farm-off

★   输入文件:farmoff.in   输出文件:farmoff.out   简单对比
时间限制:3 s   内存限制:128 MiB

问题描述:

    农夫约翰拥有 3*N(1 <= N <= 500,000)只牛,它们的编号为0..3*N-1,每只牛都有一个体重 W_i(1 <= W_i <= d)。约翰参加了一个叫做 Farm-off 的盛大竞赛活动,在这个活动上他可以在整个农业界炫耀他的牛。
    这个竞赛约翰可以派出一队共 N 头牛参赛,他的每头牛都有一个效率值 U_i (1 <= U_i <= h),这个值用来描述他认为在这个竞赛中每头牛的有用值。约翰想让他选择的一群牛有一个最大的效率总值。
    可能有很多种 N 头牛的集合可以达到这个最大的效率总值。农夫约翰为了防止竞赛中的欺骗行为,对牛的体重加以限制。所以第二个要考虑的因素便是参加竞赛的牛的体重。
    帮助约翰从所有以N头牛组合而得的效率总值最大的集合中,找到一个最小体重的组合。 并且打印出体重总值被M (10,000,000 <= M <= 1,000,000,000)整除后的余数。
    注意:为了尽快地输入,约翰找到一个能够表示出每头牛体重及效率值的多项式:
对于每头牛   0 <= i < 3*N,
            W_i = (a*i^5+b*i^2+c) mod d
            U_i = (e*i^5+f*i^3+g) mod h
合理的系数范围:
0 <= a <= 1,000,000,000;
0 <= b <= 1,000,000,000;
0 <= c <= 1,000,000,000;
0 <= e <= 1,000,000,000;
0 <= f <= 1,000,000,000;
0 <= g <= 1,000,000,000;
10,000,000 <= d <= 1,000,000,000;
10,000,000 <= h <= 1,000,000,000.
公式有时会产生一些重复的数字,你的算法应该能够适应这种情况。

 PROBLEM NAME: farmoff

输入格式:
第一行:用空格隔开的10个数字:N, a, b, c, d, e, f, g, h,M
输入样例:(file farmoff.in):
 2 0 1 5 55555555 0 1 0 55555555 55555555
根据公式计算出来的 W_i 分别是:5, 6, 9, 14, 21,30;计算出来的U_i分别是:0, 1, 8, 27, 64,125
输出格式:
第一行:一个单独的整数用来描述:N头牛的净效率总值最大的条件下的最小体重总值。
输出样例(farmoff.out):
51
两只牛的组合中效率最大的是牛5和牛6,它们的体重总值为:21+30=51