【题解】牛客小白月赛14

施工中

A. 简单计数

普通做法

考虑矩阵二项式:

则有:

降智严重的做法

构造矩阵 ,那么对于矩阵 ,有 就是答案

可以发现它是一个循环矩阵,因此可以只用第一行来表示,设 ,那么它在模 意义下的 次幂的 即为答案

进一步可以发现, 是相同的,因为它们的图论意义下是完全图上的本质相同点

于是可以只用 来表示

那么循环卷积一次相当于:

对于 ,有:

对于 ,有:

整理可得:

那么只需要维护 即可,因为

,则:

其中 ,设 ,由于 ,可以发现它是一个二阶常系数齐次递推

,则:

由于 ,所以 ,因此有两个不同的根

于是有:

由于 ,可以得到:

因此:

因此:

B. 投硬币

显然答案就是:

C. 植树造林

也就是问你有几个中位数,也就是

D. 签到题I

排序后第 个数

E. 等比数列三角形

标程被打爆了……

就是形如 的三角形个数

只需要满足:

也就是:

,其中 ,且

由于 ,且 ,那么预处理 的时间复杂度就是 级别得了

那么这个暴力的时间复杂度就是:

恭喜获得一个常数比 1 小的算法

预处理是瓶颈

稍作优化,可以用 来存储 的数组,那么空间复杂度就降为了

然而这个做法还是挺烦的,既然都有 了,那么肯定能通过 来使得时间复杂度降下去

,显然答案就是:

其中:

那么暴力模拟这个过程,时间复杂度为:

F. 乐色王传奇

算法1

我会!暴力枚举出每一种可能的情况,将最大值加起来,最后除以即可。

复杂度,期望得分分。

算法2

不如我们统计每个数对上面那个总答案的贡献,最后把所有的贡献加起来?

我们发现这个贡献即是为最大值的情况数

如果有值相同呢?那我们这样规定即可:值为第一关键字,行数为第二关键字,列数为第三关键字。

比如这个表是这样的:

N=2

1 1
1 1

那么。我们发现这么做不会影响答案,并且可以将每个数字的贡献统计得不重不漏。

所以这个情况数到底是多少呢?

对于来说,我们要求从其他行里选出来的数都严格小于它。

所以情况数是

对于每个数字,一遍统计即可,复杂度。期望得分分。

算法3

有一些奇怪的算法存在。我忘了,但是肯定有。期望得分分。

算法4

首先我们将每行的排序。

我们发现对于每一行我们可以一起算。

具体来说就是对于每个其他的行维护一个指针(共个),然后在维护一个当前行的指针

每当时,我们扫一遍所有其它行的指针,如果其它行指针所指的元素小于所指的元素,令其它行指针,并且维护那个式子即可。

由于我们一共有个元素,所以我们要扫次。

故复杂度为(瓶颈就在这)。期望得分分。

算法5

那我们为什么不将个值一起算出来呢?

细想一下其实是可以的。

我们先将所有元素放一起排序,然后每个行维护一个指针(共个)。然后跟算法的思路一样。

注意下细节即可,复杂度,期望得分分。

G. many sum

for(int i = 1 ; i <= n ; ++ i) {
    for(int j = i ; j <= n ; j += i) {
        b[j] += a[i];
    }
}

此时已经可以通过此题了,但如果能做 岂不是更爽

考察这个过程,相当于做了一次高维前缀和,那么就模拟一遍即可

H. 图上计数

这题为啥没人做啊

对于操作一,相当于把子树给缩起来

对于操作二,相当于求子树第 大, 序一下就好了,离线后树状数组就可以了

I. 有毒的玻璃球

可以发现 是一个积性函数,那么线性筛出来就行了

J. J.I

重新说一遍题意

给定一个森林,在其中连尽可能多的边使得仍然是一个二分图(显然森林就是一个二分图)

首先对于每一棵树,可以把它看成一个pair,即分成左右两个点集

也就是说有一些,可以对于一个变成,要求最大化

其中是森林中的边的个数

如果你做过poj 1112的话,你会发现这是个背包裸题

直接压位跑一下就行了

全部评论
upd:等比数列三角形那个题可以优化到sqrtn loglogn,题解在:https://loj.ac/article/1679
点赞 回复 分享
发布于 2019-06-02 14:11
,请问后面的n在矩阵A中表示什么含义?为什么n的次数是max(0, i - 1), 而不是i呢?谢谢。@nekkko
点赞 回复 分享
发布于 2019-05-13 11:25

相关推荐

避坑恶心到我了大家好,今天我想跟大家聊聊我在成都千子成智能科技有限公司(以下简称千子成)的求职经历,希望能给大家一些参考。千子成的母公司是“同创主悦”,主要经营各种产品,比如菜刀、POS机、电话卡等等。听起来是不是有点像地推销售公司?没错,就是那种类型的公司。我当时刚毕业,急需一份临时工作,所以在BOSS上看到了千子成的招聘信息。他们承诺无责底薪5000元,还包住宿,这吸引了我。面试的时候,HR也说了同样的话,感觉挺靠谱的。于是,我满怀期待地等待结果。结果出来后,我通过了面试,第二天就收到了试岗通知。试岗的内容就是地推销售,公司划定一个区域,然后你就得见人就问,问店铺、问路人,一直问到他们有意向为止。如果他们有兴趣,你就得摇同事帮忙推动,促进成交。说说一天的工作安排吧。工作时间是从早上8:30到晚上18:30。早上7点有人叫你起床,收拾后去公司,然后唱歌跳舞(销售公司都这样),7:55早课(类似宣誓),8:05同事间联系销售话术,8:15分享销售技巧,8:30经理训话。9:20左右从公司下市场,公交、地铁、自行车自费。到了市场大概10点左右,开始地推工作。中午吃饭时间大约是12:00,公司附近的路边盖饭面馆店自费AA,吃饭时间大约40分钟左右。吃完饭后继续地推工作,没有所谓的固定中午午休时间。下午6点下班后返回公司,不能直接下班,需要与同事交流话术,经理讲话洗脑。正常情况下9点下班。整个上班的一天中,早上到公司就是站着的,到晚上下班前都是站着。每天步数2万步以上。公司员工没有自己的工位,百来号人挤在一个20平方米的空间里听经理洗脑。白天就在市场上奔波,公司的投入成本几乎只有租金和工资,没有中央空调。早上2小时,晚上加班2小时,纯蒸桑拿。没有任何福利,节假日也没有3倍工资之类的。偶尔会有冲的酸梅汤和西瓜什么的。公司的晋升路径也很有意思:新人—组长—领队—主管—副经理—经理。要求是业绩和团队人数,类似传销模式,把人留下来。新人不能加微信、不能吐槽公司、不能有负面情绪、不能谈恋爱、不能说累。在公司没有任何坐的地方,不能依墙而坐。早上吃早饭在公司外面的安全通道,未到上班时间还会让你吃快些不能磨蹭。总之就是想榨干你。复试的时候,带你的师傅会给你营造一个钱多事少离家近的工作氛围,吹嘘工资有多高、还能吹自己毕业于好大学。然后让你早点来公司、无偿加班、抓住你可能不会走的心思进一步压榨你。总之,大家在找工作的时候一定要擦亮眼睛,避免踩坑!———来自网友
qq乃乃好喝到咩噗茶:不要做没有专业门槛的工作
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务