模板
-Charlie-
这个作者很懒,什么都没留下…
展开
-
快速读写模版
快速读inline long long read(){ char ch = getchar(); long long x = 0, f = 1; while(ch < '0' || ch > '9') { if(ch == '-') f = -1; ch = getchar(); } while('0' <= ch && ch <= '9') { x = x * 10 + ch原创 2021-01-20 18:53:48 · 156 阅读 · 0 评论 -
FWT快速沃尔什变换
Fast Walsh-Hadamard Transform 就是用于解决一类卷积问题的方法。时间复杂度nlogn,求解的内容如下 可以用于求解数组A和数组B异或后能得到哪些数之类的问题(暴力枚举是n2的复杂度)void FWT(int a[],int n) { for(int d=1;d<n;d<<=1) for(int m=d&...原创 2018-08-14 18:18:04 · 402 阅读 · 0 评论 -
二维凸包模板
例题来自Hdu 1348//几何求凸包模板#include<bits/stdc++.h>using namespace std;const int maxn = 100000 + 5;const double PI = acos(-1);#define all(a) a.begin(), a.end()struct Point { int x, y; P...原创 2018-08-14 18:29:04 · 300 阅读 · 0 评论 -
快速幂模板
#include<bits/stdc++.h>using namespace std;typedef long long LL;LL fpow(LL a,LL m,LL mod){ LL ret=1; while (m){ if (m&1)ret=ret*a%mod; a=a*a%mod; m>>...原创 2018-08-14 18:29:49 · 143 阅读 · 0 评论 -
扩展欧几里德
typedef long long LL;//扩展欧几里德递归实现 版本1void exgcd(LL a, LL b, LL& g, LL& x, LL& y){ if (!b) g = a, x = 1, y = 0; else exgcd(b, a%b, g, y, x), y -= x * (a / b);}//扩展欧几里德递归实现 版本...原创 2018-08-14 18:30:37 · 209 阅读 · 0 评论 -
Treap实现名次树
插入,删除,查找的期望时间复杂度O(logn);//基于Treap实现的名次树,可以查第k大的数、某个数的rankstruct Node { Node *ch[2]; int r, v, s; Node(int val = 0) { ch[0] = ch[1] = NULL; r = rand(); v = va...原创 2018-08-14 18:35:04 · 355 阅读 · 0 评论 -
欧拉函数
计算phi(x) ,复杂度O(sqrt(n));int euler_phi(int n){ int m = (int)sqrt(n + 0.5); int ans = n; for (int i = 2; i <= m; i++)if (n%i == 0) { ans = ans / i * (i - 1); while (n...原创 2018-08-14 18:36:42 · 207 阅读 · 0 评论