随笔分类 -  ACM数据结构

Gym-101615D Rainbow Roads 树的DFS序 差分数组
摘要:题目链接: 题意 给一棵树,每个边权表示一种颜色。 现定义一条彩虹路是每个颜色不相邻的路。 一个好点是所有从该节点开始的所有简单路径(最短路)都是彩虹路。 问有哪几个好点?按编号输出。 思路 按节点遍历,若有多条路边权一样,则这几个子树都不是好点。 除去不好点,剩下即为好点。 一开始的思路是树上dp 阅读全文

posted @ 2018-09-04 21:36 糖栗子 阅读(331) 评论(0) 推荐(0) 编辑

HDU-5009 Paint Pearls 动态规划 双向链表
摘要:题目链接: 题意 给一串序列,可以任意分割多次序列,每次分割的代价是被分割区间中的数字种数。 求分割区间的最小代价。n include include include using namespace std; const int maxn=5e4+20, INF=0x3f3f3f3f; int n, 阅读全文

posted @ 2018-08-13 20:56 糖栗子 阅读(270) 评论(0) 推荐(0) 编辑

POJ-2823 Sliding Window 单调队列
摘要:题目链接: 题意 给一个序列和一个窗口,问在序列上的窗口不断移动的过程中,最大最小值分别是多少。 思路 单调队列裸题 提交过程 ||| : |: TLE n|不知道为什么超时,换成C++编译器就过了 AC| 代码 cpp include include const int maxn=1e6+20; 阅读全文

posted @ 2018-08-09 18:58 糖栗子 阅读(125) 评论(0) 推荐(0) 编辑

CodeForces-722C Destroying Array 并查集 离线操作
摘要:题目链接: 题意 给个数组,每次删除一个元素,删除的元素作为一个隔断,问每次删除后该元素左右两边最大连续和 思路 这个题的思路马上就想到的时候,别人直接抢答,还是比较厉害的人了 离线操作,删除变成添加,添加时注意左右两边元素的最大值即可 提交过程 ||| : |: WA|忘了为什么WA了 AC| 代 阅读全文

posted @ 2018-07-29 17:13 糖栗子 阅读(153) 评论(0) 推荐(0) 编辑

CodeForces-920E Connected Components? 广度搜索 双向链表 判断联通 大量重复节点的删除
摘要:题目链接: 题意 给一个补图,问各个联通块有几个元素,升序排列 注意maxn=2e5, maxm=2e10 思路 数据量超大,这本来是并查集专题的一道题 如果用并查集的话,向上维护一个元素个数,但首先离线建图是个问题O(n^2) 这样考虑的话,bfs O(n)就是更好的选择 提交上去TLE,当时写题 阅读全文

posted @ 2018-07-29 17:06 糖栗子 阅读(173) 评论(0) 推荐(0) 编辑

CodeForces-766D Mahmoud and a Dictionary 并查集 维护同类不同类元素集合
摘要:题目链接: 题意 写词典,有些词是同义词,有些是反义词,还有没关系的词 首先输入两个词,需要判断是同义还是是反义,若没关系就按操作归为同义或反义 思路 经典并查集的动物园问题 维护两个并查集,find(a)表示a的同类代表元,find(a+maxn)表示异类代表元 find(a)==find(b) 阅读全文

posted @ 2018-07-29 15:57 糖栗子 阅读(156) 评论(0) 推荐(0) 编辑

HDU-3038 How Many Answers Are Wrong 并查集
摘要:题目链接: 题意 有一个包含n个整型数字的序列 现给出一些陈述表示第A个数到第B个数的加和S(即sigma) 其中有些陈述是对的,有些是错的(在不能判断出对错的情况下,此陈述保证是对的) 问一共有几个错的陈述 思路 还是没有思路,原来有一个前缀和的想法,马上又被自己否定了 所以经验告诉我,以后有思路 阅读全文

posted @ 2018-03-22 23:16 糖栗子 阅读(121) 评论(0) 推荐(0) 编辑

HDU-6109 数据分割 并查集(维护根节点)
摘要:题目链接: 题意 给出多组等式不等式 对于每一个式子,首先判断是否不可能 如果不可能,记录本组正确式子的个数,然后进入下一组式子 思路 一开始还以为是食物链,等到写出来WA了才发现 不等号不能传递 (注意 并查集的传递性 了) 然后决定用一个set存下所有不等边,事后发现一个set难以维护和查询 最 阅读全文

posted @ 2018-03-21 15:07 糖栗子 阅读(152) 评论(0) 推荐(0) 编辑

ZOJ-3261 Connections in Galaxy War 并查集 离线操作
摘要:题目链接: 题意 有n个星星,之间有m条边 现一边询问与x星连通的最大星的编号,一边拆开一些边 思路 一开始是真不会,甚至想用dfs模拟 最后查了一下,这个题原来是要离线操作, 拆边就变为合并 这很为难哈哈,本以为有个什么更好的数据结构(动态树?) 存边我们用一个set<int>来存一个 阅读全文

posted @ 2018-03-21 00:01 糖栗子 阅读(152) 评论(0) 推荐(0) 编辑

luogu-1908 逆序对 离散化+树状数组
摘要:题目链接: 题意 简单的求逆序对 思路 用树状数组来做逆序对 对于过大的数字来讲,用离散化处理即可 比赛的时候没有想到离散化啊,笨 还有一点,如果有重复数字出现的话,可以考虑用一个vis数组存下对应元素出现的次数,计数时减掉就好 代码 cpp include include include defi 阅读全文

posted @ 2018-03-12 13:54 糖栗子 阅读(114) 评论(0) 推荐(0) 编辑

[笔记-数据结构]哈希表
摘要:哈希表用来 插入数据,查找数据 基本操作也就是 插入和查找 空间复杂度O(n),时间复杂度可看为线性复杂度O(n) std::map使用红黑树的结构,插入查找O(log(n))的时间复杂度 不知道acm让不让用hash_map头文件 我猜不行吧,不然为啥要手写哈希表呢 模板 这里为了方便,写成了结构 阅读全文

posted @ 2018-02-23 15:32 糖栗子 阅读(159) 评论(0) 推荐(0) 编辑

POJ-3264 Balanced Lineup 线段树
摘要:题目链接: 题意 给出N,Q 在一个含有N个数的序列中,询问[a, b]中的最大值最小值差值Q次 思路 其实就是查询区间最值 一开始可以想到维护一个二维数组来存区间差值 然而算了一下,空间根本不够 没办法,写线段树吧 用线段树的区间查询函数即可 还有一种解决方法,就是 ST算法 (Sparse Ta 阅读全文

posted @ 2018-02-23 14:45 糖栗子 阅读(100) 评论(0) 推荐(0) 编辑

HDU-1541 Stars 树状数组
摘要:题目链接: 题意 天上有许多星星 现给天空一个平面坐标轴,统计每个星星的level, level是指某一颗星星的左下角(x include define lowbit(x) ((x)&( x)) const int XMAX=32000; int n, stars[XMAX+5]; int sum( 阅读全文

posted @ 2018-02-23 11:46 糖栗子 阅读(118) 评论(0) 推荐(0) 编辑

HDU-1166 敌兵布阵 树状数组
摘要:题目链接: 题意 中文题目 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每 阅读全文

posted @ 2018-02-23 11:14 糖栗子 阅读(99) 评论(0) 推荐(0) 编辑

POJ-1182 食物链 并查集(互相关联的并查集写法)
摘要:题目链接: 题意 中文题目,就不写了哈哈 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。 现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是 阅读全文

posted @ 2018-02-21 11:58 糖栗子 阅读(159) 评论(0) 推荐(0) 编辑

POJ-2236 Wireless Network 并查集
摘要:题目链接: 题意 灾区断网,欲修理之 现给各机器坐标和正常信号的连接距离 一边修电脑,一边问某两个电脑之间能否正常链接 思路 并查集入门题目 当修电脑的同时,把此电脑加入可链接的电脑集合 当询问时,输出电脑的根节点即可 代码 cpp // why runtime error? // because 阅读全文

posted @ 2018-02-20 22:08 糖栗子 阅读(137) 评论(0) 推荐(0) 编辑

POJ-2785 Values whose Sum is 0 Hash表
摘要:题目链接: 题意 给出四组数,每组有n个数 现从每组数中取一个数作为a,b,c,d 问有几组这样的a+b+c+d=0 思路 首先把第一组和第二组的和添加在hash表里 再枚举三组四组的和,查找即可 代码 cpp include include const int hashSize=int(4e5), 阅读全文

posted @ 2018-02-20 17:26 糖栗子 阅读(123) 评论(0) 推荐(0) 编辑

【数据结构】树状数组
摘要:使用目的 树状数组是为了解决多次单点更新,区间查询等问题的数据结构。 树状数组的更新与查询复杂度均为O(logn)。 为了方便理解树状数组的优势,这里先给出一道题目: 给一大小固定的A数组,现用户可随意更改此数组的任何n个元素为任何值,且用户还想知道每次更改元素后数组中下标从0到m的元素的和。请你用 阅读全文

posted @ 2017-10-22 16:07 糖栗子 阅读(215) 评论(0) 推荐(0) 编辑

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示