摘要:
"题目链接" 生活大爆炸版石头剪刀布 就是个模拟,不说了 联合权值 枚举每个点,统计它任意两个儿子的联合权值,统计的时候维护sum和max就行了 飞扬的小鸟 比较好的DP题,不难想到用dp[i][j]表示到达第i列,高度j的最小点击次数,直接枚举i,j转移到下一列的位置会TLE,需要优化 cpp i 阅读全文
摘要:
"题目链接" 题目就告诉我们要用并查集了,操作1和3用裸的带权并查集就行了, 操作2相当于将p结点从当前树中删除,再插入到q的树中,直接删除的话比较麻烦,不妨把它的“尸体”留在原来的地方,在q的树中插入一个新的点,维护一个指向编号为p点的指针即可 cpp include include includ 阅读全文
摘要:
"题目链接" 维护一个链表,以及当前位置、head、tail的指针,模拟就行了 cpp include include include using namespace std; char s[100010]; int cnt,head,tail,pos; struct Data{ char c; i 阅读全文
摘要:
横纵坐标互不影响,所以问题转化到一维:在n个区间中每个区间选一个数,n个数都被选一次 将区间按右端点排序,枚举区间,每个区间选最靠左的没被选过的点 cpp include include include include using namespace std; const int MAXN=5010 阅读全文
摘要:
"题目链接" 不难发现,每加一个括号,就相当于把括号内一段区间中的符号反转,于是就是看n 1个符号经过k次区间反转后的状态数,用插板法搞一搞就可以了 cpp include include include using namespace std; int n,k; struct Big_int{ i 阅读全文
摘要:
"题目链接" 众所周知,这道题和积木大赛是同一道题 题意就是给出一段自然数序列,每次操作$(L,R)$把区间$[L,R]$的数全部减一,不允许出现负数,问把序列变为零的最小操作次数 贪心做法 样例 大概长这个样子 我们考虑第一列的四块格子,最少需要$4$次操作给消除掉 在考虑第二列的$3$个格子时, 阅读全文
摘要:
"题目链接" "Splay基础操作" $Splay$上的区间翻转 首先,这里的$Splay$维护的是一个序列的顺序,每个结点即为序列中的一个数,序列的顺序即为$Splay$的中序遍历 那么如何实现区间翻转呢? 对于一次区间翻转操作$rev(l,r)$,显然先要找到$l$和$r$在$Splay$中的位 阅读全文
摘要:
二叉搜索树(二叉排序树) 概念:一棵树,若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉搜索树(baidu百科)。 就是一棵二叉树,所有的节点都满足:左子树内每个的点的值比当前点值小,右子树内每 阅读全文
摘要:
线性基是什么 集合$S$有子集$T$ 使得$S$的任意子集的元素的亦或和 都能被$T$的某个子集的元素亦或得到 且$T$的任何子集的亦或和不为$0$ $T$就是$S$的线性基 显然$S$的子集亦或和的值域与$T$的子集亦或和的值域相等 比如说$S=\{1,10,11,100,101,110\}$ ( 阅读全文
摘要:
"题目链接" 题目大意: 一棵$n$个点的带边权的数,给定$m$条树上两点间的路径,现在你可以让树上任意一条边的权值变为零, 问如何选边使得$m$条路径中边权和最大的路径的边权和最小 $\mathcal{solution}$ 这是$NOIP2015$的$Day2T3$,感觉难度是比较大的 我首先想到 阅读全文