1 条题解

  • -3
    @ 2024-4-27 18:09:03

    【题目大意】

    以样例分析,三只小猫来分鱼N=3,每次扔掉鱼的数量为i=1,为了每只小猫都可吃到鱼,可令第三只小猫需要拿走3条鱼(拿走1条和2条不满足要求),则此时待分配的有10条鱼。第二只小猫待分配的鱼有103/2+1=1610*3/2+1=16条。第一只小猫待分配的鱼有163/2+1=2516*3/2+1=25条。

    【考纲知识点】

    递推

    【解题思路】

    枚举最后一只猫拿走的鱼i,i>=1,从小到大枚举,最后一只猫拿走鱼之前待分配鱼的数量为ans=i3+aans=i*3+a,扔掉的鱼的数量为a,倒数第二只猫待分配的鱼的数量设为y,则(ya)(n1)/n=ans(y-a)*(n-1)/n=ans,则y=ans/(n1)n+ay=ans/(n-1)*n+a; 状态:f(j)表示第j只猫拿走鱼之前待分配的鱼的数量 初始值:f(n)=in+af(n)=i*n+a; 递推关系式:f[j1]=f[j](n1)n+af[j-1]=f[j] (n-1)*n+a; 注意:枚举第 n条小猫拿鱼的条数,然后逆推枚举答案,如果发现逆推时答案除不尽n-1,那么跳出进入到下一次枚举,如果逆推完毕后还没有跳出,那么就直接输出答案。

    【参考程序】

    image

    • 1

    [GESP202312 三级] 小猫分鱼

    信息

    ID
    565
    时间
    1000ms
    内存
    512MiB
    难度
    8
    标签
    递交数
    377
    已通过
    53
    上传者