牛客网寒假算法基础训练营
算法题2020
Buyi.
努力进大厂
展开
-
牛客练习赛58 D.迷宫(dp)
题目链接:https://ac.nowcoder.com/acm/contest/4090/D 刚开始我使用的是dfs来搜索,结果tle了 看了题解发现这题使用dp,和寒假训练3里面A牛牛的DRB迷宫差不多,也是穿着DFS衣服的DP 另一题链接:https://blog.csdn.net/littlegoldgold/article/details/104236712 这题我自己用dp写,出了不少...原创 2020-03-01 23:23:29 · 294 阅读 · 0 评论 -
牛客 训练赛58 C.矩阵消除游戏(01枚举)
题目链接:https://ac.nowcoder.com/acm/contest/4090/C #include<iostream> #include<cstdio> #include<string.h> #include<algorithm> using namespace std; int n,m,k; int a[20][20]; long ...原创 2020-03-01 19:04:09 · 345 阅读 · 0 评论 -
牛客小白月赛22 H.货物种类(差分+区间变化+扫描)
题目链接:https://ac.nowcoder.com/acm/contest/4462/H 这道题目我理解了做法之后,只想说出题人牛逼 题解为什么要去重,然后新排序;题解的真正意思;都值得去思考 (我感觉这道题目也没用多少差分数组呀,感觉就是样子像差分数组) 思路我都注释在代码里了 #include<iostream> #include<cstdio> #include...原创 2020-02-25 20:20:50 · 233 阅读 · 0 评论 -
寒假集训4 I.匹配星星(multiset+贪心)
题目链接:https://ac.nowcoder.com/acm/contest/3005/I 感觉这一题并不难,但过的人不多(我连看都没看呜呜呜) 发现到z只会为0和1,这一题就好做了 先对x进行一波排序,然后因为z只有两种情况0和1,对z进行讨论,如果z=0则让它进行multiset中;如果z=1,那么就在当前multiset中进行查找比它的y小的最大的y进行匹配(因为后面即使还有z=0的点j...原创 2020-02-22 23:28:34 · 123 阅读 · 0 评论 -
寒假集训4 H.坐火车(树状数组)+树状数组整理
题目链接:https://ac.nowcoder.com/acm/contest/3005/H 官方题解一开始没有看懂 还是搜到的一个题解才开始明白(真难想) 直接给链接了 题目讲解https://blog.csdn.net/Q_1849805767/article/details/104275449 树状数组的讲解:https://www.cnblogs.com/xenny/p/973960...原创 2020-02-20 19:54:22 · 348 阅读 · 0 评论 -
寒假集训3 G.牛牛的Link Power II(线段树/分块)
题目链接:https://ac.nowcoder.com/acm/contest/3004/G ** 第一种做法:分块 ** 参考:https://blog.nowcoder.net/lamkip 下面是我截取参考博主的图(不是原创!!!是截图来的上面是链接) 博主代码: #include<bits/stdc++.h> #define maxn 100010 #define Mod ...原创 2020-02-19 22:46:28 · 167 阅读 · 0 评论 -
寒假集训3 B.牛牛的DRB迷宫II(二进制构造)
题目链接:https://ac.nowcoder.com/acm/contest/3004/B 这道题目我感觉很难语言表述清楚,我也是看了很久的题解和别人写的题解才明白,只能自己慢慢理解,太难想了 这是我看到一个同学写的,看到这个我才突然明白,为什么m要等于30, 如果第i位上为1,则其下面一个必定为B(a[i+1][i]==‘B’),让它可以从下面一排直接过去,因为只有这样才可以让2^i处为...原创 2020-02-19 20:06:05 · 262 阅读 · 0 评论 -
寒假集训6 C.汉诺塔(Dilworth+最长下降序列)
题目链接:https://ac.nowcoder.com/acm/contest/3007/C题解做法: Dilworth定理:一个序列中,连续上升子序列的最小数目(组数)=最长下降序列的长度,反之也成立。 #include<iostream> #include<cstdio> #include<algorithm> using namespace std; ...原创 2020-02-17 21:13:39 · 142 阅读 · 0 评论 -
寒假集训6 B.图(图论)
题目链接:https://ac.nowcoder.com/acm/contest/3007/B 这道题关键还是怎么去处理环的问题 本题代码应该有三种写法: 记忆化搜索两种写法 还有一种是我在看AC人的题解发现好多人用了一个叫tarjan的算法,我百度了一下没看懂(哭了),这个留在以后学习过程中再补充吧 第一种官方题解做法: #include<iostream> #include<...原创 2020-02-15 21:59:47 · 90 阅读 · 0 评论 -
寒假集训5 B.牛牛战队的比赛地(三分)
题目链接:https://ac.nowcoder.com/acm/contest/3006/B 三分做法讲解:https://blog.csdn.net/huzujun/article/details/81187455 https://www.cnblogs.com/sugewud/p/9819304.html 本题可以这么理解,有唯一一个距离最小值(也就是我们要找的那个点),其左右都比它大...原创 2020-02-14 14:03:18 · 198 阅读 · 0 评论 -
寒假集训5 F.碎碎念(dp)
题目链接:https://ac.nowcoder.com/acm/contest/3006/F #include<iostream> #include<cstdio> using namespace std; #define maxn 100005 #define mod 1000000007 int q; int x; int l,r; long long dp[11...原创 2020-02-14 13:38:39 · 141 阅读 · 0 评论 -
寒假集训5 H.Hash(哈希函数)
题目链接:https://ac.nowcoder.com/acm/contest/3006/H 本题注意大于原串,且长度为6 #include<iostream> #include<cstdio> using namespace std; int Hash(char str[]) { int res = 0; int len=strlen(str); ...原创 2020-02-13 23:25:52 · 108 阅读 · 0 评论 -
寒假集训2 I.建通道(二进制位运算)
题目链接:https://ac.nowcoder.com/acm/contest/3003/I 知识点准备: (图片来自:https://blog.csdn.net/qq_39416311/article/details/102762635) 官方题解: #include<iostream> #include<cstdio> #include<algorit...原创 2020-02-12 21:26:52 · 115 阅读 · 0 评论 -
寒假集训4 F.树上博弈+G.音乐欣赏(思维)
本题主要公式的推导: 两种解法: 第一种:直接利用公式 #include<iostream> #include<cstdio> using namespace std; int main() { int n; cin>>n; double sum=0; double res; int temp; for(int i=1;i<=n;i++) ...原创 2020-02-12 19:21:56 · 98 阅读 · 0 评论 -
寒假集训4 D.子段异或(前缀和)
这一题我自己的写法一开始WA(没考虑长度l=r情况) 后来超时了(从长度为1开始依次遍历) 看了官方题解也没有看懂(我太弱了) 最后看了讨论区的题解终于看懂了 本题做法是利用异或前缀和来寻找子段异或为0 先记录下每个i位置处的前缀和 比如我们现在要取[l,r]范围内的字段,使得a[l]⊕a[l+1] ⊕a[l+2]…⊕a[r]为0,即让(前缀和数组为dp) dp[l-1]=dp[r]即可,这里...原创 2020-02-11 21:43:27 · 155 阅读 · 0 评论 -
寒假集训4 E.最小表达式(贪心+大数)
刚开始看题目,看到数可能达到500000个字符,直接去查了大数模版,直接用了一个sort排序,每次将最小的放在前面当首位,每一次对每一个数都做:ans=ans*10+v[i];处理,最后发现既爆内存,又超时了。 这里给出在网上找的一个大数模版(方便以后用):https://www.cnblogs.com/zhengbin/p/4368182.html 大数模版应该也很难装下500000个字...原创 2020-02-11 20:46:16 · 107 阅读 · 0 评论 -
寒假训练3 I.牛牛的汉诺塔(记忆化搜索)
本题直接用题给的递归的话会超时 n最大为60,可以试试打表(我自己试了一下,特别长时间就放弃了) 题解方法是利用一个结构体数组保存每一个已经求得的dp[n][a][b][c]状态,如果在递归过程中再遇到的话直接调用就行 #include<iostream> #include<cstdio> #include<string.h> using namespace...原创 2020-02-09 16:41:20 · 225 阅读 · 2 评论 -
寒假训练3 A.牛牛的DRB迷宫I (DP/BFS)
一开始使用dfs,直接超时。 后来改为bfs,用vis记录每一个点经过的次数,防止多次进入队列导致超时。 (最后和题解一比,感觉自己这种做法好憨) BFS AC代码: #include<cstdio> #include<iostream> #include<string> #include<queue> using namespace std; c...原创 2020-02-09 16:32:21 · 183 阅读 · 0 评论 -
寒假集训官方题解汇总
寒假训练1:https://ac.nowcoder.com/discuss/364600 寒假训练2:https://ac.nowcoder.com/discuss/364961原创 2020-02-12 19:44:00 · 168 阅读 · 0 评论 -
寒假集训1 I.nico和niconiconi (dp)
本题用了string类型中的substr函数: 用法:s.substr(起点,长度); 本题需特别注意数据大小要开long long 注意动态规划时状态的继承 dp[i]=dp[i-1]; 注意特别讨论 i3、i5、i==9的情况,不讨论的话牛客上可以通过,但是用vs无法运行出正确答案 #include<iostream> #include<cstdio> #inclu...原创 2020-02-05 23:03:01 · 132 阅读 · 0 评论 -
寒假集训1 H.nozomi和字符串 (贪心/尺取法)
出题人解答: 参考题解区大佬解答: 两种做法: 第一种:尺取法 尺取法:例题+讲解:https://blog.csdn.net/lxt_lucia/article/details/81091597 //尺取法 #include<iostream> #include<cstdio> #include<string> using namespace std; in...原创 2020-02-05 17:53:44 · 221 阅读 · 0 评论