自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 带删除的并查集

我们可以通过给每个元素设置一个虚拟父节点,每次移动的时候操作的是实际的节点,而不是父节点即可完成。因为这个时候操作的节点都是叶子节点,不会有副作用。也移动过去,这不是我们想要的。(这里借用luogu题解区的图片)开始,因此在输入输出的时候有特殊处理。所在的集合,会同时也把1的儿子节点。操作1和3是基本的并查集的操作.若使用朴素的并查集,把节点。

2023-12-01 20:21:35 140

原创 四边形不等式优化DP

【代码】四边形不等式优化DP。

2023-11-25 22:08:15 197

原创 线段树题目

一排灯初始是关闭的,每次可翻转一个区间的等的状态,每次询问一个区间内亮的等的个数。给一个01序列,支持区间修改为0或1,区间取反,询问区间1的个数,询问区间最多连续1的个数。01序列,支持单点修改一个点,询问区间内的最长无相相邻数字连续串的长度。支持区间修改,询问区间内不同颜色个数。二维坐标系,支持添加点,删除点,询问一个点最左边的点的坐标。处减去末项. 转化为区间修改,区间求和的问题。支持区间加,询问区间平均数,询问区间方差。支持区间加,区间修改,询问区间最大值。支持区间加,区间乘,求区间和。

2023-11-21 18:45:18 78

原创 基环树(pseudotree)入门

给定一个图,N个点N条边,只有一个环,输出换上的点。

2023-11-19 17:17:02 141

原创 基本计算器问题

这里面设计到的一个共同的问题就是计算一个表达式的值的问题,我们可以使用递归或者栈的方式来解决这个问题。实际上递归也是栈的应用,两种方法是一样的。这个是vip题目,可以在这里。看到替代的题目,是一样的。支持加减乘除和括号操作。

2023-10-26 13:34:40 79

原创 Leetcode 高频算法题

常考的题目

2023-10-25 18:12:11 144

原创 LeetcodeN数之和问题(N sum问题)

做法: 先排序,然后枚举i, j, 然后双指针算法,时间复杂度为O(N^3)分组,然后使用哈希表统计,时间复杂度为O(N^2)排序,然后双指针. 时间复杂度为O(N^2)题目要求去掉重复的方案.

2023-10-25 17:47:07 184

原创 Leetcode股票买卖问题

Leetcode上一类股票交易问题,分为可交易一次/多次/K次等等,以及有无手续费,冷冻期等等。在每一天,你可以决定是否购买和/或出售股票。dp[i][0]表示第i天交易后手里没有股票的最大利润。dp[i][1]表示第i天交易后手里持有股票的最大利润。注意到每一个状态只和上一天有关,可以优化一下代码。你也可以先购买,然后在。即可,不间更新ans。

2023-10-25 15:52:56 115

原创 Leetcode链表问题汇总

假设链表存在环,则当第一个指针走到环入口时,第二个指针已经走到环上的某个位置,距离环入口还差 x 步。由于第二个指针每次比第一个指针多走一步,所以第一个指针再走 x步,两个指针就相遇了。用两个指针从头开始扫描,第一个指针每次走一步,第二个指针每次走两步。否则如果两个指针相遇,则说明存在环。比较简单的题目,头结点标示的个位数字,因此直接模拟就可以了。注意链表相关的题目可以添加一个虚拟头节点,用来简化一些边界情况的处理。复杂度分析,由于慢指针走的总步数小于链表总长度,复杂度为。

2023-10-24 23:04:07 270

原创 PE157

题意:求1a+1b=p10n\frac{1}{a} + \frac{1}{b} = \frac{p}{10^n}a1​+b1​=10np​的正整数解(1≤n≤9)(1 \leq n \leq 9)(1≤n≤9)对原式进行变化1a+1b=p10n\frac{1}{a} + \frac{1}{b} = \frac{p}{10^n}a1​+b1​=10np​1a+1b=p10n\frac{1}{a} + \frac{1}{b} = \frac{p}{10^n}a1​+b1​=10np​abp2−10np(

2021-12-22 11:26:19 218

原创 小圆前辈的素数(FFT)

题目链接:https://ac.nowcoder.com/acm/contest/15332/B题目大意:给了两个数组a和b,任意从a中取一个数a[i]和b数组中取一个数b[i],求满足a[i] + b[i]是素数的取法有多少种?数组长度 <= 1e5示例:a = {1, 2, 2}b = {3, 4, 6}满足条件的答案有四种:{1, 4}, {1, 6}, {2, 3}, {2, 3}解答:朴素的两重暴力枚举时间复杂度是O(N^2)无法AC本题。我们

2021-07-22 00:48:10 180

原创 隐藏Leetcode上带锁的题目

打开chrome的控制台输入一下js代码,回车执行$("tbody.reactable-data > tr > td:nth-child(3) > div > span:nth-child(2)").each(function(index, element) { $(element).hide();});

2021-06-17 01:00:54 335

原创 数组模拟几种队列的写法

1、普通队列队列数组名为q[N]初始化hh = 0, tt = -1, 队列的元素区间为[hh, tt]入队:q[++tt] = val;出队: hh++队头元素: q[hh]判空: hh <= tt 表示非空, hh > tt 队列为空2、循环队列(下列所有加减法都是在mod(N+1)的意义下)队列数组名q[N + 1], 循环队列最多存储N个元素,是为了区分队空和队满的情况初始化hh = tt = 0, 队列的元素区间为[hh, tt),这里右侧为开.

2021-05-26 00:49:37 184

原创 Leetcode设计数据结构O(1)数据结构

LRU:struct Node { Node *l, *r; int key, val; Node(int _key, int _val) :key(_key), val(_val) {}}*head, *tail; //两个哨兵class LRUCache {public: int n; unordered_map<int, Node*> hash; //从双链表删除掉p节点 void remove(Node* p) {

2021-05-25 01:36:15 230

原创 树的迭代遍历问题

94. 二叉树的中序遍历/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: vector<int&gt

2021-05-25 01:24:39 85

原创 Leetcode一类区间问题总结

56、区间合并https://leetcode-cn.com/problems/merge-intervals/先按照左端点排序,左端点相同按照右端点排序,依次合并区间即可。class Solution {public: vector<vector<int>> merge(vector<vector<int>>& intervals) { typedef pair<int, int> PII;

2021-05-24 23:45:39 261 1

原创 acwing 3115 bzoj2054 疯狂的馒头

https://www.acwing.com/problem/content/3118/做法:并查集逆序枚举,因为最后染色的就是最后的颜色。find(f[i])表示为右边第一个没有被染色的点,通过f数组跳过已经被染色的区间。#include <bits/stdc++.h>using namespace std;//Filename: 3115.cpp////Author: dezhonger - [email protected]//Create: .

2021-05-03 00:31:12 76

原创 树形dp

题单:https://www.luogu.com.cn/training/4840#problems两道类似的题目https://www.luogu.com.cn/problem/P2014#include <bits/stdc++.h>using namespace std;//Filename: 2014.cpp////Author: dezhonger - [email protected]//Create: 2021-04-11 23:00:55

2021-04-12 00:02:31 89

原创 codefoces round713 div3

简要题解:A:题意:给了一堆数(n >= 3),有一个和其他不一样,找出来这个数排序后,a[1]肯定是相同的数,找到和a[1]不同的数就是答案B:找到两个'.'变为'*',使得四个'*'构成一个矩形讨论三种情况即可C:把问号变为0或者1,其中0的个数为a,1的个数为b首先把?能确定的字符确定好,然后每次贪心选择剩余a和b最大的那个用来替换?D:给出从a数组构造b数组的规则,给定b数组,求a数组枚举哪个数是最后添加到b数组的数即可。注意考虑细节...

2021-04-11 01:59:25 107

原创 Leetcode hard一句话题解

代码:https://github.com/dezhonger/LeetCode99.Recover Binary Search TreeMorris-traversal算法218: The Skyline Problem 扫描线算法

2021-03-30 23:07:13 143

原创 Leetcode493 Reverse Pairs

求逆序对的问题可以采用归并排序或者BIT数据结构进行求解,这里给出归并排序的做法,核心是在递归的时候,使用双指针维护左边i和右边j的位置,保证j是最小的a[i] <= 2 * a[j], 那么所有小于j的下标都是对答案的贡献红色即为贡献class Solution {public: vector<int> w; int reversePairs(vector<int>& nums) { return merge(nums,.

2021-02-23 00:00:12 65

原创 模拟退火

https://www.acwing.com/problem/content/3170/求二维平面上的费马点模拟退火:#include <bits/stdc++.h>using namespace std;#define X first#define Y secondtypedef pair<double, double> PDD;const int N = 110;//全局最优解double ans = 1e8;int n;PDD q[N.

2021-01-20 23:00:04 90

原创 P3254 圆桌问题

https://www.luogu.com.cn/problem/P3254https://www.acwing.com/problem/content/2181/网络流建模,同时求出最大流的一个可行流建模如下求可行流的方法:遍历左边的所有节点,在残留网络上跑满了流的边即为一组解#include <bits/stdc++.h>using namespace std;const int N = 430, M = (N + 150 * 270) * 2, INF =

2020-11-14 20:43:18 104

原创 acwing Dinic求最大流

https://www.acwing.com/problem/content/2174/Dinic算法的时间复杂度是O(N^2M),N为点数,M为边数模板题:#include <bits/stdc++.h>using namespace std;//Filename: Dinic.cpp////Author: dezhonger - [email protected]//Create: 2020-11-14 18:48:11//时间复杂度: O(N.

2020-11-14 19:17:57 131

原创 acwing EK求最大流

https://www.acwing.com/problem/content/2173/模板题:#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 1010, M = 20010, INF = 1e8;int n, m, S, T;int h[N], e[M], f[M], ne[M], idx;int q[N],

2020-11-14 13:22:58 98

原创 洛谷2146 软件包管理器

树链剖分的模板题#include <bits/stdc++.h>using namespace std;//Filename: 918.cpp////Author: dezhonger - [email protected]//Create: 2020-11-06 23:58:17typedef long long LL;const int N = 100010;int n, m;int h[N], e[N], ne[N], idx;int id[N],

2020-11-07 00:32:42 87

原创 洛谷3391 文艺平衡树

用splay写一下,模板题。#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int N = 100010;int n, m;struct Node { int s[2], p, v; int size, flag; void init(int _v, in.

2020-11-03 23:30:07 75

原创 java class文件解析

将java class字节码文件按照不同的区域进行解析处理。import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.util.Arrays;/** * Created by dezhonger on 2020/09/26 * <p> * javaClass文件解析 */public class

2020-10-01 11:29:25 1103

原创 2-SAT 模板题

题目链接:https://www.luogu.com.cn/problem/P4782讲解:todo#include <bits/stdc++.h>using namespace std;const int N = 2000010, M = 2000010;int n, m;int h[N], e[M], ne[M], idx;int dfn[N], low[N], ts, stk[N], top;int id[N], cnt;bool ...

2020-09-16 00:27:59 117

原创 P2257 YY的GCD

题意\large题意题意题目链接给定N,M,求1≤x≤N,1≤y≤M且gcd(x,y)为质数的(x,y)有多少对给定N, M,求1 \leq x \leq N, 1 \leq y \leq M且 gcd(x, y)为质数的(x, y)有多少对给定N,M,求1≤x≤N,1≤y≤M且gcd(x,y)为质数的(x,y)有多少对用式子表达出来为用式子表达出来为用式子表达出来为∑i=1n∑j=1m[gcd(i,j)=k],k∈Prime\sum_{i=1}^{n} \sum_{j=1}^{m} [gcd(i,

2020-08-02 00:34:37 98

原创 P3455 [POI2007]ZAP-Queries

题意\large题意题意题目链接求∑i=1a∑j=1b[gcd(i,j)=d]求\sum_{i=1}^{a} \sum_{j=1}^{b} [gcd(i, j) = d]求∑i=1a​∑j=1b​[gcd(i,j)=d]题解\large题解题解莫比乌斯函数有个性质莫比乌斯函数有个性质莫比乌斯函数有个性质∑d∣nμ(d)=[n=1]\sum_{d|n} \mu(d) = [n = 1]d∣n∑​μ(d)=[n=1]我们使用gcd(i,j)代替n得到如下的式子我们使用gcd(i, j)代替n得到

2020-08-01 01:22:53 186 1

原创 洛谷4318 完全平方数

题意:题意:题意:求第k个不含平方因子的数求第k个不含平方因子的数求第k个不含平方因子的数题解:题解:题解:我们可以题目转为求给定n,求n以内的无平方因子数的个数,然后二分得到结果\qquad我们可以题目转为求给定n,求n以内的无平方因子数的个数,然后二分得到结果我们可以题目转为求给定n,求n以内的无平方因子数的个数,然后二分得到结果求n以内的无平方因子数的个数,即求求n以内的无平方因子数的个数,即求求n以内的无平方因子数的个数,即求∑k=1nμ2(k),这里μ是莫比乌斯函数\sum_{k=1}

2020-07-30 02:15:22 124

原创 洛谷2568 GCD

文章目录题意题意题意题解题解题解代码代码代码题意题意题意给定n,求∑i=1n∑j=1n[gcd(i,j)=k],k is prime给定n,求\sum_{i=1}^{n} \sum_{j=1}^{n} [gcd(i, j) = k], k\ is \ prime给定n,求i=1∑n​j=1∑n​[gcd(i,j)=k],k is prime题解题解题解原式=∑k∑i=1n∑j=1n[gcd(i,j)=k]=∑k∑i=1n/k∑j=1n/k[gcd(i,j)=1

2020-07-30 01:15:14 146

原创 洛谷1390 公约数的和

题意:题意:题意:求∑i=1n∑j=i+1ngcd⁡(i,j)求\sum_{i=1}^{n} \sum_{j=i+1}^{n}\gcd(i, j)求i=1∑n​j=i+1∑n​gcd(i,j)题解:题解:题解:原式=∑i=1n∑j=i+1ngcd⁡(i,j)=∑d=1nd⋅∑i=1n∑j=i+1n[gcd(i,j)=d]=∑d=1nd⋅∑i=1n/d∑j=i+1n/d[gcd(i,j)=1]=∑d=1nd⋅∑j=1n/dϕ(j)\begin{aligned}\qquad\qquad\qquad 原式

2020-07-30 00:57:54 115

原创 P2303 [SDOI2012] Longge 的问题

输入一个数据nnn,求∑i=1ngcd⁡(i,n)\qquad \qquad \qquad \sum_{i=1}^{n}\gcd(i, n)∑i=1n​gcd(i,n)其中nnn可以达到 2322^{32}232题解:原式=∑i=1ngcd⁡(i,n)=∑d∣nd⋅∑i=1n[gcd⁡(i,n)=d](枚举公约数,[]为单位函数)=∑d∣nd⋅∑i=1⌊n/d⌋[gcd⁡(i,nd)=1]=∑d∣nd⋅ϕ(⌊nd⌋)\begin{aligned}\qquad\qquad\qquad 原式 &amp

2020-07-29 23:59:03 547

原创 luogu 3834 主席树模板题

终于会主席树了,其实理解了树的形态就好了, 每次都是新增了log个节点,尽量利用了之前的结点,并且维护了每棵树的root节点。看代码吧:#include <cmath>#include <stack>#include <algorithm>#include <string>#include <deque>#include <cstring>#include <cstdio>#include <v

2020-07-21 00:06:23 136

原创 Leetcode1444

每次沿着水平或者垂直切一刀,将左边或上边的分给别人,剩余的保留,要求每次切出的必须包含至少一个字母'A',最后剩余的也必须包含字母'A',求有多少种切法思路:由于每次保留的都是右下角的那一块,我们设计这样的dp状态dp[i][j][k]表示剩余的左上角坐标是(i, j)当前共有k块的方法数状态转移是每次从水平切一刀,或者垂直切一刀。两块都必须包含字母'A',这个可以用二维前缀和来做 final int mod = 10_0000_0007; int[][...

2020-05-18 23:54:11 153

原创 Leetcode 629

题意题目链接从111到NNN一共NNN个数组成的一个数组,求逆序对为mmm的方法数有多少个思路动态规划定义dp[i][j]dp[i][j]dp[i][j]表示前iii个数(也就是111到iii)组成的数组中逆序对为jjj的方法数,考虑把数字i+1i+1i+1放置在数组的最前面,那么会增加iii个逆序对;如果放在第一个数之后,会增加i−1i-1i−1个逆序对,以此类推,如果放置在最后,那么...

2020-04-26 00:27:00 231

原创 Leetcode1157

题意题目链接给了一个数组,有多组询问,每次问在区间[l,r]内出现最多次数的数,次数是否>=threshold的给了一个数组,有多组询问,每次问在区间[l, r]内出现最多次数的数,次数是否>=threshold的给了一个数组,有多组询问,每次问在区间[l,r]内出现最多次数的数,次数是否>=threshold的数组长度<=2∗104数组长度 <= 2 * 10...

2020-04-20 23:49:59 186

原创 Leetcode 761

题意:一个01字符串是special binary当前仅当1、0和1的个数相同2、任何一个前缀里的1的字符的个数都不少于0的字符的个数可以进行下面的操作:从字符串S中选择两个相邻的special binary,交换它们进行若干次后,问能得到最大字符串是什么?题解:首先转换题目把1当做左括号,0当做右括号,那么special binary的意思就是说这个字...

2020-04-10 00:58:11 148

空空如也

空空如也

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

TA关注的人

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