
C++数据结构
cy41
celery cabbage
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
D. Misha and Permutations Summation(变进制数康拓展开)
题目链接:D. Misha and Permutations Summation题意:两个全排列,算出这两个全排列分别是第几个全排列,然后这两个数字相加,取模(n!),然后再输出一个全排列表示第几个全排列,第几个是从0开始编号的。大概在暑假的时候洛谷上看到一个变进制数的概念,就是将一个全排列转化为一个变进制数:yummy的博客然后将两个变进制数相加,如果最高位还会产生进位说明相加超过了(n!...原创 2019-11-09 15:07:53 · 241 阅读 · 0 评论 -
2019杭电多校第四场 H - K-th Closest Distance(二分加主席树)
题目链接:HDU - 6621题意:给定n个数字,q次询问,每次给出l,r,p,k。询问区间l,r内所有数字与p的差值的绝对值中排名第k大的是多少。看到题目给了15秒的时限,再看看题目数据很容易想到单次查询应该是log*log的复杂度,再观察这个答案发现具有单调性,于是想到要二分答案,答案确定后,就可以知道查询区间了,我们只需要查询区间[p-mid,p+mid]内有多少数字即可。关于单...原创 2019-08-03 08:44:14 · 308 阅读 · 0 评论 -
Treap模板(bzoj 3224)
bzoj 3224 普通平衡树数据结构支持六种操作#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1e5+7;struct Tree{ int l,r; int val,dat; int cnt,size1;}a[maxn];...原创 2019-07-18 21:49:52 · 130 阅读 · 0 评论 -
分块记录
分块思想:大段维护,小块暴力大佬博客:http://hzwer.com/8053.html题目链接:https://loj.ac/problems/tag/207一个比较好的理解视频:B站L[]表示该块的左区间端点,R[]表示该块的右区间端点,belong[]表示这个下标数字属于哪个块。一、区间加法,单点查值(咕咕咕)二、区间加值,求区间内小于x的数的个数大段直...原创 2019-06-24 09:49:38 · 369 阅读 · 0 评论 -
poj 1741(点分治)
题目链接:http://poj.org/problem?id=1741给定一颗树,以及k,一次询问,找出所有路径长度小于等于k的点对数。前置:flag[]数组表示删除的点,d[]数组代表节点到根节点的距离,b[]数组代表节点属于哪一颗子树,a[]子树中所有的节点(并按照d从小到大排序),size1[]数组表示编号为i的子树的大小,cnt[]数组表示编号为i的子树出现的次数。首先我...原创 2019-05-07 15:13:29 · 238 阅读 · 1 评论 -
Distance on the tree (2019南昌网络赛)
主席树套LCA题目链接:https://nanti.jisuanke.com/t/38229、预处理出lca的一套东西,将查询区间[L,R]分成两半,[L,LCA(L,R)],[R,LCA(L,R)] 计算区间内小于等于k的个数即可主席树记录每一个子节点到初始节点间出现的所有线段长度的个数。主席树这种东西的话,,,百度学吧。。。我讲不清,我太菜了。。对于常见的主席树区间查询来说...原创 2019-05-09 21:58:58 · 202 阅读 · 0 评论 -
K-th Number POJ - 2104
主席树板子题。这是我做的第一道主席树的题。前置知识:线段树,权值线段树。别看了,我写的不好,看不懂的23333。对于这道题来说,将所有数离散化后,值域最大为n,修改为n次,每次更新都是单点更新。主席树是一个存着所有历史版本的线段树的一种数据结构(可持久化线段树),就对于这道题来说,每一颗线段树都存着值域上的信息。最开始新建一颗普通的权值线段树,然后按照序列顺序向里面添加数,...原创 2019-05-09 15:23:14 · 193 阅读 · 0 评论 -
字符串多组输入,直到遇到回车结束输入
在某论坛看到的某大神的写法,学到了学到了!! string s; while(getline(std::cin,s)&&!s.empty()){ } char s[maxn]; while(gets(s)&&strcmp(s,"")!=0){} ...原创 2018-08-11 16:15:40 · 12931 阅读 · 0 评论 -
C++queue清空元素
转载自:https://www.cnblogs.com/zhonghuasong/p/7524624.html;可以去看原文章。void clear(queue<int>& q) { queue<int> empty; swap(empty, q);}转载 2018-07-24 21:19:11 · 3527 阅读 · 0 评论