自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 第四章 Text

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

2023-05-29 09:20:46 848

原创 第一章 PDF语法

Developing with PDF第一章 PDF语法

2023-02-12 15:58:31 1158

原创 LeetCode每日一题(2022/2/12)

1020. 飞地的数量思路:dfs找出每个连通块的数量,如果一个连通块所有点都不在边界答案就加上这个连通块内所有点。代码:class Solution {public: bool st[510][510] = {0}; vector<int> dx = {-1, 0, 1, 0}, dy = {0, 1, 0, -1}; void dfs (int n, int m, int x, int y, bool &f, int &cnt,ve

2022-02-12 10:47:05 290

原创 LeetCode每日一题(2022/2/11)

1984. 学生分数的最小差值先排序,之后看第i个人和第i+k-1个人分数的差值,取最小值即可class Solution {public: int minimumDifference(vector<int>& nums, int k) { sort(nums.begin(), nums.end()); int m = 1e6; for(int i = 0; i + k - 1 < nums.size(); ++ i)

2022-02-11 18:19:26 204

原创 LeetCode第 279 场周赛

2164. 对奇偶下标分别排序直接奇偶分开排序再合并即可,偶数位升序,奇数位降序排列,最后像归并一样将两个数组合成一个数组。class Solution {public: vector<int> sortEvenOdd(vector<int>& nums) { vector<int> a, b; for(int i = 0; i < nums.size(); ++ i) if(i % 2

2022-02-11 18:11:16 265

原创 我的C++ primer笔记(第II部分,完善中)

文章目录前言第II部分 C++标准库第八章 IO库8.1 IO类8.2 文件输入输出8.3 string流第九章 顺序容器第十章 泛型算法第十一章 关联容器第十二章 动态内存前言本文是完全写自己看的《C++ primer》笔记,内容写的很快,所以可能有较多遗漏,这是第II部分,第一部分请移步我的C++ primer笔记(第I部分)第II部分 C++标准库第八章 IO库C++不直接处理输入输出,而是通过一族定义在标准库中的类型来处理IO。这些类型支持从设备读取数据、向设备写入数据的IO操作,设备可

2022-02-09 17:23:56 921

原创 我的C++ primer笔记(第I部分)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言第一章 开始第I部分 C++基础第二章 变量和基本类型2.1基本内置类型2.1.1算数类型2.1.2类型转换2.1.3字面值常量2.2变量2.2.1变量定义2.2.2声明变量和定义的关系2.2.3标识符2.2.4名字的作用域2.3复合类型2.3.1引用2.3.2指针2.3.3 理解符合类型的声明2.4 const限定符2.4.1const的引用2.4.2指针和const前言本文是完全写给自己看的《C++ primer》笔记

2022-02-06 14:30:39 4089 8

原创 快速傅里叶变换(FFT)

FFTFFTFFT是在nlognnlognnlogn的时间复杂度内来解决两个多项式卷积的问题多项式性质:用图像上的任意nnn个不同点,可唯一确定一个n−1n-1n−1次多项式FFTFFTFFT是特殊取nnn个点,将多项式表示法转换为点表示法设A(x)=a0x0+a1x1+a2x2+...+an−1xn−1A(x)=a_0x^0 + a_1x^1 + a_2x^2 + ... +a_{n-1}x^{n-1}A(x)=a0​x0+a1​x1+a2​x2+...+an−1​xn−1取nnn个点,是复数域的

2021-08-18 15:22:40 2545 1

原创 狄利克雷卷积

积性函数∀gcd(a,b)=1\forall gcd(a,b)=1∀gcd(a,b)=1互质,f(ab)=f(a)f(b)f(ab)=f(a)f(b)f(ab)=f(a)f(b),则我们称f(x)f(x)f(x)是一个积性函数凡是积性函数,都可以用线性筛法来求

2021-06-17 20:36:06 530

原创 博弈论与sg函数

nim游戏nim游戏给定 n 堆石子,两位玩家轮流操作,每次操作可以从任意一堆石子中拿走任意数量的石子(可以拿完,但不能不拿),最后无法进行操作的人视为失败。问如果两人都采用最优策略,先手是否必胜。结论:所有石子进行异或运算,结果为0则为必败态,不为0则为必胜态证明:假设n堆石子分别有a1,a2,...,ana_1,a_2,...,a_na1​,a2​,...,an​个,他们进行异或运算之后结果x=a1⊕a2⊕...⊕anx=a_1\oplus a_2\oplus ...\oplus a_n

2021-06-07 10:00:12 151

原创 线性基笔记

线性基在线性代数中,对于向量组a1,a2,...,ama_1,a_2,...,a_ma1​,a2​,...,am​我们把其张成空间的一组线性无关的基称为该向量的线性基,用途快速查询一个数是否可以被一堆数异或出来快速查询一堆数可以异或出来的最大/最小值快速查询一堆数可以异或出来的第k大值性质原数列里的任何一个数都可以通过线性基里的数异或表示出来线性基里任意一个子集的异或和都不为0一个数列可能有多个线性基,但是线性基里数的数量一定唯一,而且是满足性质一的基础上最少的证明性质二:如果

2021-06-02 20:12:35 95

原创 欧拉定理与扩展欧拉定理

欧拉函数欧拉函数的求法等请看这里,本篇只讲述推论本文大部分来自知乎Pecco,供自己复习使用1、若ppp是质数则φ(pn)=pn−1(p−1)\varphi (p^n)=p^{n-1}(p-1)φ(pn)=pn−1(p−1)在不大于pnp^{n}pn的正整数中,只有p、2p、3p、...、p∗pn−1p、2p、3p、...、p*p^{n-1}p、2p、3p、...、p∗pn−1总共pn−1p^{n-1}pn−1个所以φ(pn)=pn−pn−1=pn−1(p−1)\varphi (p^n)=p^n

2021-06-01 20:41:11 178

原创 中国剩余定理

前置知识:求逆元中国剩余定理 (Chinese Remainder Theorem, CRT) 可求解如下形式的一元线性同余方程组(其中 n1,n2,n3,...,nkn_{1},n_{2},n_{3},...,n_{k}n1​,n2​,n3​,...,nk​ 两两互质):{x≡a1(mod n1)x≡a2(mod n2)...x≡ak(mod nk)\left\{\begin{matrix}x\equiv a_{1}(mod\ n_{1})\\ x\equiv a_{

2021-05-29 17:28:28 98

原创 求逆元的三种方法

在数论中如果ab≡1 mod pab\equiv 1\ mod\ pab≡1 mod p,我们称a、b在模p的情况下互为乘法逆元。在取模运算中加减法和乘法都是封闭的即(a + b) % p = a % p + b % p(a - b) % p = a % p - b % pa ×\times× b % p = a % p ×\times× b % p但是遇到除法就麻烦了,除法运算对取模运算不封闭,且运算过程中会产生小数,于是就引入了逆元这个概念,a、b在

2021-05-29 17:06:22 2208

原创 BSGS、EXBSGS

大步小步算法英文名: baby-step gaint-step (BSGS) .该算法可在Θ(p)\Theta \left ( \sqrt{p} \right )Θ(p​)的时间复杂度内求解ax≡b mod pa^{x} \equiv b\ mod\ pax≡b mod p,其中ppp是个质数,方程的解xxx满足0≤x≤ p0 \leq x \leq\ p0≤x≤ p令x=A⌈p⌉−Bx=A\left \lceil \sqrt{p} \ri

2021-05-29 11:47:22 187

原创 1513C. Add One

1513C. Add One具体代码如下#include<bits/stdc++.h>using namespace std;const int N = 200010, mod = 1e9 + 7;int n, m;int dp[N][10], sum[N];void init(){ dp[0][0] = 1, dp[0][1] = 1, sum[0] = 2; for(int i = 1; i < N; ++ i) for(int j = 0; j &l

2021-05-27 10:27:54 152

原创 C. Phoenix and Towers

C. Phoenix and Towers题意:给n个大于等于1且小于等于x的高度值,将它们分配给m个位置,每个位置的高度为分配的数值之和,要使得m个位置两两之间高度差不超过x。思路:假设这m个位置都合法填入,如果再插入一个不大于x的数,加到最小的数上边有两种情况:一:最小的数 + 新插入的数大于最大值,倒数第二小的数变成了最小的数,因为新插入的数小于等于x,所以新的最大的数减去当前最小的数(也就是原来第二小的数一定大于等于x);二、最小的数 + 新插入的数小于等于最大值,那么序列的最大差值可能会减小,

2021-05-26 22:32:48 131

原创 平衡树一、替罪羊树

简介替罪羊树,英文名 Scapegoat Tree,是平衡树里思路最为简单的一个基本操作和二叉搜索树基本相同,只是在树不平衡的时候暴力重构存储结构struct Node{ int l, r; //左右儿子 int val; //值 //结点数量(包含已删除但位进行重构的树的结点)、真实结点数量 int size, fact; bool exist; //判断点是否存在,不存在为false}tr[N];建立新结点int get_node(i

2021-05-20 20:14:51 417 1

原创 可持久化数据结构

可持久化数据结构一、什么数据结构能做可持久化二、可持久化Trie一、什么数据结构能做可持久化二、可持久化TrieTrie的可持久化例子最大异或和具体代码#include<bits/stdc++.h>using namespace std;const int N = 600010, M = N * 25;int n, m;int s[N];int tr[M][2], max_id[M];int root[N], idx;void insert(int i.

2021-05-17 15:47:42 102

原创 质数距离

质数距离因为U和R的范围在2^31 - 1内,数据太大无论时间和空间都会超,我们需要找到其它的性质如果一个数d能整除n,则n / d也能整除n,这就让我们发现了一个性质,我们只用筛出2 ~ sqrt(n)中的所有质数,然后再用埃氏筛法筛除[L, R]内的所有约数,即之前筛出的质数的倍数,这样我们只用筛到sqrt(2 ^ 31)内的质数也就是5w之内的质数,大大降低消耗的时间和空间这里有一个小技巧就是求[L, R]中第一个是p的倍数,即l / p上取整的数用(l + p - 1) / p * p1、

2021-05-07 18:21:16 198

原创 数学题单

共32题,持续更新中质数试除法判定质数分解质因数筛质数哥德巴赫猜想夏洛克和他的女朋友质数距离阶乘分解约数试除法求约数约数个数约数之和最大公约数欧拉函数欧拉函数筛法求欧拉函数快速幂快速幂序列的第k个数越狱快速幂求逆元扩展欧几里德算法扩展欧几里德算法线性同余方程中国剩余定理表达整数的奇怪方式高斯消元高斯消元解线性方程组高斯消元解异或线性方程组求组合数求组合数 I求组合数 II求组合数 III求组合数 IV满足条件的01序列容

2021-05-07 17:38:52 95

原创 树的最长路径

树的最长路径具体代码如下#include<iostream>#include<cstring>using namespace std;const int N = 100010, M = 2*N;int n;int h[N], e[M], ne[M], w[M], idx;int ans;void add(int a, int b, int c){ e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx+

2021-05-04 14:50:47 68

原创 加分二叉树

加分二叉树具体代码如下#include<iostream>#include<cstring>using namespace std;const int N = 35;int n;int w[N];int f[N][N], g[N][N];void dfs(int l, int r){ if(l > r) return; int root = g[l][r]; cout << root <&

2021-05-01 16:47:10 80

原创 凸多边形的划分

凸多边形的划分题目数据需要用到高精度,先写一个没有高精度的写法#include<iostream>#include<cstring>using namespace std;typedef long long LL;const int N = 55, M = 35, INF = 1e9;int n;int w[N];LL f[N][N];int main(){ cin >> n; for(int i=1; i<

2021-05-01 15:46:42 309

原创 环形石子合并

环形石子合并具体代码如下#include<iostream>#include<cstring>using namespace std;const int N = 410, INF = 0x3f3f3f3f;int n;int w[N], s[N];int f[N][N], g[N][N];int main(){ cin >> n; for(int i = 1; i <= n; ++ i){ cin

2021-05-01 09:26:37 69

原创 炮兵阵地

炮兵阵地具体代码如下#include<iostream>#include<cstring>#include<vector>using namespace std;const int N = 12, M = 1 << N;int n, m;int g[110];int cnt[M];vector<int> state;int f[2][M][M];bool check(int state){ if(

2021-04-28 13:51:39 83

原创 玉米田

玉米田具体代码如下#include<iostream>#include<cstring>#include<vector>using namespace std;const int N = 14, M = 1 << N, mod = 1e8;int n, m;int g[N];int f[N][M];vector<int> state;vector<int> head[M];bool check(int

2021-04-28 11:25:17 113

原创 乌龟棋

乌龟棋具体代码如下#include<iostream>#include<cstring>using namespace std;const int N = 355, M = 41;int n, m, g[5];int f[M][M][M][M], w[N];int main(){ cin >> n >> m; for(int i = 1; i <= n; ++ i) cin >>

2021-04-27 20:13:57 92

原创 小国王

小国王具体代码如下#include<iostream>#include<cstring>#include<vector>using namespace std;typedef long long LL;const int N = 12, M = 1 << 10, K = 110;int n, m, cnt[M];vector<int> state;vector<int> head[M];LL f[N][K

2021-04-27 15:40:41 78

原创 能量石

能量石具体代码如下#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int N = 10010;int n, m;int f[N];struct Stone{ int s, e, l; bool operator < (const Stone &W){ retur

2021-04-26 19:56:11 117

原创 股票买卖V

股票买卖V具体代码如下#include<iostream>#include<cstring>using namespace std;const int N = 100010, INF = 0x3f3f3f3f;int n;int w[N], f[N][3];int main(){ scanf("%d", &n); for(int i = 1; i <= n; ++ i) scanf("%d", &w[i]);

2021-04-21 20:59:58 87

原创 股票买卖IV

股票买卖IV具体代码如下#include<iostream>#include<cstring>using namespace std;const int N = 100010, M = 110, INF = 0x3f3f3f3f;int n, m;int f[N][M][2];int a[N];int main(){ scanf("%d%d", &n, &m); for(int i = 1; i <= n;

2021-04-21 20:39:20 78

原创 大盗阿福

大盗阿福具体代码如下#include<iostream>#include<cstring>using namespace std;const int N = 100010;int n, m;int f[2][N], a[N];int main(){ scanf("%d", &m); while(m --){ memset(f, 0, sizeof f);

2021-04-21 20:07:16 74

原创 Max Sum Plus Plus HDU - 1024

Max Sum Plus Plus 具体代码如下#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int N = 1000010;int n, m;int a[N], f[N], last[N];int main(){ while(~scanf("%d%d", &m, &n)){ for(int i = 1;

2021-04-06 18:55:54 49

原创 你能回答这些问题吗

你能回答这些问题吗具体代码如下#include<iostream>#include<cstring>using namespace std;const int N = 500010;int n, m;int w[N];struct Node{ int l, r; int sum, lmax, rmax, tmax;//区间和、区间最大前缀和、区间最大后缀和、区间最大和}tr[N * 4];void pushup(Node &u,

2021-04-03 17:42:52 172

原创 一个简单的整数问题2

一个简单的整数问题2具体代码如下#include<iostream>#include<cstring>using namespace std;typedef long long LL;const int N = 100010;int n, m;int a[N];LL tr1[N], tr2[N];int lowbit(int x){ return x & -x;}void add(LL tr[], int x, LL c){

2021-04-03 11:38:03 90

原创 奇偶游戏

奇偶游戏一、扩展域写法具体代码如下#include<iostream>#include<cstring>#include<unordered_map>using namespace std;const int N = 40010, Base = N / 2;int n, m;int p[N];unordered_map<int, int> S;int get(int x){ if(!S.count(x)) S[x] =

2021-04-02 16:27:13 111

原创 数据结构题单

并查集合并集合连通块中点的数量格子游戏搭配购买食物链 (题解)

2021-03-31 20:23:51 94

原创 食物链

食物链一、带边权的并查集另外修改一下路径压缩的代码,让结点加上父结点距祖宗结点的距离即可//路径压缩int find(int x){ if(x != p[x]){ int t = find(p[x]); d[x] += d[p[x]]; p[x] = t; } return p[x];}完整代码如下#include<iostream>#include<cstring>using n

2021-03-31 20:17:25 127

原创 1498C — Planar Reflections

C. Planar Reflections具体代码如下#include<iostream>#include<cstring>using namespace std;const int N = 1010, mod = 1e9 + 7;int n, k;int dp[N][N][2];int solve(int cur, int k, int dir){ if(k == 1) return 1; if(dp[cur][k][dir] != -1) ret

2021-03-30 13:04:43 167

空空如也

空空如也

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

TA关注的人

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