2016.09.17【初中部 NOIP提高组 】模拟赛C题解

这次比赛呵呵哒偷笑

T1

这道题当时用了递归,对了一个点......但到最后发现至少少了一个exit哭哭......正解是栈,其实我的做法也差不多,就是不停的把火车厢往“站”里放,如果栈顶是当前位,那就出栈;

T2

做题时一脸懵逼,而且越看越懵逼......听了讲题之后,我才知道这是一道水水的树形DP:用f[1,i]表示选第i个点的方案数,f[0,i]则反之,f[1,i]:=f[1,i]*f[0,j],f[0,i]:=f[0,i]*(f[0,j]+f[1,j]),因为如果选i,就不能选他的子节点,反之,则选不选都没关系;

T3

对这道题我只能表示无语,因为就算做对了,也不是很清楚原理,但思路还是懂的.....a表示一个分解n的数列,b表示从a中选若干个数,是每个数倍数都大于k,公式如下:

a[i]:=b[i-1]+1; 无法构造,所以只能新建一项表示;

if a[j]*k>a[i] then b[i]:=b[j]+a[i]else b[i]:=a[i]; 是每两个数倍数>k,如不能构造,则等于本身;

如果

a[i]>=n 退出循环

如果 a[i]=n 那么就是输了(lose)否则,从i-1开始,不停减去a[i-1]的值,能减就减,减到零时的a就是答案了;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值