2016.08.13【初中部 NOIP提高组 】模拟赛C

17 篇文章 0 订阅
16 篇文章 0 订阅

T1:

赤裸裸的DP,以边长为状态,最后输出边长的平方即可.


T2:

也是DP.

输入时输入n,x,y

设f[i,j,k]表示选i个数,最大值为j,更新了k次的方案数.

很明显是由f[i-1][][]所对应的某些数来更新f[i,j,k]的,则当枚举的第i个数小于等于j时,相应的状态为f[i-1,j,k]*j(为什么乘j是因为第i个数可能是1~j的每一个数)

当大于时很明显是f[i-1][1..j-1][k-1]的总和,则我们可以存储一个数,表示f[i-1][1..j-1][k-1]的和,每次在循环里面更新sum.

最后输出f[n][1..x][y]内的和即可.

(这里需要注意一,我们要把k循环放到j循环外面,因为这样存储的那个数才容易储存)


T3:

可以直接暴力,然后接近O(n²)的效率来计算答案是否等于M.


然而也可以求出每一个数到顶的时候,对于不同的n,分别计算的系数是多少.

然后,每次递归的时候,直接加上枚举的数*系数即可,再加上些剪枝,1ms内可行.


T4:

堆.

把天数按从小到大排好序之后,每次对于第i天所对应的期限,如果可以直接学习的话,则把他加入堆尾并维护性质,且把天数+1,否则的话,则判断第i天对应的学分是否大于小点堆的堆顶,如果大于的话则替换,并维护性质.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值