2018年牛客网暑假ACM多校训练第二场 训练日记

首先今天这场比赛出了三个题,感谢一下出题的小哥哥给我们留了几道签到题,

前两个多小时出了三道题,后面全程划水,非常难受。

A.run

题目大意

白云在健身,每秒可以走1米或跑k米,并且不能连续两秒都在跑。 当它的移动距离在[L,R]之间时,可以选择结束锻炼。 问有多少种方案结束。

做法 DP? f[i][0/1]表示已经跑了i米,最后一步是跑还是走的方案数。 f[i][1]=f[i-k][0],f[i][0]=f[i-1][0]+f[i-1][1] 答案即为f[i][0]+f[i][1]的累加和。

D money

题目大意

你要按照顺序依次经过n个商店,每到达一个商店你可以购买一件商品,也可以出售你手中的商品。 同一时刻你手上最多拿一件商品。在第i个商店购买和出售的代价都是a[i]。 问你经过完n个商店后的最大收益。 同时,在最大化收益的前提下,求最小的交易次数。 D money 做法 f[i][0/1]表示已经访问完了i个商店,你手中是否有商品,此时的最大收益。 g[i][0/1]表示当f[i][j]取最大值时最少的交易次数。 DP 贪心 首先,如果a[i]=a[i+1],则可以删掉第i+1个商店。因为任何在第i+1个商店进行的交易都可以转为在第i个商店 进行,且收益不变。之后,如果a[i]a[i+1],则离开 第i个商店时一定要空着手。这样,第一问的答案就 max((a[i+1]-a[i]),0),第二问的答案就为长度>1的 极大递增连续段的数量。

I car

题目大意

你要在一个n*n的矩形的边界上方若干辆车,所有车从同一 时刻出发,以同样的速度,从某一列的一侧开到另一侧或者 从某一行的一侧开到另一侧。问最多放多少量车使得存在一 种方式,这些车在行驶的过程中互不相撞。 (车可以视为质点) 同时还会有若干个格子被损坏车辆不能开进被损坏的格子。

先考虑所有格子全部完好的情况。 通过归纳总计出来的答案就是2n-(n mod 2)。

如何证明? 首先,一行一列最多只能放一辆车,同时如果n为奇数,则第(n+1)/2行和第(n+1)/2列不能都放车,所以刚刚 那个值是答案的上界。 同时我们也可以很容易地构造一组满足这个解的方案,得证。 有格子损坏时的情况也不难处理,就把那些行列去掉就好了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值