USACO 3.2解题思路报告

Factorials

求n!最后面的非零位。

O(n)模拟,为防止溢出,每乘一次都要先除去末尾的零,然后模100000,最后输出最后一位即可。


Stringsobits

求出长度为N(开头可以是0)且1的个数不超过L的二进制串中第k小的串。

f[i][j]表示长度为i且1的个数不超过j的串的数量;
边界情况:f[i][0]=1(1<=i<=N),f[0][i]=1(1<=i<=L),f[i][j]=f[i][i](j>i);
转移方程:f[i][j]=f[i-1][j]+f[i-1][j-1],即分别在长度为i-1的串前添加一个0和1;
使用递归求出所求的串,从高位往低位求,若当前位的rank > f[i][j],则输出1,递归下一位,rank-f[i][j];否则输出0,递归下一位,rank。直到每一位都被求出为止。


Spinning Wheels

给出5个同心圆,每个同心圆最多有5个扇形缺口,给出每个缺口的角度,每个同心圆的起始位置和转速,求最少多长时间会有一束光能经过缺口经过每个同心圆。所有数据均为整数。

用ang[i]表示第i度能通过的缺口数,若ang[i]=5则说明符合条件。因为最多360秒所有的同心圆就都会同时回到起始位置,因此只需枚举359秒内每一秒的情况,每一秒将ang[]数组清零,枚举每个缺口的位置,用差分法给缺口所在区间+1。若枚举完359秒仍无符合条件的,则无解。


Feed Ratios

市面上只有三种肥料,每种肥料都含有相同的三种成分,但是不同种肥料中三种成分的比例各不相同,而农夫想通过三种肥料调配出目标肥料,即具有特定成分比例的肥料,求每种肥料所需的份数和混合后目标肥料的份数。

数据规模很小,直接枚举即可。


Magic Squares

有一种2维的类似魔方的玩具,称为魔板,对魔板有三种操作,给出起始状态和目标状态,求最少的操作次数。

把状态压成字符串进行广度优先搜索。


Sweet Butter

有n个牧场,每个牧场有一些牛(也可能没有牛),牧场间有c条双向道路,请找出一个牧场,求所有牛前往该牧场的距离和最小,求该距离和。

对每个点做一遍SPFA,然后所有牛到该牧场的距离和即为dis[牛所在牧场]*num[牛所在牧场],输出最小距离和即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值