数据结构
yjt9299
这个作者很懒,什么都没留下…
展开
-
poj 2201 笛卡尔树
Cartesian TreeTime Limit: 10000MS Memory Limit: 65536K Total Submissions: 3998 Accepted: 1605 Case Time Limit: 2000MS DescriptionLet us consider a special type of a binary se...原创 2018-08-02 09:00:36 · 225 阅读 · 0 评论 -
codeforces 208E Blood Cousins (dsu on tree + 倍增 )
链接:http://codeforces.com/problemset/problem/208/E题意: 现在有若干棵树,对于每次一询问,都有一个节点 u 和一个 k 你要求出在这棵树上与u 同为k 级兄弟的节点个数,也就是与u的k级父亲是同一个父亲的,节点个数。思路: 对于每一个节点u和k ,如果他的深度<k 那么肯定是找不到的,答案为0 ,否则,我先找到的他的k级父亲,也就是...原创 2018-09-13 13:19:51 · 299 阅读 · 0 评论 -
HihoCoder - 1384 Genius ACM ( 倍增+归并 )
链接: https://cn.vjudge.net/contest/250027#problem/B题意: 题意就很恶心。 现在给你一个长度为n的序列,将原序列分成尽量小的块(不改变顺序)使得满足下列情况: 要求在每一块中任意取得m对数,(2*m个),不够m对,尽量多取,并且每个数只能用一次。使得满足每一对的差值的平方的和<=K.问你最小块数是多少?思路参考:坤神博客:https:...原创 2018-09-13 17:10:18 · 159 阅读 · 0 评论 -
codeforces 689d Friends and Subsequences(rmq+ 二分)
链接: http://codeforces.com/contest/689/problem/D题意: 给你两个序列 你要求出有多少对 L ,R 使得A中的最大值等于B中的最小值。思路: 先预处理出rmq 那么枚举每一个位置,找出这个位置的最小右端点和最大右端点就可以了。那么就用二分判断呗。因为对于每一个位置maxx 肯定是升序的,minn 肯定是降序的。代码:#include...原创 2018-09-24 13:06:04 · 268 阅读 · 0 评论 -
51nod 1737 思维+ 树重心
链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1737思路: 对于每一条边,我们如果想要使得他发挥最大价值,其实就是这条边被用了 min(sonsz[ u ], sonsz[ v ])次,那么我如果找到一个点使得删掉这个点之后所有的联通分支的点的个数都小于等于n/2个点,那么就可以构造出一种方案使得每条边被...原创 2018-10-02 14:13:37 · 222 阅读 · 0 评论 -
codeforces 369E Valera and Queries(树状数组+ 反向思考) 好题
链接:http://codeforces.com/problemset/problem/369/E题意: 现在给你一些线段,然后每次询问给你cc 个点,然后问你包含这cc个点的一共有多少不相同的线段。反过来思考,如果我把每次询问的点之间的线段抽出来,那么问题就可以转化成,我抽出来的这些线段完全包含了n个线段中的多少个线段。因为完全包含的这些线段对于我该次的询问不会有贡献。那么我把所有的询问离线...原创 2018-10-03 23:48:08 · 184 阅读 · 0 评论 -
倍增求lca 和 树上任意两点之间的最值
代码:void process(){ for(int i=0;i<n;i++){ anc[i][0]=fa[i]; maxcost[i][0]=cost[i]; for(int j=1;(1<<j)<n;j++){ anc[i][j]=-1; } } for(in...原创 2018-10-04 01:09:53 · 700 阅读 · 0 评论 -
codeforces 1013d D. Chemical table
链接: http://codeforces.com/contest/1013/problem/D题意: 现在有一个n*m的方格,现在给你q个方格是已经涂好色的,而且方格有个自动涂色的功能,如果一个矩形的三个角被涂上颜色了,那么第四个角就被自动涂上颜色。 问你最少需要手动涂几个点呢。思路: 其实我们就考虑本来已经涂好色的点中,哪些是有效点,哪些是无效点就可以,这里我把有效点定义为在我涂了其他...原创 2018-09-28 22:20:38 · 201 阅读 · 0 评论 -
hdu 5517 (三元组)二维树状数组
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5514思路: 第一眼看还觉得没法处理,但是我们可以发现他要求top三元组,所以对于二元组 a b 对于每个b 我只需要保留他的最大的a就可以了。生成的新的三元组最多就100000 个。 这样的话,就直接 二维树状数组求就可以了。代码:#include<bits/stdc++.h>...原创 2018-10-15 14:15:34 · 312 阅读 · 0 评论 -
51nod 1672 区间交 好题
链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1672思路: 我们可以按线段的右端点排序,然后对于每个线段,更新他的左端点,然后查询右端点,如果右端点>=K ,那么我们就二分找到树状数组中第K小的位置。肯定这个位置就是我们想要的交的左端点。代码:#include<bits/stdc++.h...原创 2018-10-09 14:01:38 · 180 阅读 · 0 评论 -
codeforces 374D. Inna and Sequence(特别有意思哈)
链接: http://codeforces.com/contest/374/problem/D题意: 首先给你 n 和 m 然后m 个数,表示位置,这里首先有一个空的序列 然后n 个操作,如果操作是1 那么向序列的末尾加1 ,如果操作是0 ,那么向序列的末尾加0 如果是-1 ,那么删除上边给的m 个位置的数,最后输出序列。为空输出。。。思路: 因为n m都比较大一开始还真不敢想,然后其...原创 2018-10-26 15:13:32 · 378 阅读 · 0 评论 -
codeforces 739B Alyona and a tree
链接:http://codeforces.com/contest/739/problem/B思路: 还算是比较简单的一个倍增,我们可以预处理出来节点u的2的j 次方父亲和他到2的j次方父亲的距离,然后就是枚举每个点找到他能作用的父亲区间,当然他能作用的父亲左区间肯定是他的直接父亲,右区间对应一个祖先,那么我对于直接父亲+1 右区间父亲的直接父亲-1 然后就是dfs 统计答案。代码:...原创 2018-10-26 20:31:41 · 250 阅读 · 0 评论 -
codeforces 1027f F. Session in BSU
链接: http://codeforces.com/contest/1027/problem/F题意:小明有n场考试,每场考试可以在a或者b天考,但是小明每天只能做一套考试卷子,问你小明能否考完所有的考试如果可以输出最大的考试日,如果不可以,输出-1思路: 看问题其实是一个最优匹配的问题,如果我们我们把点分为两类,左边的点为考试,右边的点为某天。那么我们要做的就是找到左边点全部匹配并且右边...原创 2018-09-07 18:10:22 · 217 阅读 · 0 评论 -
HihoCoder - 1387 求树上相同颜色的直径
题意: 给你一棵n个节点的树,每个节点的颜色可能不同,现在要给你两种颜色,问你两种颜色的最大距离。如果有一种颜色不存在那么直接输出-1 即可。思路:先预处理出树的lca,那么求树的直径就是一个o(n)+查询lca的复杂度了。代码:#include<bits/stdc++.h>using namespace std;const int N =1e5+5; ...原创 2018-09-13 09:37:19 · 281 阅读 · 0 评论 -
BZOJ 1806 树分块 模板题
1086: [SCOI2005]王室联邦Time Limit: 10 Sec Memory Limit: 162 MBSec Special JudgeSubmit: 2685 Solved: 1635[Submit][Status][Discuss]Description “余”人国的国王想重新编制他的国家。他想把他的国家划分成若干个省,每个省都由他们王室联邦的一个成员...原创 2018-08-14 15:15:42 · 133 阅读 · 0 评论 -
hdu 6393(环套树+lca)
Traffic Network in NumazuTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 510 Accepted Submission(s): 196 Problem DescriptionChika i...原创 2018-08-14 21:14:35 · 553 阅读 · 0 评论 -
BZOJ 3252 攻略
题目简述:树版[k取方格数]众所周知,桂木桂马是攻略之神,开启攻略之神模式后,他可以同时攻略k部游戏。今天他得到了一款新游戏《XX半岛》,这款游戏有n个场景(scene),某些场景可以通过不同的选择支到达其他场景。所有场景和选择支构成树状结构:开始游戏时在根节点(共通线),叶子节点为结局。每个场景有一个价值,现在桂马开启攻略之神模式,同时攻略k次该游戏,问他观赏到的场景的价值和最大...原创 2018-08-26 11:09:58 · 237 阅读 · 0 评论 -
hdu 5726 GCD 线段树dp求区间gcd 或者ST表二分求区间gcd 或者线段树二分求区间gcd
GCDTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 5368 Accepted Submission(s): 1936 Problem DescriptionGive you a sequence of...原创 2018-08-26 16:06:14 · 282 阅读 · 0 评论 -
hdu 6444 长度不超过K的最大字段和
参考博客:https://blog.csdn.net/sinat_34550050/article/details/52274141代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N =1e4+5;int n,m,k;ll S;ll a[N];int ...原创 2018-08-28 13:52:10 · 455 阅读 · 0 评论 -
BZOJ 2809(dfs序+离散化+主席树 或者 可并堆)
2809: [Apio2012]dispatchingTime Limit: 10 Sec Memory Limit: 128 MBSubmit: 5238 Solved: 2697[Submit][Status][Discuss]Description在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿。在这个帮派里,有一名忍者被称之为 Master。除...原创 2018-08-24 22:13:20 · 353 阅读 · 0 评论 -
codeforces 540E Infinite Inversions
E. Infinite Inversionstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputThere is an infinite sequence consisting of all positiv...原创 2018-08-29 17:11:16 · 224 阅读 · 0 评论 -
hdu 5452 Minimum Cut
Minimum CutTime Limit: 3000/2000 MS (Java/Others) Memory Limit: 65535/102400 K (Java/Others)Total Submission(s): 2371 Accepted Submission(s): 1112 Problem DescriptionGiven a simple unwei...原创 2018-08-30 00:37:34 · 145 阅读 · 0 评论 -
bzoj 4003 城池攻占 (可并堆(左偏树))
小铭铭最近获得了一副新的桌游,游戏中需要用 m 个骑士攻占 n 个城池。这 n 个城池用 1 到 n 的整数表示。除 1 号城池外,城池 i 会受到另一座城池 fi 的管辖,其中 fi <i。也就是说,所有城池构成了一棵有根树。这 m 个骑士用 1 到 m 的整数表示,其中第 i 个骑士的初始战斗力为 si,第一个攻击的城池为 ci。每个城池有一个防御值 hi,如果一个骑士的...原创 2018-08-25 22:33:03 · 172 阅读 · 0 评论 -
codeforces 600e Lomsat gelral (Gsu on tree ) 求子树的众数
链接: http://codeforces.com/contest/600/problem/E题意: 现在给你一棵树,n个节点,每个节点都有一个颜色,现在你要求出以u 为根节点的子树中出现最多的颜色和,既如果这颗子树中1出现了3次,3出现了3次,2出现了2次,4出现了1次,那么答案就是1+3=4.思路: 如果最傻逼的暴力就是一个n方的算法。但是这里可以利用树剖 的轻重孩子在nlogn的时间...原创 2018-09-11 14:55:58 · 228 阅读 · 0 评论 -
codeforces 246E(dsu on tree )
链接: http://codeforces.com/problemset/problem/246/E题意: 现在有一些树,树的节点有一个颜色(用字符串给出) 和他的父亲,父亲如果是0 表明是根节点,然后m次查询,每次查询一个u 和k 问你在u这棵子树上,与u 相距为k的点的颜色个数。思路:首先应该是用dsu on tree 来解决这个问题, 如果我们把当前询问的u节点当做标准的话,那么在向...原创 2018-09-12 10:17:20 · 378 阅读 · 0 评论 -
hdu 4056 zoj 3544 Draw a Mess
链接: https://cn.vjudge.net/problem/HDU-4056题意: 就问涂完所有的颜色后每种颜色有多少个(共9种)思路: 想到并查集来做就是个很简单的题,想不到就gg。另外更新的时候对于n一层层更新并且对于q从后向前更新。这样更新过的就没有必要再更新了。代码:#include<bits/stdc++.h>using namespace st...原创 2018-11-01 14:42:17 · 249 阅读 · 0 评论