随笔分类 - 板子
摘要:吐个槽,我现在线段树敲得贼熟练,但是树状数组和st表这么强大的东西竟然基本不会!!!啊啊啊,我太菜了! 代码:
阅读全文
摘要:这个题就是一道树剖板子题,就是每走一步就把所有的经过点加一就行了。还有,我的树剖板子没问题!!!谁知道为什么板子T3个点!我不管了!反正这道题正常写A了。 题干: 代码: 顺便附赠树剖板子:
阅读全文
摘要:之前搞了一个树的中心,结果当时把点分治给扔下了,现在搞一搞。其实点分治的分治思想很明显,就是把树切成一个个小树,然后在重心的位置再分治就行了。 代码实现有一定困难,但就我觉得前一个函数和树刨的dfs1很像吗,详情见代码。 题干: 代码:
阅读全文
摘要:有理数取余其实不是一个单独的东西,其实就是一个费马小定理的应用,但是这个题的数据范围对于不用快读的人有点不友好,我看一个哥们用快读调了3天,然而我20分钟就做完了。 关于读入,就直接在快读中加入一个取模就行了。然后直接费马小定理,但一开始忘了无解的情况,假如b为0就是分母为0,无解。 题干: 代码:
阅读全文
摘要:这是一道简单版的AC自动机,之前我搞过一个这个东西,但是没具体学习,现在来学一下。 其实就是一个trie树上跑的kmp,每个节点存一个fail指针,指向前一次出现的地方。查询的时候直接加一起就行了。 题干: 代码:
阅读全文
摘要:manacher是一种处理字符串的算法,用来判断最长的回文串的长度. 主要思路就是要让指针跳跃就行了,mid和maxright,分别代表对称轴和最左边的位置.再搞一个存最长串的东西,来回更新答案. (其实就是乱搞暴力) 题干: 代码:
阅读全文
摘要:矩阵快速幂是一个快速幂的延伸,但实际上区别不大,主要思想是一样的. 题干: 代码:
阅读全文
摘要:三分是一种求函数的最高点的算法,好像很好做?核心思想就是每次取中点左边一点的值和右边一点的值,判断左右的函数值哪个大,然后舍掉较小的区间就行了. 我才知道这是二分求导... 题干: 代码:
阅读全文
摘要:2-sat问题主要解决的是一类二取一的问题.做法就是先建图,然后跑tarjan,然后就判断正负是否冲突,假如有冲突,就说明无解,否则就判断哪个的序号大...话说我也不知道为什么序号大就代表1. 题干: 题解:
阅读全文
摘要:裴蜀定理其实不是一种特殊的算法,他就是一个定理,来证明ax + by | gcd(x,y) 其实这个定理正确性显然,但是这个板子其实看不出来和这个定理有什么关系,这就很慌. 但是仔细一想,其实就是求出来这些数的gcd就行了,但是负数要变成正数. 题干: 代码:
阅读全文
摘要:线性基就是一种可以维护异或和的东西,我还没太懂它到底有什么用,但是很好写,而且思路也很清晰,所以板子还是很简单的。 题干: 代码:
阅读全文
摘要:#include<bits/stdc++.h>using namespace std;const int maxn = 1e7 + 5;const int MAX = 10000000;int cnt;struct node{ node *next[26]; node *fail; int sum;
阅读全文
摘要:现在正在上课,但我还是要同步更新博文。。。\滑稽 先讲一个离散化,就是把几个离的特别远的数在不影响结果的情况下,变成相近的数。倒是没什么影响,但应用在数组下标的话可以节约空间。(貌似和hash有点像) 直接拍代码 前缀和是个好东西,可以方便的操作。(每次加前一个,找区间时整体相减) 来一个矩阵前缀和
阅读全文
摘要:// 1:这是最原始的筛法,还有待优化 #define Max 1000000 bool prime[Max]; void IsPrime(){ prime[0]=prime[1]=0;prime[2]=1; for(int i=3;i>1]; void IsPrime(){ memset(prime,true,sizeof(prime)); ...
阅读全文

浙公网安备 33010602011771号