bmhNOIP模拟赛0512——技不如人,甘拜下风

老早就听说这次是mwh(初三北大一本约)巨佬命题,吓成狗了

然而最后看到题目还是吓成狗了。。。。。。我都是新初一的老人了还是那么菜,被jyk吊打

T1:

众所周知, 大菜鸡 daniel14311531 的疑惑是解决不完的。
众所周知, 大菜鸡 daniel14311531 数学挂科。 大菜鸡 daniel14311531 对一
个数的因数个数情有独钟, 所以他想知道, 所有 2 到 n 的整数中, 因数个数第
k 少的数因数个数是多少

对于 20% 的数据, n<=2000
对于 40% 的数据, n<=100000
对于 60% 的数据, n<=5000000
对于 100% 的数据, n<=1000000000,k<=1000000

我的做法:

考场上脑子短路,盯着屏幕看了40分钟才发现k很小。

其实不难看出,当k很小,n很大的时候答案只有2,3,4

但可惜的是,连线筛都忘了的我写埃筛,跑到10000000的时候实在跑不动了

于是我的sb分解质因数法被卡了,即使加了4个优化(还有不要脸的O2优化),还是只有80分,滚粗

 

T2:

_QAQ 是一个喜欢和小 faker(xay5421)一起打斗地主的菜鸡,这道题的题
目只是想要吓吓你。
现在_QAQ 有一个大小为 n * m 的矩阵,每个位置上有一个小写字母 t。
现在小 faker 给出了一个大小为 k 的小写字母字符串,他想知道在原图 n
* m 的矩阵中,有多少条长度为 k 的简单有向路径(即不重复经过一个点多次),
满足经过的点上的字符连成的字符串,恰好为小 faker 给出的字符串,你只需
要输出答案对109 % 7的答案即可

对于前 30%的数据, n=1,m<=1000000
对于后 70%的数据, n=2,m<=1000
其中 20%的数据满足, n=2,m<=100 

首先,看都不用看,30分很好拿(为忘了kmp的jyk巨佬默哀)

然后关键是怎么优化(一考完就想到了。。。。。。)

因为原图为 2*m 的网格图,所以其最多在左右方向上转弯 2 次
考虑动态规划处理答案,我们用 dp[i][0/1][j][0/1]表示在第 i 行第 0/1 列,
已经匹配了字符串的前 j 位,且同一行的另一个格子是否没经过过的方案数
显然我们可以先枚举左半段,hash 判断当前字符串字段能否与母串的前缀匹
配,中间通过动态规划转移,最后我们枚举结尾,假设当前为第 i 行,第 t 列,且还
差 2x 的字符未匹配,只需要 hash 判断结尾能否匹配,若能匹配,将答案加上
dp[i][t][k-2x][0]和 dp[i][t][k-2x][1]即可
这样我们一次只能处理中间从左往右或从右往左的答案,所以要将母串倒过
来,再次处理答案,注意特判 k=1 的情况。

T3:

_QAQ 是一个喜欢和小 faker(xay5421)一起打麻将的菜鸡,现在他有 n 张
麻将牌,因为他很喜欢清一色,所以这 n 张麻将牌全部都是筒牌,其中第 i 张
为 i 筒,由于 xay5421 有事情,他决定和自己玩麻将游戏。
_QAQ 每次会在所有剩余麻将牌中等概率的选取 1 张牌,假设取出的牌大
小为 i,则他会将剩余麻将牌中 i1,i 2,i3,i 4,...,i k 筒全部删去,例如菜鸡_QAQ 当
前手中还剩下{1,2,3,4,5,7,8,16,256}这些牌,若他抽取到了 4 筒,则会删去
{4,16,256},剩余{1,2,3,5,7,8}。
现在他想知道,期望多少次可以删去他手中的所有麻将牌

看上去很像ZJOI2019r1t1,再次被吓成狗

显然问题等价于有 1,2,3,...,k,每次等概率的选取一个数,并将其倍数全部
删去,可以状态压缩求解,考虑到k最多为logn,复杂度为 2k *k ,即nlogn,可以拿
到 60 分
我们考虑计 pi 为 i 这个数的因数个数,原问题其实等价于枚举 k 的所有排列
(即 1~k 的每个数都出现过一次的序列),对于数字 i,若其前面存在一个数字 x,
满足 x 是 i 的因数,则 x 被删除时,i 也会被删除,否则会增加一次删除的次数
即只有 i 在所有因数的最前面的时候,会增加一次删除的次数, 即有
1/pi的概

率增加一次删除的次数,所以 gi=所有1/px的答案相加,x={1,2,3,...,k},复杂度T log n2

超常分数:100+30+60=190

理想分数:80+30+20=130

实际分数:80+10+0=90

虽然水了个rank2,但是还是无法与jyk巨佬望其项背。。。。。。

转载于:https://www.cnblogs.com/zbsakioi/p/10859066.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值