
每日一题
清泠,
慢慢成长的小白白,
展开
-
每日一题 — 2020 - 05 - 11
bfs,但是有点巧妙?还是自己没理解好原本的题,没转换好题目链接解题思路:就是常规的bfs,只不过处理点的时候有点技巧(应该也不算技巧)只是让原本要出发点的dist值为0,然后存入队列中,然后排着去搜索就OK还是挺简单的,可能想的有点慢#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <queue>usi.原创 2020-05-12 20:21:48 · 196 阅读 · 0 评论 -
每日一题(牛客) — 2020 - 05 -10
最小生成树的题目,其实发现自己对一些算法的时间复杂度的计算不怎么好,还是要练一下,不过这题挺不错,是最小生成树的加强版题目链接自己的想法这题自己看大体知道是最小生成树,也知道是找与1相连的图,但是不太会整一部分是忘记最小生成树他的排序(知道是从小到大,但是那是裸最小生成树),然后就是不太会处理他的集合看大佬的思路和代码后才能白了解题思路:首先我们存储的时候要注意他是个有向图,从高到低才能走过然后是找出他们的集合,然后存储起来,这里我们要记录他的个数,因为要输出他最多到达的地方然后.原创 2020-05-10 13:09:49 · 253 阅读 · 0 评论 -
每日一题 — 2020 - 05 - 09
今天多题又是二分,不过自己又不知道,为啥看不出啥二分呢,唉,看来还是要多做题题目链接解题思路首先没看出来是二分,首先我们了来想一下为啥是二分二分的时间复杂度是logn,r大概是1e14,那么二分可以解决,二分答案还是做题少,不太知道怎么分析好这里的l是a中的最大值,r就是他们的合,然后直接套二分板子,然后我们判断分成几段即可代码:#include #include #include using namespace std;const int N = 100010;long l.原创 2020-05-09 23:31:22 · 180 阅读 · 0 评论 -
每日一题 — 2020 - 05 - 08
今天的每日一题是一个简单的bfs,还阔以,会做,不过add函数写错了,浪费了很多时间去debug题目链接解题思路:首先看到最短路程,那么就想到bfs,怎么转换为bfs问题,就是4个字符首尾相连,并且是单向的这里就是处理稍微麻烦些,需要整大小写,不过把大写多加 26 即可然后就是简单的bfs代码:#include <iostream>#include <cs...原创 2020-05-08 09:49:40 · 251 阅读 · 0 评论 -
每日一题 — 2020 - 05 - 07
今天的每日一题也挺好的,也是我不会的,增加了知识hhh首先看这个稍微简单一些的D题题目链接解题思路:这题一开始想复杂了,忘记了1可以随便切换所以任何都可以和1进行切换,慢慢换肯定能换完所以都是Yes然后看一下升级版的E题题目链接解题思路:这个题只能相邻之间的进行切换,当然还是不用管1,1和任何数gcd都是1,所以可以随便切换然后我们想如果前面有个数,比现在这个数大...原创 2020-05-07 12:28:33 · 180 阅读 · 0 评论 -
每日一题 — 2020 - 05 - 06
今天的每日一题确实有点坑,可能评测姬炸了,不过又学到最短路了题目链接推理过程:这个题有点小思维,其实也没啥,就是从起始点到每个点的距离,用白天的费用算一遍,然后用终止点到每个点的距离的费用,用黑夜的费用算一遍然后由于有个限制条件,所以我们找最小值的时候应该从后往前找。交了差不多30发,不过学到了unordered_map 以后查询就用他了代码:#include <que...原创 2020-05-06 21:35:49 · 212 阅读 · 0 评论 -
每日一题 — 2020 - 05 - 05
最近不是dp题了,感觉好了很多,今天的题也是思维暴力,但是想不太到题目链接推理过程:这个题看题解的,自己不会做,因为不太明白怎么做这个题首先可以想到规律,如果是100 这种的三位数,如果要全部存在那么就是3 * 999 ,那肯定是超出1000位了,所以从这里入手经过测试,这个题的话最多到200就可以测出,200 * 3 多,数据水一些,不过也还可以,保险起见,直接写1000当然也可...原创 2020-05-05 23:32:34 · 240 阅读 · 0 评论 -
每日一题 — 2020 - 05 - 04
昨天忙着整别的事情,看了每日一题,但是没写博客整理,所以今天整理一下,题目挺不错的,不怎么会,不过是思维暴力(带点技巧)题目链接推理过程:三角形题目,问题要求删去一个值,剩下的能组成的周长最大的三角形。这里三角形的问题用贪心的思想我也是第一次遇到,从大到小排序,3个连在一起,第一个符合的就是最大的,也可以证明(自己写下就明白了)所以我们按照这个规律来解这个题,我们之间暴力循环搜索,...原创 2020-05-05 23:27:02 · 229 阅读 · 0 评论 -
每日一题 — 2020 - 05 - 03
题目链接数学水题吧,就是胆大就OK,其实就是思维一点吧解题思路:首先拿到这个题就直接猜0,1就OK,我也不知道为什么,猜就OK(一些推理吧)然后我们先讨论第一种情况,就是k这个数之前有没有能直接取模等于0的,如果等于0那么肯定是2然后我们判断,k * 2 > n 是否成立,(这里的k,n都要+1,因为题目说的很清楚,小心)因为如果gcd不是 1 ,那么最低也是2倍的关系。最...原创 2020-05-03 10:29:15 · 169 阅读 · 0 评论 -
每日一题 — 2020 - 05 - 02
题目链接表示又不会,又学到知识了,最近又越来越菜了思路推理:首先是贪心思维题吧,首先主要把题目意思理解清楚首先分为 3 种情况,首先需要排序首先第一种,我们要分成 k 组,那么我们就找前k个字母,这里我们将他存入set里,如果他的数目 >= 2,那么我们输出 弟k - 1就OK,这是k = 2的情况,其他的也符合,多想一下然后是第二种情况,第二种情况,就是前面的值都相同,...原创 2020-05-02 21:10:27 · 208 阅读 · 0 评论 -
每日一题 — 2020 - 05 - 01
题目链接打表找规律题,感觉还是不错的,又涨知识了推理过程:这里我们需要知道0! 是 1,那么就OK了这个题首先需要知道规律(这里还是白嫖师哥的一波)代码:#include <iostream>using namespace std;int main(){ int n, mod; scanf("%d%d",&n,&mod); if (n...原创 2020-05-01 11:20:22 · 263 阅读 · 0 评论 -
每日一题 — 2020 - 04 -30
题目链接又是dp,真的是我不会什么最近就整什么,哈哈哈,不过也没关系,可以学习一下,不过过段时间要系统的学一下推理过程:这个意思就是说把所有的东西分成2堆,求他们的差值最小转换一下也就是求一半时的值的最大值(01背包)然后直接套01背包就OK,这里第一层循环是代表每一个的值,第二层循环是可以取的值来变换相关代码:#include <iostream>#incl...原创 2020-04-30 11:28:24 · 277 阅读 · 0 评论 -
每日一题 — 2020 - 04 - 29
题目链接思维题,主要是找规律,最近不知道怎么回事,感觉做题不耐烦,总是不愿意去想思路推理:拿到这个题,看到0变成01, 1变成10,一开始知道是有一些规律,但是没找出来一开始还想着有什么算法?还是练的太少了这个题正常的思路是上下连接推理:(看师哥写的)所以,直接按照这个写就OK了代码很简单,就是想没想到(很喜欢这样的题,但是感觉这个题自己应该能做出来)...原创 2020-04-29 19:18:32 · 158 阅读 · 0 评论 -
每日一题 — 2020 - 04 - 27
题目链接应该是昨天的题,今天都28号了才发,昨天确实有点写不完,所以今天发好了,这个题是数学 + 思维,主要感觉以后写题解不能光写解题思路了推理过程:(新加的试试)首先这题让求一个数 x,他对a, b取模后(顺序不同),得到不同的数,问一个区间里有多少个问到区间里有多少个,我们首先先想到的是前缀和那种表达方式(一开始没想到,可能做的太少了),然后只要我们能表示成前缀和的形式就OK,主...原创 2020-04-28 12:09:56 · 239 阅读 · 0 评论 -
每日一题 — 2020 - 04 - 26
题目链接这道题之前做过比这个难的,但是今天这个感觉自己傻了解题思路:可以更暴力,不过我这里采用了别的手段(方法)就是x, y两个数可以表示成c * i , c * j, c是他们的最大公约数,所以i, j是互质的,然后我们可以求出c就是x, 那么ijx 就是y,所以我们如果知道i 就会知道 j ,所以我们遍历,然后找 j 就OK这里需要注意的是m%n 可能不是 0,这里是我傻了...原创 2020-04-26 09:57:51 · 186 阅读 · 0 评论 -
每日一题 — 2020 - 04 - 25
题目链接这个题感觉以前做过类似的,不过忘记了,优先队列真是没想到,又学习到新知识了解题思路:这个题感觉主要是思维吧,主要是怎么处理这个最小值首先想个简单了,只有一个数组,我们选出k个,选出最小值的最大那么我们从大到小排序,那么第k个就是最小值中最大的然后如果有2个数组,我们怎么处理(结构体)首先第一个我们还是那么处理,不过到k的时候我们就会取值,然后我们删除前面一个值,那么当前...原创 2020-04-25 16:43:45 · 235 阅读 · 0 评论 -
每日一题(牛客) — 2020 - 04 - 24
题目链接这个题按照道理说应该会做,不过太着急了,思路乱,看了大佬写的nlogn的离散化,不太会,到时候再看看解题思路:这个题暴力即可,不过有更好的做法只需双重for循环,然后判断前面的点是否符合当前点的条件(就是公式是否成立)这里的公式显然会爆到,然后运用数学知识,对两边同时取对数(对数为正),这样符号大小不变,然后我们将求出的值按照动态规划的形式加起来即可记得取模代码:#...原创 2020-04-24 14:43:22 · 236 阅读 · 0 评论 -
每日一题 — 2020 - 04 - 23
题目链接这题自己不会,但是大体知道知识点,回去还需要好好思考一下才行,感觉最近不是dfs就是二分解题思路:这个题应该解法挺多,不过想用二分来试试,最近二分挺多的。首先二分需要满足单调性,这里我们肯定要先求出前缀和,然后我们发现的规律是,当前的前缀和,只要前面有个点的前缀和小于他,那么这一块就满足。数据范围那么大,不是O(n) 就是O(nlogn),二分答案的话肯定是nlogn,不过...原创 2020-04-23 16:16:39 · 171 阅读 · 0 评论 -
每日一题(牛客)— 2020 - 04 - 22
题目链接二分答案,一脸懵逼,感觉大佬都太强了,自己都想不到,看了大佬们的代码,学习了一下思想和知识点(二分没错,今天又进新坑)解题思路:首先这个二分就很不好想(对于自己),这个二分,他求的是对于一个数 x, 有多少个符合条件满足的,如果满足的个数 res >= m, 那么这个 x 肯定是选取小了,否则就是选取大了。然后我们如何去控制他的左右边界,这里看大佬的代码学到个技巧,让他...原创 2020-04-23 11:57:04 · 194 阅读 · 0 评论 -
每日一题(牛客)— 2020 - 04 - 21
题目链接好像格式出了点问题,但是问题不大,这题会做,不过wa了好多,果然好久不做多组输入的题就是容易wa解题思路:首先我们利用差分的思想处理b数组(也就是发功),这里存储和差分一样,不过我们处理的时候是从后往前,因为他每次都是从1开始然后我们剩下的就是求出a[i], 循环从后向前在处理差分数组的时候就可以求出a[i]的值然后我们对 id1 与 id2 赋初值 - 1, 然后从后向前...原创 2020-04-23 10:35:09 · 175 阅读 · 0 评论 -
每日一题 — 2020 - 04 - 22
题目链接贪心题,还可以,前段时间做的很多贪心题,所以感觉今天的挺简单的,不过,一开始cmp写错了,然后段错误一发(hhh)解题思路:关键是如何排序吧,是按照 l 从小到大即可。然后我们只需要找出他们之间的空隙,也就是 左端点与当前最大的 x 之间的差值。代码:#include <iostream>#include <cstdio>#include &...原创 2020-04-22 09:32:53 · 235 阅读 · 0 评论 -
每日一题 — 2020 - 04 - 21
题目链接规律题,说实话一开始没看出来,然后才看出来是递推式(斐波那契),还是太菜了(又学到了新知识)解题思路:首先如果看不懂题意可以先画图,画着画着就可以发现,下面的图形是原本上面两个图形的拼接然后就直接斐波那契递推式就OK了不过最上面有个固定不变的2,画图即可看出代码:#include <iostream>#include <cstdio>us...原创 2020-04-21 10:59:20 · 249 阅读 · 0 评论 -
每日一题 — 2020 - 04 - 20
题目链接这题主要是推数学公式,然后进行计算就OK了,没想到的是竟然取模掉坑了,可能好久没做取模题了解题思路:这个题如果暴力的话n^2,肯定会超时的,所以最好是nlogn或n所以我们之间将式子展开,结果展开后发现规律与式子 第一项 (n - 1)* a[0] * a[0] - 2 * a[0] * (a[1] + a[2] + ....a[n]) 第二项 (n - 1)* a[...原创 2020-04-20 09:30:45 · 142 阅读 · 0 评论 -
每日一题 — 2020 - 04 - 19
题目链接可以看出是差分和前缀和(差分的话自己并不熟练),这题主要是对前面知识进行回顾了差分和前缀和的知识。解题思路:首先这个先利用差分来记录每个点的值,这里利用差分,然后类似于前缀和的形式来求出每个位置的值然后我们利用前缀和(二维前缀和)然后最终求出即可这里需要注意的是:(注意形式)二维前缀和:a[i][j] = a[i][j] + a[i - 1][j] + a[i][...原创 2020-04-20 09:13:43 · 142 阅读 · 0 评论 -
每日一题 — 2020 - 04 - 18
感觉自己又菜了,首先二分答案没看出来,然后二分的时候,漏掉左边界是0,太菜了。题目链接解题思路:直接二分答案,l = 0 , r = 1e9然后判断条件时,我们要左取右不取(根据实际情况来,我这块理解的也不是很好)然后直接输出l就OK主要还是多做些二分的题代码:#include <iostream>#include <cstdio>using...原创 2020-04-18 15:15:35 · 114 阅读 · 0 评论 -
每日一题 — 2020 - 04 - 17
题目链接 今天的每日一题很不错,我不会,这样有可以学到新知识了,hhh解题思路:偶数的话很好判断,只要最后一位是偶数即可对于3,这里有一个知识点,如果所有的数相加最后的值是3的倍数,那么他的值也是三的倍数(证明的话可以自己查一下)然后我们剩余的其他数字,找出一位最小的偶数排在最后,然后剩下的从小到大排即可代码:#include <iostream>#inclu...原创 2020-04-17 16:55:35 · 110 阅读 · 0 评论 -
每日一题 — 2020 - 04 - 16
题目链接实话实说一开始把这题稍微想的麻烦了一些,因为太像以前做过的题了,hhh(菜是原罪)解题思路:很简单,想三个位置不一样,想有多少种,那么直接Cn3就OK了,然后注意取模代码:#include <iostream>#include <cstdio>using namespace std;const int Mod = 1e9 + 7;l...原创 2020-04-16 16:57:23 · 115 阅读 · 0 评论 -
每日一题 — 2020 - 04 - 15
题目链接 这题也是一种思维吧(可能最近老了,思维不好),不过还可以 解题思路:首先我们思考,如何让他们的距离为偶数呢,那么如果距离一个点的距离是偶数,那么距离为偶数的点的距离都是偶数如果都是奇数,那么他们的距离也是偶数。所以我们要求出他们的点的距离,距离就随便选一个点为标准就行,然后对于偶数和奇数点,我们都Cn2就ok记得开long long代码:#include <...原创 2020-04-15 20:01:38 · 105 阅读 · 0 评论 -
每日一题 — 2020 - 04 - 14
题目链接 思维,其实也是前缀和的相关知识,就是到相对应的位置减上次保留的位置解题思路:首先我们分为3种情况,NLK,当为N时,我们x, y 都加1(x, y 分别代表LK),然后遇到相应的就–,最后我们判断当前的个数与之前个数,取最大距离值即可代码:#include <map>#include <cstdio>#include <cstring...原创 2020-04-14 21:24:11 · 139 阅读 · 0 评论 -
每日一题 — 2020 - 04 - 13
题目链接 思维题,就是记录一遍前面的记录一遍后面的,然后选取当前点时,不选当前的点,而选取他左右的最大值即可。解题思路:记录当前点前面的值,b[i],取a[i] 和mx + a [i] 的较大值即可,然后mx 改成他俩当中的较大值后面往前遍历也是如此,最终遍历取最大值即可学到知识:max({a,b,c}) 可以取最大值,库是algorithm (C++11 ) 新特性...原创 2020-04-13 18:24:48 · 129 阅读 · 0 评论 -
每日一题 — 2020 - 04 - 12
题目链接 贪心题目,还以为和之前的那题一样,结果发现不一样。解题思路:首先只有5种情况, 1 2 3 4 5,我们首先需要排下序,从大到小,因为防止出现3 1 2 4 这种 情况然后我们就开始从 x - 5 进行循环,然后判断是否有存在的空缺,如果没有就新创空间代码:#include <iostream>#include <cstdio>#incl...原创 2020-04-12 11:20:00 · 107 阅读 · 0 评论 -
每日一题 — 2020 - 04 - 11
题目链接解题思路:这题很简单啦,就是直接floor(sqrt(b)) - ceil(sqrt(a)) + 1就OK了竟然用int就好了,今天就当休息了代码:#include <iostream>#include <cstdio>#include <cstring>#include <cmath>using namespace ...原创 2020-04-11 23:54:55 · 112 阅读 · 0 评论 -
每日一题 — 2020 - 04 - 10
题目链接 并查集的题目,按照道理说自己的并查集还可以,结果今天暴露了好多不足解题思路:可以说是并查集的模板题了吧,就找有多少个点是原点(有多少个集合)然后求出多少个集合 - 1 就是答案自己的错误:首先是并查集写错了,并查集return 的是 f[x] 而不是 x然后并查集他改变其中一个节点的链接,其他的节点暂时是不改变的代码:#include <iost...原创 2020-04-10 10:08:03 · 102 阅读 · 0 评论 -
每日一题 — 2020 - 04 - 09
题目链接这题前缀和 + 双指针(指针指的比较迷),这类题型大体知道思路,毕竟柑橘这是我最熟悉的题型了(太菜了)解题思路:要求求子数组中没有和为0的子数组(可以看样例理解一下)所以我们一位一位的先去计算,首先我们先求出前缀和,然后开一个map存储当前位置的前缀和为多少,首先我们让map[0] = 1这里如果两个位置的前缀和相同,那么他们这之间的数加起来肯定为0(自己写一下就OK),...原创 2020-04-09 16:23:37 · 105 阅读 · 0 评论 -
每日一题 — 2020 - 04 - 08
知识点:前缀和前后和的题好久没做了,其实昨晚大体知道这题怎么写了,但是不知道为啥最近懒得想题,愁人,还是要多做做题(多想)。解题思路:首先我们可以发现规律,就是往前移动,那么当前位置的数(要移动的数)的前 k 个数都会自增一倍然后当前移动的数,他减小了 k 倍所以我们最初处理下前缀和和一开始的总值即可这里需要注意的是:他是必须移动的,就是不能把最初的值作为一个初始值代码:...原创 2020-04-08 10:21:19 · 136 阅读 · 0 评论 -
每日一题 — 2020 - 04 - 07
涉及BFS,我一开始还以为是最短路,人都傻了。不过自己的最短路还是不咋地解题思路:首先我们将边用邻接表的形式储存起来(双向)然后我们开始查询,让查询的点都放入队列里,并将它们的dist 设置为 -1然后我们bfs搜索然后就是bfs的模板题了,最后判断下距离就OK了还是给自己说一下,dist 再次遇到的不用处理,因为先遇到的距离就是短的代码:#include <io...原创 2020-04-08 09:43:07 · 90 阅读 · 0 评论 -
每日一题(牛客)— 2020 - 04 - 03
并查集,虽然之前做过一些题,可能好久没做了,不太会处理题目链接首先说一下思路:我们可以了解到,两个之间存在怨气值,那么我们尽量让2个有怨气值的人分到不同的地方,由于要求我们求最小是多少,也就是求最大值里的最小值。首先我们存入结构体里(不知道如果想用邻接表的话该怎么写),然后我们按照他们的怨气值从大到小排序,然后我们处理,首先看他们的根节点是否相同,如果相同,那么直接输出就OK...原创 2020-04-04 19:49:37 · 116 阅读 · 0 评论 -
每日一题(牛客) — 2020 - 04 - 01
这道题我做过类似的,但是还是不太会做,真是太菜了 (个人感觉牛客的每日一题挺好,我好多不会的,hhh)题目链接其实这题也不会,看的别的大佬的思路写的,树形DP,感觉很好(最小割的话还是不会的,过段时间去学习下)题目要求找度数为1的点(除了s), 然后要求我们让他不能到达s,那么我们就切除当前点与到s路径上边权最小的点即可,但是我就想为什么需要 f[] += min() 呢,想...原创 2020-04-01 10:07:56 · 182 阅读 · 0 评论