自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 快速读写模版

快速读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 157

原创 exKMP小结

exKMP小结KMP传送门用途:现有长度为n的文本串S与长度为m的模式串T,求文本串S的每一个后缀,与模式串T的最大公共长度。复杂度:空间O(n + m), 时间O(n + m)用法: 假设字符串起始下标均从1开始,那么Next[i]表示的是模式串T从i开始的后缀与其自身的最长匹配长度,而extend[i]表示的是文本串从i开始的后缀与模式串T的最长匹配长度。在读入文本串S与模式串T并且分别设置好长度n和m之后,直接调用函数exKMP()即可得到extend数组和Next数组。例题: hdu259

2021-01-03 16:26:28 283 1

原创 uva11490

注意到S&lt;=1e12,当S取到最大值时候,每个方块外部的士兵厚度仅有68041,可以考虑枚举士兵厚度求解。#include&lt;bits/stdc++.h&gt;using namespace std;typedef long long LL;const long long mod = 1e8 + 7;LL S;int main(){ while (scanf("%...

2018-08-14 19:54:11 283

原创 uva10951(多项式gcd)

类比整数辗转相除法,此题为多项式辗转相除法求最大公因多项式#include&lt;bits/stdc++.h&gt;using namespace std;const int maxn = 1e5;typedef vector&lt;int&gt; vint;int n, x, y, t, kase, a[105];vint f, g, ans;void read(int &amp...

2018-08-14 19:51:33 966

原创 uva10951(欧拉降幂)

经典的欧拉降幂问题。 欧拉降幂公式:nx mod m = nφ(m)+(x mod φ(m))这个公式当且仅当x&gt;φ(m)时成立。//欧拉降幂公式#include&lt;bits/stdc++.h&gt;using namespace std;typedef long long LL;#define MOD(x,m) (x&gt;m)?m+x%m:xint n, m,...

2018-08-14 19:49:31 438

原创 欧拉函数

计算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 &lt;= m; i++)if (n%i == 0) { ans = ans / i * (i - 1); while (n...

2018-08-14 18:36:42 208

原创 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 356

原创 扩展欧几里德

typedef long long LL;//扩展欧几里德递归实现 版本1void exgcd(LL a, LL b, LL&amp; g, LL&amp; x, LL&amp; 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

原创 快速幂模板

#include&lt;bits/stdc++.h&gt;using namespace std;typedef long long LL;LL fpow(LL a,LL m,LL mod){ LL ret=1; while (m){ if (m&amp;1)ret=ret*a%mod; a=a*a%mod; m&gt;&gt...

2018-08-14 18:29:49 144

原创 二维凸包模板

例题来自Hdu 1348//几何求凸包模板#include&lt;bits/stdc++.h&gt;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 302

原创 uva11768 Lattice Point or Not

比较经典的扩展欧几里德求整数解的问题对于两个点(x1,y1)(x2,y2),如果点为整数点,那么必定能通过扩展欧几里德求出区间中的整点个数,即对方程(y2-y1)x+(x1-x2)y=x1y2-x2y1 求解。由于此题的点精确到小数后1位,我们可以将x1,y1,x2,y2分别放大10倍,问题转变成对方程[10*(y2-y1)]x+[10(x1-x2)]y=100*(x1y2-x2y1)求解...

2018-08-14 18:26:19 191

原创 FWT快速沃尔什变换

Fast Walsh-Hadamard Transform 就是用于解决一类卷积问题的方法。时间复杂度nlogn,求解的内容如下 可以用于求解数组A和数组B异或后能得到哪些数之类的问题(暴力枚举是n2的复杂度)void FWT(int a[],int n) { for(int d=1;d&lt;n;d&lt;&lt;=1) for(int m=d&...

2018-08-14 18:18:04 403

原创 UVA11525

二分+树状数组,或线段树本题由于数据量较小 ( n = 50000 ),n(logn)^2的算法可以通过(二分加树状数组,通常解法),此处只讨论nlogn的算法(线段树的妙用) 实际上,这个问题是一个支持单点删除的查询所有数中第k大数的问题。在每次完成查询之后,要把这个数从数的集合中删除。 那么如何用线段树优化掉一个logn? 回想我们在用线段树进行单点查询的时候,其思想就是用的二分查...

2018-08-02 21:38:37 258

原创 Codeforces 877E Danil and a Part-time Job

本题的做法是dfs序线段树。1.什么是dfs序?dfs从根节点遍历整棵树的过程中经过的节点编号的顺序就是dfs序。2.如何将dfs序与线段树结合在一起?对得到的dfs序与1-n进行映射,可以得到一个初始数组num。将dfs序中的第i个节点的标号记为x,那么num[i]表示的就是节点x上灯泡的开关情况。不难发现同一颗子树上的所有节点在dfs序中代表一个连续的区间。那么,以x为根节点子树灯泡情况的反转其

2017-10-25 00:32:24 309

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除