Processing math: 100%

随笔分类 -  数据结构

摘要:bitset是什么 bitset是一个神奇的库,经常可以在你觉得过不了的时候帮你优化掉一个64或者32的常数,帮你成功卡过去 定义: bitset < 10 > s 但是要注意,bitset中下标和我们理解的数字顺序是相反的,例如当你把s用一个字符串赋值的时候: string st = "10010 阅读全文
posted @ 2021-07-18 21:52 cminus 阅读(68) 评论(0) 推荐(0) 编辑
摘要:是一道比较神仙的数据结构(我自己肯定想不出来) 这个查询其实是比较难处理的,对于一段询问区间[l, r],每一个矩形和其他的都是可能相互联系的 但是可以注意到区间的范围非常小,是[0, 2000]之间,所以可以考虑对每一个1×1大小的方格进行处理,可以发现方格的数量是2000*2000个,是一个可以 阅读全文
posted @ 2021-05-15 14:20 cminus 阅读(406) 评论(0) 推荐(0) 编辑
摘要:官方题解传送门 B 系数 这一题的重点就在于1和-2在模3下是同余的,所以这一题的(x2+x+1)2(x22x+1)2在3下是同余的,题目就转化成了求(x21)2n的第k项系数,用二项式定理可知,就是(1)C(2n,k),用Lucas求解即可 #include < 阅读全文
posted @ 2021-03-01 16:46 cminus 阅读(120) 评论(0) 推荐(0) 编辑
摘要:很容易想到离线的做法,倍增往上找,然后整个dfs一遍,但是需要用到树状数组 顺便,求log2(x)千万别写log(x) / log(2),精度会出问题,直接写log2(x)就行了 #include <bits/stdc++.h> using namespace std; const int N = 阅读全文
posted @ 2020-12-06 17:55 cminus 阅读(277) 评论(0) 推荐(0) 编辑
摘要:新做了两道题居然和之前套路是一样的,就不重复了 有趣的是 while (!s.empty() && a[s.top()] < a[i]) 这个循环里,< 和 <=这两个都可以,模拟了一下发现,当你想把一个数字入栈的时候,如果前面一个数字和当前这个一样,虽然当前这个数字不能向前搜到最深,但是前一个数字 阅读全文
posted @ 2020-03-11 19:34 cminus 阅读(174) 评论(0) 推荐(0) 编辑
摘要:从左往右扫,找到比第i个小的第一个数字,l[i] = l[last] + (i - last) * m[i],用单调栈O(n)维护这个过程,再从右往左扫,同理可以算出r数组,注意一下long long #include <bits/stdc++.h> using namespace std; con 阅读全文
posted @ 2020-02-27 17:10 cminus 阅读(104) 评论(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) 编辑

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