【题解】牛客小白月赛16

A-小石的签到题

我们发现当 时先手(小石)总是赢。
如何证明:一开始有 , 个数,假设先手必败,那么先手选 ,后手就进入了必败状态。
所以假设错误,那么先手就不是必败,先手一定有一种方式能赢。

B-小雨的三角形

数据范围给的很小,可以 暴力构造三角形,预处理出每一行的总和,每个询问把 行的和加起来即可(若预处理出第 行的和,则可以做到 查询)。
更快的做法?每一行的和其实是有规律的,分别为 ,除了第 行的和为 外,第 行的和为 ,那么第 行的和为

所以第 行的和就能用前缀和计算了,注意特判 的情况,这样就能够每次 查询。

C-小石的海岛之旅

我们按海岛的高度 从大到小排序。
假设海岛在水位为 时被淹没,如果海岛 和海岛 都已被淹没,那么就少了一块,答案减
如果海岛 和海岛 都没被淹没,那么一块变两块,答案加
否则答案不变。
由于出题人良心,直接是能过的。

D-小阳买水果

我们要发现单调性,如果这个区间符合条件,那么左端点变为 的话,
右端点只有变大才有可能可以更新答案。所以就是每次右端点要变成可能中的最大值。
右端点每次从 枚举找最大值不现实,
我们考虑优化,记录一个后缀的 数组,每次跳 即可。

E-小雨的矩阵

送分题,从爆搜到,把答案去一下重即可。

F-小石的妹子

我们发现妹子们之间是有拓扑的关系的,比如妹子,她一定只能在都比她大的妹子的后面。
所以 的做法就是暴力连边,然后拓扑求解,
满分做法:
这不就是二维数点问题,咋做都对啊。
因为有两维的限制,所以我们先按 从大到小排一下序,
对于排序后的第 个妹子,她的排名就是
那么我们把排名 当成下标,把 当成值,用线段树维护一下区间 即可。

G-小石的图形

发现半圆时面积最大(显然)。
面积

H-小阳的贝壳

区间 具有结合律,很容易用线段树维护,考虑如何区间修改。
首先要知道 的一个性质:

所以我们可以在线段树上建立差分数组,维护 区间和 与 区间
显然区间 就是 ,其中 表示差分数组。
至于第 个操作完全就是来搞笑的(主要用来引导别人联想到差分),只要维护差分数组的区间 和区间 就行了。最后的答案就是 区间 与 区间 相反数 的较大值。

I-石头剪刀布

简单的 期望DP+高斯消元 表示从 走到 的期望步数。

直接高斯消元是 ,能过。
但可以有更优秀的做法:
发现 之和 和一个常数项有关,
是稀疏矩阵,直接手动高消(即不要 循环,直接把要消元的消一下即可)

J-小雨坐地铁

考虑分层图最短路。
很容易想到建 层图,如果多条地铁线都经过同一个点,则在这些点之间暴力两两连边,这样连边是 的,可能会超时。
我们可以多建一层虚点,所有点到它对应的虚点不需要代价,从虚点到它对应的点需要对应的代价,这样就可以优化到 建图。最后跑一边最短路就好了。

标程
A:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=40835584
B:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=40835585
C:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=40835588
D:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=40835589
E:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=40835590
F:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=40835591
G:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=40835593
H:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=40835594
I:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=40835596
J:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=40835597

全部评论
括号里左边应该是从1到L求和吧?
点赞 回复 分享
发布于 2019-07-13 20:59
楼主,请教一下,C题,先将石块排序了,不会改变水位上涨后,分块的数量吗?emmm....😃
点赞 回复 分享
发布于 2019-08-03 16:25
#include<bits/stdc++.h> using namespace std; const int N=2e6+10; int p[N]={0}; int dp[N],Index[N]; int t=0; int main(){         int n;         cin>>n;         for(int i=1;i<=n;i++){                 int x;                 scanf("%d",&x);                 p[i]=p[i-1]+x;         }         for(int i=0;i<=n;i++){                 if(!t||dp[t]>p[i])dp[++t]=p[i],Index[t]=i;         }         int ans=0;         for(int i=n;i>=1;i--){                 while(Index[t]>=i)t--;                 while(t>0&&p[i]-dp[t]>0)ans=max(ans,i-Index[t]),t--;                 if(t==0)break;         }         cout<<ans<<endl; } 我D题是建一个单调递减的数组,每次从后面往前面更新,这样就过了,但是我感觉这样做法有点错误。😂😂
点赞 回复 分享
发布于 2019-07-16 16:05
能解释一下I题建矩阵为啥最后一列为1,关系式移项后应该是0吧
点赞 回复 分享
发布于 2019-07-14 01:50
能解释一下这个吗?谢谢    发现 f[i]f[i] 之和 f[i−1],f[i],f[i+1]f[i−1],f[i],f[i+1] 和一个常数项有关,
点赞 回复 分享
发布于 2019-07-13 22:30
D题直接二分答案为什么过不了?
点赞 回复 分享
发布于 2019-07-13 17:47
A题能解释一下吗
点赞 回复 分享
发布于 2019-07-13 13:58
what's mean?
点赞 回复 分享
发布于 2019-07-13 10:16
什么意思呀
点赞 回复 分享
发布于 2019-07-13 08:14
有标程吗
点赞 回复 分享
发布于 2019-07-12 22:23

相关推荐

01-12 20:31
东北大学 Java
点赞 评论 收藏
分享
最近群里有很多同学找我看简历,问问题,主要就是集中在明年三月份的暑期,我暑期还能进大厂嘛?我接下来该怎么做?对于我来说,我对于双非找实习的一个暴论就是title永远大于业务,你在大厂随随便便做点慢SQL治理加个索引,可能就能影响几千人,在小厂你从零到一搭建的系统可能只有几十个人在使用,量级是不一样的。对双非来说,最难的就是约面,怎么才能被大厂约面试?首先这需要一点运气,另外你也需要好的实习带给你的背书。有很多双非的同学在一些外包小厂待了四五个月,这样的产出有什么用呢?工厂的可视化大屏业务很广泛?产出无疑是重要的,但是得当你的实习公司到了一定的档次之后,比如你想走后端,那么中厂后端和大厂测开的选择,你可以选择中厂后端(注意,这里的中厂也得是一些人都知道的,比如哈啰,得物,b站之类,不是说人数超过500就叫中厂),只有这个时候你再去好好关注你的产出,要不就无脑大厂就完了。很多双非同学的误区就在这里,找到一份实习之后,就认为自己达到了阶段性的任务,根本不再投递简历,也不再提升自己,玩了几个月之后,美其名曰沉淀产出,真正的好产出能有多少呢?而实际上双非同学的第一份实习大部分都是工厂外包和政府外包!根本无产出可写😡😡😡!到了最后才发现晚了,所以对双非同学来说,不要放过任何一个从小到中,从中到大的机会,你得先有好的平台与title之后再考虑你的产出!因为那样你才将将能过了HR初筛!我认识一个双非同学,从浪潮到海康,每一段都呆不久,因为他在不断的投递和提升自己,最后去了美团,这才是双非应该做的,而我相信大部分的双非同学,在找到浪潮的那一刻就再也不会看八股,写算法,也不会打开ssob了,这才是你跟别人的差距。
迷茫的大四🐶:我也这样认为,title永远第一,只有名气大,才有人愿意了解你的简历
双非本科求职如何逆袭
点赞 评论 收藏
分享
评论
点赞
8
分享

创作者周榜

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