数据结构
文章平均质量分 73
数据结构题解
LZH0217
这个作者很懒,什么都没留下…
展开
-
Trie字典树例题
前几天做了个Trie树的题,正好记一下。首先先看一个简单题AcWing 143. 最大异或对题目在给定的N个整数A1,A2……AN中选出两个进行 xor(异或)运算,得到的结果最大是多少?第一行输入一个整数N。第二行输入N个整数A1~AN。输出一个整数表示答案。1≤N≤105,0≤Ai<2311≤N≤10^5, 0≤A_i<2^311≤N≤105,0≤Ai<231Solution这个题看数据范围应该是O(nlogn)级别内的,先看暴力做法就是枚举Ai和Aj,这样是O原创 2021-03-09 15:35:49 · 167 阅读 · 0 评论 -
2020 China Collegiate Programming Contest Qinhuangdao Site-重现赛 7-6 Friendly Group(Tarjan 或 并查集)
7-6 Friendly Group题目Sample Input24 51 21 31 42 33 42 11 2Sample OutputCase #1: 1Case #2: 0分析把他们之间的好朋友关系对应到图上,两个人是好朋友的话,他们之间连一条边,显然环是要满足的最低要求,在一个环中,点和边个数一样,对答案的贡献是0,如果不是环,那么点的个数大于边数,那么对答案的贡献是负的。最后就是要对无向图强联通分量缩点,记下每个强联通分量中的点的个数和边的个数。code原创 2020-10-20 18:24:03 · 730 阅读 · 0 评论 -
马拉车算法例题 -- P3805 【模板】manacher算法、P1659 [国家集训队]拉拉队排练
马拉车模板看这个P3805 【模板】manacher算法code#include <iostream>#include <algorithm>#include <string>using namespace std;class Solution {public: static int longestPalindrome(const string &s) { int len = s.length();原创 2020-10-03 19:09:14 · 138 阅读 · 0 评论 -
马拉车算法求最长回文子串(模板)
Manacher 算法模板时间复杂度:O(N)O(N)O(N) ,由于 Manacher 算法只有在遇到还未匹配的位置时才进行匹配,已经匹配过的位置不再匹配,因此对于字符串 S 的每一个位置,都只进行一次匹配,算法的复杂度为 O(N)O(N)O(N) 。空间复杂度:O(N)O(N)O(N) 。五分钟学算法教程老司机开车,教会女朋友什么是「马拉车算法」codeclass Manacher1 {public: static string longestPalindrome(strin原创 2020-10-02 17:12:16 · 125 阅读 · 0 评论 -
P3373 【模板】线段树 2(区间乘+区间加)
P3373 【模板】线段树 2题目链接既有区间乘又有区间加,那么乘和加的顺序很关键先乘后加:a∗b+ca*b+ca∗b+c ,自然没什么影响先加后乘:(a+b)∗c=a∗c+b∗c(a+b)*c=a*c+b*c(a+b)∗c=a∗c+b∗c ,如果我们不进行处理,仅仅单独做乘和加的标记,就会变得混乱我们只需要对加法标记乘上 ccc 就行,也就是把这个式子的括号展开都变成加。code#include <iostream>#include <algorithm>#i原创 2020-09-29 16:44:44 · 90 阅读 · 0 评论 -
A Simple Problem with Integers POJ - 3468(线段树模板,区间修改,区间查询)
A Simple Problem with IntegersPOJ - 3468code#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#include <vector>#include <queue>using namespace std;typedef long long ll;const int N = 10原创 2020-09-15 12:10:04 · 82 阅读 · 0 评论 -
POJ-2352 Stars(树状数组模板)
StarsPOJ-2352树状数组下标是从1开始。#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#include <vector>#include <queue>using namespace std;const int N = 15005, M = 32005, INF = 0x3f3f3f3f;int n;原创 2020-09-14 21:06:45 · 116 阅读 · 0 评论 -
HDU-1698 Just a Hook(线段树模板,懒标记区间修改)
HDU-1698 Just a Hook/* * HDU-1698 Just a Hook * http://acm.hdu.edu.cn/showproblem.php?pid=1698 */#include <iostream>#include <algorithm>#include <cstring>#include <vector>#include <queue>using namespace std;const原创 2020-09-14 20:02:49 · 81 阅读 · 0 评论 -
I Hate It POJ - 1754(线段树 模板)
I Hate Ithttp://acm.hdu.edu.cn/showproblem.php?pid=1754线段树区间最大值,单点修改,区间查询。code#include <iostream>#include <algorithm>#include <cstring>using namespace std;const int N = 200005;int tree[N << 2];#define ls(x) (x <<原创 2020-09-13 20:59:00 · 87 阅读 · 0 评论 -
手写小根堆
小根堆int heap[1000], tot = 0;void insert_heap(int x) { tot++; heap[tot] = x; int i = tot; int j = i / 2; while ((j > 0) && heap[j] > heap[i]) { swap(heap[j], heap[i]); i = j; j = i / 2; }}in原创 2020-09-13 17:47:22 · 267 阅读 · 1 评论 -
智乃与无意义的题目(西工大校赛 线段树)
智乃与无意义的题目哇!一看就是智乃姐姐出的题????题目链接2020年西北工业大学“编程之星”程序设计挑战赛(大学生程序设计创新实践基地队员春季选拔赛)分析:看到修改和查询想到的就是线段树,但是要用线段树维护什么东西还得继续分析。f(n)=∑i∣n1f(n)=\sum_{i|n}1f(n)=∑i∣n1 是 nnn 的因子个数,求一个数的因子个数我们可以想到与唯一分解定理有关的一个公式:...原创 2020-05-02 13:23:16 · 938 阅读 · 0 评论 -
Running Median(每日一题 4月9日 堆 优先队列)
Running Medianhttps://ac.nowcoder.com/acm/problem/50940题意:多组数据,第 PPP 组数据有 MMM 个数。每读到索引为奇数的数后,输出到目前为止接收到的元素的中位数。思路:用两个优先队列维护。一个大根堆存较小的一半,一个小根堆存较大的一半。每放一个数就比较一下堆顶的大小。序列是奇数个时,我们把多一个的数放在大根堆里,那么中位数就是大...原创 2020-04-20 11:35:00 · 130 阅读 · 0 评论 -
区间的连续段(倍增 + ST表)
区间的连续段https://ac.nowcoder.com/acm/contest/82/B题目描述给你一个长为 nnn 的序列 aaa 和一个常数 kkk有 mmm 次询问,每次查询一个区间 [l,r][l,r][l,r] 内所有数最少分成多少个连续段,使得每段的和都 ≤k\le k≤k如果这一次查询无解,输出 “Chtholly”输入描述:第一行三个数 n,m,kn,m,kn,m...原创 2020-04-04 21:22:07 · 202 阅读 · 0 评论 -
城市网络(3月31日题目 树上倍增 ST表)
城市网络ST表题目描述树上倍增Codehttps://ac.nowcoder.com/discuss/395376https://ac.nowcoder.com/acm/problem/13331ST表倍增的最基础应用应该是ST表。ST表本质是动态规划,主要用于解决RMQ(Range Minimum/Maximum Query, 即区间最值查询) 问题,是一种离线算法。以求区间最大值为例...原创 2020-04-01 14:39:37 · 224 阅读 · 0 评论 -
滑动窗口(3月30日题目 单调队列)
滑动窗口https://ac.nowcoder.com/acm/problem/50528https://ac.nowcoder.com/discuss/394776题目描述给一个长度为N的数组,一个长为K的滑动窗体从最左端移至最右端,你只能看到窗口中的K个数,每次窗体向右移动一位,如下图:你的任务是找出窗体在各个位置时的最大值和最小值。输入描述:第1行:两个整数N和K;第2行:N...原创 2020-03-29 22:09:23 · 299 阅读 · 0 评论 -
Preliminaries for BAPC2019 B. Bracket Sequence(计算括号表达式 栈or递归)
B. Bracket Sequence题意:给定一字符串,只有数字和括号,最外层数字之间全用+,第一层括号用×,两层用+,三层用× ……以此类推。 比如 ( 1 ( 2 3 4 ) 5 ( 6 7 ) 8 ) 9 ,就会变成( 1 × ( 2 + 3 + 4 ) × 5 × ( 6 + 7 ) × 8 × ) + 9 。分析:因为一开始没注意到输入的特点,所以有些犯愁要怎么处...原创 2020-03-16 21:44:25 · 205 阅读 · 0 评论