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

16 篇文章 0 订阅
3 篇文章 0 订阅

T1:

这道题很明显是一道二分的题目。然而许多人竟然不用二分就水过了,佩服佩服。

一开始在考场上二分的是两人的电费。但发现这样子二分是不可以的,因为不知道总钱数是否能被那些价格整除,有时就会出错。

但其实只需换一种思路,改为二分两个人的电量。

二分一个人的电量,那么另一个人的电量就可以通过题目给出的n算出。

知道了两个人的电量,则可以判断是否符合标准了。


T2:

这道题很明显是DP,然而考场上时根本没想法,普通的DP是行不通的,因为成环。

但其实有时候应该多想想。

一个环,假设已经求出了最大值,那么最小值就显然了。

一个环,如果最大值是首尾相连的,那么最小值则必定不首位相连,反之亦然。

那么,我们只需求一个环的最大值以及环的最小值就可求得答案了。

状态:

f[i,j,0]表示前i个数分成了j段,第i个数不选的最大值

f[i,j,1]表示前i个数分成了j段,第i个数选的最大值

d[i,j,0]表示前i个数分成了j段,第i个数不选的最小值

d[i,j,1]表示前i个数分成了j段,第i个数选的最小值

f[i,j,1]:=max(f[i-1,j,1],f[i-1,j-1,0])+a[i];
f[i,j,0]:=max(f[i-1,j,1],f[i-1,j,0]);
d[i,j,1]:=min(d[i-1,j,1],d[i-1,j-1,0])+a[i];
d[i,j,0]:=min(d[i-1,j,1],d[i-1,j,0]);

(MDZZ...)


那么求出了f和d数组之后,答案就是

max(f[n,k,0],f[n,k,1])

max(sum-d[n,k,0],sum-d[n,k,1])

的max


T3:

这道题就是约数国王。

怎么求一个1~n里面拥有最多因数个数的数中的最小数呢?

很明显,(除1外)任何一个正整数是由质因子构成的。

那么,我们则可以枚举质因子,并枚举质因子的个数从而求得这个拥有最多因数个数的数。

f[i,j]表示拥有i个质数,j个因数的最小数。

f[i,j] 很明显 可以更新

f[i+1,j*(k+1)]

这里的i指第i个质数,j表示所求的数一共有j个因数,而k则乘上多少个第i个质数。

求得之后,再求一个c[j]表示有j个因数的最小数。

很明显c[j]=min{f[i,j]}


最后判断一下c[i]的值并求个最小就可了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值