【题解】牛客OI周赛8-提高组

A-用水填坑

10分

边界不能存水, 那么一共有个位置能存水.

枚举每个位置放多少水, 判断是否合法然后取最优方案.最多有种情况.

20分

不存在两个连续的块能存水, 那么只需要在10分的基础上枚举每个块和它四周的块能不能同时存水就好了.

95分

大概是发现每一层都是独立的, 因为高度不超过100, 所以将其分为若干高度为1的层, 每层独立处理, 看看每一层能存多少水, 再累加起来就好了.可以直接搜索.复杂度不超过O(nmh).

100分

这大概是个贪心的做法.

一开始所有未在边界点的最终高度都是不确定的.策略是用已经确定了高度的最低的点来更新其它未确定点的高度, 如果它相邻的点比这个点高度低, 显然可以填到一样高, 因为这样做能保证这个被更新的点一定是被它相邻的高度最低的已确定高度的点更新到.

那么用堆来维护最低的确定高度的点, 一开始堆内只有边界上的点.

每个点只能进一次堆被更新一次高度.复杂度.

这个题总体来说比较简单, 95分可以说是非常容易拿到的.

B-死宅选点

d_i表示, 那么若点u与点v的路径上有i条边, 这条路径的厌恶度就是d_i.

30分

假设选择一个位于中点左边的点u, 这个点左边有a个点, 右边有b个点.则***生的厌恶度为.

注意到如果选择u右边的那个点作为答案, 厌恶度变为.发现厌恶度变小了.因此可以推断, 选择更靠右的点(不超过中点)是更优的.同理, 选择右边的点也是如此.因此, 当图为链的形态时, 选择中点是最优的.

50分

, 可以以每个点为树根遍历一遍树, 得到每个点作为根时的厌恶度进行比较.

因为树是随机生成的, 利用随机生成的树期望最高树高为, 平均树高为, , 那么产生的最长路径长度大概在50以内\footnote{数据中有两个点最长路径长度达到了63, 但真的是随机数据, 嘻嘻!}, 所以答案是可以用一个128位长整数(C++中的\li\li int128)表示的, 用long long(\li int64)分数会少一点吧.

70分

, 因为1的任意次幂都为1, 所以一条路径的厌恶度就是路径上边的个数.

f(u)u到其它所有点的厌恶度总和.容易得到

其中表示v这棵子树的大小.

随便选一个点作为树根, 遍历一遍树就得到了树根的答案.然后再遍历一遍树, 得到其它点的答案.

100分

发现难点在于没法对直接进行运算.首先可以看成是一个公比为k首项为k的等比级数.类比的常识再应用等比数列求和公式.我们可以得到.

因为分子上的-k和分母上的k-1是每一项d都有的, 本题也无需求出具体的值.因此可以认为d_i相等.

p(u,h)表示树上与u距离h点的个数.

d(i,j)表示i的子树中与i距离为j的点的个数, u(i,j)表示不在u的子树中与i距离为j的点的个数.

那么$$

那么点u与其它点的总厌恶度就是.

其实可以将看成是一个k进制数第i位上的一个"1".模拟进位, 即, 当然到最后一位就不用再进位了.

那么这样比较两个k进制数的大小最多需要最大路径长度次().加上前面求p(u,h)的复杂度大概是.总复杂度为.

C-随机采矿

10分

.注意到T为任意可能值时都为1.所以第0个时刻一定会制造一个SCV.以后就不会再制造了.

20分

, 又因为第一个SCV在第0时刻被制造.所以只需要考虑第二个在什么时候制造即可.

设第二个SCV被制造时刻的期望值为E.

其实这个做法只是为您提供了一个可能的思路.

50分1

这个做法不是我想的(另一位), 设g(i,j)到第i个时间(第i-1个时刻到第i个时刻)有j只工作的(不算正在制造的)SCV的期望收益, 逆推得到:

然而这个做法我并没有想到如何优化到更高的分数.

50分2

f(i,j)表示第i时刻拥有j只SCV的概率.那么

E(t)t-1t时刻的期望收益(没减去制造SCV时间的收益)

减去制造SCV时间的收益

总复杂度为O(nm), 可以通过的数据.

100分

发现每次转移实质上都是一次线性变换.

可以把依次填入一个的矩阵中, 设为A_t

特别的

就可以将依次转移表示成一次矩阵乘法了.

发现最多有种值, 即B_i中可能.

那么进行数论分块.对于的一个可能的值求出当这时的转移矩阵.矩阵快速幂即可.

首先为了方便, 将E(t)同样表示成矩阵乘法的结果的形式.

发现要求E(t)需先求出A_t, 但是在求A的时候并不是将所有的全部算出来的.

不过依然可以利用一点小技巧求出期望.

依然是利用之前的数论分块的结果.

如果的结果相同,设此时的转移矩阵为C, 那么

发现这是一个矩阵等比级数的形式.一般有两种求等比级数的方法:

  • 等比数列求和公式: 有除法, 需要用到逆矩阵, 可能不存在逆矩阵(广义逆矩阵可能可以?), 不建议用;

  • 分治: , 根据n的奇偶性进行讨论.复杂度是.

这个做法复杂度

std

全部评论
大佬们,有标程吗
点赞 回复 分享
发布于 2019-03-23 20:50
B题70分的公式丢了
点赞 回复 分享
发布于 2019-03-23 15:54

相关推荐

点赞 评论 收藏
分享
避坑恶心到我了大家好,今天我想跟大家聊聊我在成都千子成智能科技有限公司(以下简称千子成)的求职经历,希望能给大家一些参考。千子成的母公司是“同创主悦”,主要经营各种产品,比如菜刀、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乃乃好喝到咩噗茶:不要做没有专业门槛的工作
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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