Processing math: 0%

随笔分类 -  思维

摘要:是一道比较神仙的数据结构(我自己肯定想不出来) 这个查询其实是比较难处理的,对于一段询问区间[l, r],每一个矩形和其他的都是可能相互联系的 但是可以注意到区间的范围非常小,是[0, 2000]之间,所以可以考虑对每一个1×1大小的方格进行处理,可以发现方格的数量是2000*2000个,是一个可以 阅读全文
posted @ 2021-05-15 14:20 cminus 阅读(406) 评论(0) 推荐(0) 编辑
摘要:场上糊了一个小时都没糊出来(我甚至写了个假算法前半个多小时还没找到反例) 因为题目最后要求我们得到的是一条链,删除的边的数量和加边的数量一样多,所以我们要让删除的边最少。又因为我们要得到的一条链肯定是由多条组合起来的,而原树是由多条链构成的,我们最少要删除链数-1条边,那么问题转换成了如何把树划分成 阅读全文
posted @ 2021-05-10 19:31 cminus 阅读(94) 评论(0) 推荐(0) 编辑
摘要:神仙题%%% 场上想了两个小时都没想出来 #include <bits/stdc++.h> using namespace std; const int N = 1e5 + 10; #define fi first #define se second #define mp make_pair #de 阅读全文
posted @ 2021-03-11 16:34 cminus 阅读(114) 评论(0) 推荐(0) 编辑
摘要:这题在场上卡了我很久,研究了一段时间题解之后觉得非常精妙,所以决定认真写一写题解 第一种方法: 就是题解方法,我们考虑对于数字串的每个数字加入哪一个串,此时第一个串末尾是t1,第二个是t2,当前这个是x x \neq t1 && x = t2 或者 x = t1 && \(x 阅读全文
posted @ 2021-02-16 16:24 cminus 阅读(56) 评论(0) 推荐(0) 编辑
摘要:用了很神奇的办法,对于每一个数,取反,暴力找它所有子集,如果dfs到的数字又是我们输入的数字,就继续取反暴力找子集 #include <bits/stdc++.h> using namespace std; const int N = (1 << 23) + 10; int a[N]; bool v 阅读全文
posted @ 2020-12-06 20:20 cminus 阅读(79) 评论(0) 推荐(0) 编辑
摘要:显然,为了让 max(b[n], c[1]) 最小,当 a[i] > a[i - 1]时,b[i] = b[i - 1] + a[i] - a[i - 1], c[i] = c[i - 1]。当a[i] < a[i - 1]时,b[i] = b[i - 1], c[i] = c[i - 1] + a 阅读全文
posted @ 2020-09-24 20:55 cminus 阅读(146) 评论(0) 推荐(0) 编辑
摘要:这道题的思路非常巧妙,如果两点之间的距离是2^k,那么就建一条长度为1的边,然后再跑一遍最短路就好了。 推的方法就是f(i, j, len) = 1 如果 f(i, k, len - 1) = 1 并且f(k, j, len - 1) = 1,其中f(i, j, len)指的是$ 阅读全文
posted @ 2020-03-14 16:53 cminus 阅读(127) 评论(0) 推荐(0) 编辑
摘要:又上分了,好像打的还可以就会懒得补后面的题 A.Kuroni and the Gifts sort一下,没什么好说的 B.Kuroni and Simple Strings 很容易(并非)可以看出最多只需要一次就可以了,举个例子假设你两次删除的分别是(())和 (),你会发现你只需要删除( ( )  阅读全文
posted @ 2020-03-04 15:53 cminus 阅读(138) 评论(0) 推荐(0) 编辑
摘要:ABC实在是没什么好说的,但是D题真的太妙了,详细的说一下吧 首先思路是对于a相等的分类,假设有n个,则肯定要把n-1个都增加,因为a都是相等的,所以肯定是增加t小的分类,也就是说每次都能处理一个分类,复杂度是O(n^2),这个思路很好写,优先队列随便搞一下就行了,但是题目中N = 2 * 1e5, 阅读全文
posted @ 2020-02-26 17:36 cminus 阅读(224) 评论(0) 推荐(0) 编辑
摘要:AB水题就不说了 C .算概率 其实也是水题,n^2的概率dp,但是我场上没看这道题(雾 简单的状态转移方程dp[n][m]记录前n道题做出m道的概率 dp[n][m] = dp[n - 1][m - 1] * p[n] + dp[n - 1][m] * (1 - p[n]); //dp[n][m] 阅读全文
posted @ 2020-02-13 22:24 cminus 阅读(164) 评论(0) 推荐(0) 编辑
摘要:刚开始想打个表... 结果我发现我理解错了题目意思,以为a,b必须是两个不同的数字,然后完全无法理解样例的3为什么是friend number...很尴尬就只能去网上找题解,才发现a,b可以相等(太菜了 其实打表也能做,但是实在是懒,这道题由于n = a * b + a + b -> n + 1 = 阅读全文
posted @ 2019-12-06 22:15 cminus 阅读(155) 评论(0) 推荐(0) 编辑
摘要:我感觉出的很好的一道题,首先不难想到(其实我刚开始没想到),加点的个数就是找已有点两两形成区间的gcd,那么问题就出在了复杂度上,每次循环哪个区间不要复杂度过高,所以运用正反两次前缀和(?好像不能这么叫)预处理一下就可以O(n)搞定了,说一下有一个让我找了一年的bug吧,我把ans的初始值设的太小, 阅读全文
posted @ 2019-12-05 20:25 cminus 阅读(301) 评论(0) 推荐(0) 编辑
摘要:我先采用了智障解法(n * n枚举...刚开始把n看成1000了还以为能过) 理所当然的t了,不过我怀疑优化一下能过?(感觉数据不太行的亚子 然后就是O(n * k * k)的解法,看到好多人快乐二分,其实完全用不到,建一个10000000的数组就ok了(我刚开始还以为会MLE 不过有几个地方要注意 阅读全文
posted @ 2019-11-28 01:20 cminus 阅读(168) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示