![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
Tongqi_Liu
喜欢看书,ACMed,攻城狮
展开
-
LFU算法的应用及实现
概述复习下LFU的原理:LFU原理及实现实现这里可以完全基于HashMap来完成设计,源码如下:public class LFUCache { private int cap; private int minFreq; private HashMap<Integer, Integer> map; private HashMap<I...原创 2020-03-30 21:32:55 · 1359 阅读 · 0 评论 -
UVA 11987 Almost Union-Find(带有删除操作的并查集)
Problem AAlmost Union-FindI hope you know the beautiful Union-Find structure. In this problem, you're to implement something similar, but not identical.The data structure you need to write is al...原创 2014-03-30 17:32:33 · 861 阅读 · 0 评论 -
POJ 3253 Fence Repair(贪心+优先队列)
Fence RepairTime Limit:2000MS Memory Limit:65536K Total Submissions:23110 Accepted:7365 DescriptionFarmer John wants to repair a small length of the fence around the pa...原创 2014-03-30 20:19:39 · 424 阅读 · 0 评论 -
HDU 1242 Rescue(BFS+优先队列)
Problem DescriptionAngel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is described as a N * M (N, M <= 200) matrix. There are WALLs, ROADs, and GUARDs in the prison....原创 2014-03-31 22:11:25 · 428 阅读 · 0 评论 -
HDU 1022 Train Problem I(栈的应用)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1022题意:给你2个字符串,第一个字符串str1代表火车的入站顺序,第二个字符串str2代表出站序列,如果str1能满足str2的要求,就输出YES。并输入进站出站的顺序。思路:C++栈的应用#include<iostream>#include&l...原创 2014-04-15 15:11:16 · 453 阅读 · 0 评论 -
ZOJ 3710 Friends(暴力或map)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3710题意:给你n个人,m对朋友关系,如果两个人的公共好友超过k人,那他们可以成为新的朋友,问经过一段“”足够长的时间后“, 新产生了多少对朋友关系?思路:题目数据量较小,可以直接暴力,也可以用下stl#include <cstdio...原创 2014-05-17 16:41:49 · 566 阅读 · 0 评论 -
HDU 1263 水果(map或结构体排序)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1263思路:可以直接结构体快排,也可以用map(强大的STL)#include <cstdio>#include <cmath>#include <iostream>#include <algorithm>#include &...原创 2014-05-17 16:54:58 · 663 阅读 · 0 评论 -
HDU 4268 Alice and Bob (set+贪心)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4268题意:A,B各有n张牌,A要用自己的牌覆盖B的牌,求A最多能覆盖多少张。牌有长h和宽w两个属性,当一张牌能覆盖另一张牌,它的长宽都必须不小于另一张牌。思路:将A,B的牌都按h(或者w)由小到大排序,然后把B的所有不大于A[0]的 h 的牌都放入multiset中(注意,扔掉h这...原创 2014-05-17 18:22:18 · 741 阅读 · 0 评论 -
UVA 11995 I Can Guess the Data Structure! (STL的应用)
思路:需要模拟栈,队列,优先队列,看看输入满足以上的哪一种情况#include <cstdio>#include <cmath>#include <iostream>#include <algorithm>#include <string>#include <cstring>#include &l...原创 2014-05-17 22:02:23 · 440 阅读 · 0 评论 -
HDU 1166 敌兵布阵(线段树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166第一次写线段树,还是比着代码写的 ,多敲几遍线段树吧#include <iostream>#include <stdio.h>#include <string.h>#include <math.h>#include...原创 2014-07-17 18:59:29 · 389 阅读 · 0 评论 -
HDU 1754 I Hate It (线段树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754线段树模板题:#include <iostream>#include <stdio.h>#include <math.h>#include <queue>#include <vector>#in...原创 2014-07-17 20:24:40 · 391 阅读 · 0 评论 -
ZOJ 3612 && HDU 4864 (multiset 的应用)
ZOJ 3612题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4736题意:在进行add和remove等操作下,找出这些数中的中位数思路:利用multiset可以对用指针对中位数进行跟踪,如果共有偶数个数,让指针指向相对较小的那个数#include <iostream>#i...原创 2014-07-23 14:21:59 · 548 阅读 · 0 评论 -
几道线段树题目
总结一下这段时间所写的线段树题目,觉得好久没写博客了 =、=UVA 12299 RMQ with Shifts题目链接:http://vjudge.net/contest/view.action?cid=51165#problem/H思路:直接上的挑战程序上的模板,需要注意输入格式及这种开区间写法带来的细节问题#include<cstdio>...原创 2014-08-01 15:21:55 · 516 阅读 · 0 评论 -
HDU 4923 Room and Moor(栈的应用 + 贪心)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4923题意:给了你一个A序列由0,1组成,然后让你找一个等长的B序列使得对应数差的平方和是最小的,序列为非递减序列,且元素值在0和1之间思路:首先我们可以得到某段区间[xl, xl+1, .. xr]和是∑(xl, xr) (xi-x)^2, 是一个形如:ax^2+bx+c 的函数,所以我...原创 2014-08-13 15:46:22 · 479 阅读 · 0 评论 -
POJ 3162 Walking Race(树形DP + 单调队列)
题目链接:http://poj.org/problem?id=3162题意:对一棵树,求出从每个结点出发能到走的最长距离(每个结点最多只能走一次),将这些距离按排成一个数组得到d[1],d[2],d[3]……d[n] ,在数列的d中求一个最长的区间,使得区间中的最大值与最小值的差不超过m。思路:先求出树的直径,对于树中任意结点i,到树的直径的2个端点的距离的较大者即为最长距离d[i]...原创 2014-11-10 21:55:54 · 537 阅读 · 0 评论 -
UVA 1400 "Ray, Pass me the dishes!" (线段树)
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=68200#problem/J题意:给一个长度为n的整数数列,然后给m个询问,对于每个询问(a, b)给出该区间内最大子序列之和的两个下标思路:询问次数很多,故需要线段树来维护三个值:max_sub,max_prefix,max_suffix,由于所要查询的区间...原创 2015-01-25 22:14:10 · 435 阅读 · 0 评论 -
POJ 2082 Terrible Sets(单调栈)
题目链接:http://poj.org/problem?id=2082题意:给定坐标系上一系列相邻的矩形,高度不等,求把这些矩形连起来看能够得到的最大矩形的面积思路:利用单调栈,去维护一个高度不下降的矩形,如果遇到一个高度比栈顶低的矩形就出栈,并计算出栈矩形的面积,最后再逐渐计算出最终维护下来的栈内的矩形的面积#include <cstdio>#...原创 2015-01-28 20:30:11 · 656 阅读 · 0 评论 -
HDU 3887 Counting Offspring (DFS + BIT或划分树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3887题意:给定一颗树,告诉你根节点,求每个结点下面序号比它小的数的个数思路:可以直接dfs,然后用树状数组去维护遍历到现在为止比当前结点小的数的个数,对于某结点当dfs开始遍历和回溯回来时BIT数组的差值即是所求结果。也可以先dfs记录下每个结点的编号,然后建造划分树,在划分树...原创 2015-03-30 16:04:34 · 389 阅读 · 0 评论 -
HDU 4638 Group (树状数组)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4638题意:给你一个n的排列,然后给你一个区间[L,R],问你区间中有多少个连续的段思路:先预处理整个区间,当我们将第i个数加入序列时,会有3种结果:1.a[i]-1和a[i]+1已经出现在a[i]之前了,添加a[i]进去等于合并了a[i]-1,a[i],a[i]+1,故有add...原创 2015-04-01 19:34:58 · 492 阅读 · 0 评论 -
HDU 4729 An Easy Problem for Elfness(树链剖分 + 二分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4729题意:给出一棵树,每条边有不同的容量,给出多组询问,每次询问给出源点,汇点和预算额,可以任意建一条新边其预算为A,或者将某条边扩大1的容量费用为B,问在预算允许范围内S-T的最大流为多少思路:在未进行任何操作时,先算出S-T的最大流,其实是树上瓶颈边的容量cap,如果A &l...原创 2015-10-05 21:27:26 · 555 阅读 · 0 评论 -
HDU 5458 Stability(树链剖分 + 并查集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5458题意:给出一张N个点,M条边的无向图,有两个操作:1.删除(u, v)间的一条边2.如果删除(u, v)间的一条边可使其不连通,找出这样的边的个数,就是找(u, v)间桥的个数思路:首先离线这些操作,时光倒流从最终状态逆着加边加回原图,可以考虑用并查集建树,...原创 2015-09-23 22:27:23 · 912 阅读 · 0 评论 -
HDU 3966 Aragorn's Story(树链剖分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3966题意:给出一棵树,有三种操作:1.(u, v)路径上的点权值全部加上X2.(u, v)路径上的点权值全部减去X3.查询u点的值思路:树链剖分,然后区间更新,单点查询#include <cstdio>#include <cstri...原创 2015-09-23 21:42:24 · 417 阅读 · 0 评论 -
HDU 5221 Occupation(树链剖分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5221题意:有个人想占领一棵树上的城市,有三种操作:1.占领(u, v)间的所有城市2.失去u城市3.占领以u点为根的所有城市每次操作后输出他所占领的所有城市权值和思路:对于1,2操作是树剖的基本操作,而对于3操作,可以在剖分时记录下每个点的子树的最大时间戳,这样因为...原创 2015-09-23 21:23:27 · 725 阅读 · 0 评论 -
POJ 2750 Potted Flower(线段树 + DP)
题目链接:http://poj.org/problem?id=2750题意:给出N个数成环,再给M个操作,每次操作会改变某个数的数值,问每次更新完成后区间的最大和是多少,该区间不能是整个区间思路:将环从某点切开看成一段序列,对于一个区间而言,如过所选序列不包括断点,那么直接求区间最大连续和smax即可,如果包括断点,那么答案则为max(smax, sum - smin),sum...原创 2015-08-10 21:47:36 · 790 阅读 · 0 评论 -
HDU 3016 Man Down(线段树 + DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3016题意:一个人从高处往下垂直下落,每次可以从该木板的两端下落到最近的且包含该端点的木板上,一开始血量为100,跳到某个木板上可能回血或扣血,当血量 <= 0时该游戏结束,问跳到地面血量最多为多少思路:首先要考虑如何寻找下次能跳的最近的左右两木板这一问题,我们可以将木板升序排...原创 2015-08-09 22:53:59 · 435 阅读 · 0 评论 -
HDU 4123 Bob’s Race(树形DP + 单调队列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4123题意:给一颗N个点的树,对于每个点i先要找出离它最远的点的距离,设该距离为dis[i],再给M个询问,寻找dis数组中最大值与最小值之差不超过Q的最长连续区间的长度思路:先找出树的直径的两端点,树上任意点一定是到这两端点中的某一点的距离最远,这样就能处理出dis数组,然后再用两...原创 2015-08-08 16:43:29 · 865 阅读 · 0 评论 -
HDU 3081 Marriage Match II(最大流 + 并查集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3081题意:给出每个女生能配对的男生,再给出每个女生的朋友,朋友关系能传递,每个女生也能和她朋友的男朋友配对,每次配对女生都要和不同的男生配对,问最多能配对多少轮思路:先用并查集处理女生间的关系,再二分答案,源点向女生连边容量为mid,女生向其能匹配的男生连边容量为1,每个男生再向汇...原创 2015-08-07 21:59:51 · 431 阅读 · 0 评论 -
HDU 5361 In Touch(最短路 + 线段树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5361题意:求1点到其他点的最短路,某点在与其相差在[L, R]范围的点有连边思路:普通的最短路经不起这么多边和状态,可以维护一颗线段树来维护当前区间的更新情况,再用优先队列去维护到下个点的最小值,用队列当前取出的点去更新区间并将被更新的点入队#include...原创 2015-08-07 20:28:07 · 589 阅读 · 0 评论 -
ZOJ 3886 Nico Number(素数筛选 + 线段树)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5556题意:定义一种Nico数,给出三种操作:1.询问[L, R]内有多少个Nico数2.[L, R]内的数全部对v取余3.将第K个数换成X思路:打表可知满足Nico数定义的有:素数,2的幂,6,可以先预处理出这些数,对于1,3操作线段树...原创 2015-08-03 19:59:38 · 471 阅读 · 0 评论 -
UVALive 6041 Retrenchment(KD树 + 计算几何)
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4052题意:二维平面给出N个点,有R个区域为多边形,对于每个区域给出M次询问,询问某个点在这个区域的最近点和次近点思路:对于每个区域先判断...原创 2015-08-01 23:12:34 · 823 阅读 · 0 评论 -
HDU 5313 Bipartite Graph(二分图 + bitset)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5313题意:给一张无向图,问最多还能加多少条边使其变成变成边数最多的完全二分图思路:还是先染色,然后对于每个联通分量能知道黑白各有多少个,当两边的点数越接近时,肯定总边数最多,故而可以dp,学了一下bitset的用法,看最终最接近(n + 1) / 2的且有值的那一位,即为最优解...原创 2015-07-31 20:50:23 · 520 阅读 · 0 评论 -
FZU 2190 非提的救赎(单调栈)
题目链接:http://acm.fzu.edu.cn/problem.php?pid=2190思路:从左到右,从上到下维护一个单调递增的栈,就能算出新加入的点会产生多少个新的矩形#include <cstdio>#include <cstring>#include <iostream>#include <algorithm...原创 2015-05-06 14:20:55 · 759 阅读 · 0 评论 -
HDU 2473 Junk-Mail Filter (删点并查集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2473题意:给n个点,m个操作,操作分两种,可以把两点合在同一集合或者把某点从原集合分离出去思路:并查集要增添一个“删除”功能,即保持原树的形态不变,新建一个节点,把要删除的点的信息映射到该点上,之后对此点操作即可#include <iostream>...原创 2015-04-14 00:40:05 · 566 阅读 · 0 评论 -
HDU 4267 A Simple Problem with Integers(线段树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4267题意:一开始给出n个位置的值,接下来的m个操作:1. a b k x 表示在 a 到 b 里面满足 (i-a)%k == 0 的位置上的值都加 x2. 询问a点的值思路:每次更新的都是满足i%k==a%k的位置,因为k<=10,故而考虑所有的取余情况共有55种,对...原创 2015-04-13 19:13:16 · 424 阅读 · 0 评论 -
HDU 3727 Jewel(划分树 + 二分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3727题意:有四类操作:1.insert x 在当前序列最后插入数x2.query_1 s t k查询序列[s, t]内第k小的数3.query_2 x查询数x的rank4.query_3 x查询[1, len]内第k小的数,len为当前序列的长度思路:因为...原创 2015-10-28 15:28:05 · 465 阅读 · 0 评论