随笔分类 - 数据结构
CodeForces 731C Socks (DFS或并查集)
摘要:题意:有n只袜子,k种颜色,在m天中,问最少修改几只袜子的颜色,可以使每天穿的袜子左右两只都同颜色。 析:很明显,每个连通块都必须是同一种颜色,然后再统计最多颜色的就好了,即可以用并查集也可以用DFS。 代码如下:
阅读全文
HDU 4756 Install Air Conditioning (MST+树形DP)
摘要:题意:n-1个宿舍,1个供电站,n个位置每两个位置都有边相连,其中有一条边不能连,求n个位置连通的最小花费的最大值。 析:因为要连通,还要权值最小,所以就是MST了,然后就是改变一条边,然后去找出改变哪条能使得总花费最大,dp[i][j] 表示那条边左边的 i 和右边的 j, 最短距离,然后枚举MS
阅读全文
HDU 4126 Genghis Khan the Conqueror (树形DP+MST)
摘要:题意:给一图,n个点,m条边,每条边有个花费,给出q条可疑的边,每条边有新的花费,每条可疑的边出现的概率相同,求不能经过原来可疑边 (可以经过可疑边新的花费构建的边),注意每次只出现一条可疑的边,n个点相互连通的最小花费的期望。 析:要想连通先让他们连通起来,先构造出一个MST,然后再暴力,如果这个
阅读全文
HDU 5918 Sequence I (KMP)
摘要:题意:给定一个序列,a1, a2, a3 ..., an 还有一个序列是 b1, b2, b3 .. bm,问你有多个 q,使得 aq, aq+p, aq+2p, ... aq+(m-1)p。 析:很容易看出来,就是每隔 p算一个序列有多少个匹配。KMP 裸版。 代码如下:
阅读全文
CodeForces 722C Destroying Array (并查集)
摘要:题意:给定 n 个数,然后每次破坏一个位置的数,那么剩下的连通块的和最大是多少。 析:用并查集来做,从后往前推,一开始什么也没有,如果破坏一个,那么我们就加上一个,然后判断它左右两侧是不是存在,如果存在,那么就合并起来, 然后不断最大值,因为这个最大值肯定是不递减,所以我们一直更新就好。 代码如下:
阅读全文
HDU 4514 湫湫系列故事――设计风景线 (树形DP)
摘要:题意:略。 析:首先先判环,如果有环直接输出,用并查集就好,如果没有环,那么就是一棵树,然后最长的就是树的直径,这个题注意少开内存,容易超内存, 还有用C++交用的少一些,我用G++交的卡在32764K,限制是32768K。。 代码如下:
阅读全文
Gym 100512G Grand Tour (拓扑排序)
摘要:题意:一个团队要去参观一些学校,某些学校要在某些学校之前先参观,并且每个学校有一个权值,团队去的时间与权值的差作为难过度(最小是0), 所有的难过度的最大值是伤心度,让你安排参观顺序,使得这个伤心度最小。 析:拓扑排序,并且要逆序排,这样的话,时间大的优先,可以用优先队列实现。 代码如下:
阅读全文
UVaLive 6581 && Gym 100299B What does the fox say? (模拟+STL)
摘要:题意:给定一些动物的叫声,然后再定某些动物的叫声,让你去除这些叫声后得到的叫声。 析:先存储所有的叫声,然后用map来记录其他的叫声,在输出时再判定一下就好。 代码如下:
阅读全文
HDU 5884 Sort (二分+k叉哈夫曼树)
摘要:题意:n 个有序序列的归并排序.每次可以选择不超过 k 个序列进行合并,合并代价为这些序列的长度和.总的合并代价不能超过T, 问 k最小是多少。 析:首先二分一下这个 k 。然后在给定 k 的情况下,这个代价其实就是 k 叉的哈夫曼树问题。然后用两个队列维护一下就好。 代码如下:
阅读全文
数据结构 机场管理程序
摘要:Description 给出机场中飞机及跑道的编号和多个操作,对于每个查询操作,输出查询结果。 Input 第一行是一个整数,代表数据组数。每组数据第 一行为两个整数n(1<=n<=10)、m(1<=m<=1000),分别代表机场跑道数量(实际上就是队列的个数) 和操作数量 (实质就是对队列操作的种
阅读全文
数据结构 Redo or Undo (模拟)
摘要:Description 编写程序模拟word中的“重做Redo”“撤销Undo” 两个按钮。即键盘输入一段文字(不能含#,e.g., I as Tom whether he will go to Beijingh)之后输入“#U”(“U”代表Undo)则撤销最后一个输入的字符(“h”),在输出位置重
阅读全文
数据结构 DNA序列 (KMP+暴力,或者STL+暴力)
摘要:Description 现有一个项目旨在从成千上万捐献的DNA分析地球上人类是如 何繁衍的。该项目邀请你写一个程序找出给定的DNA片段之间的相同之处,使得对个体的调查相关联。一个DNA碱基序列是指把分子中发现的氮基的序列给罗列 出来。有四种氮基:腺嘌呤(A)、胸腺嘧啶(T)、鸟嘌呤(G)和胞嘧啶(C
阅读全文
数据结构 英语词典 (STL+ set)
摘要:Description 利用串操作实现基于给定英文段落(100~200000)构造英文词典(英文单词按字典序排序) Input 一篇文章(包含若干个单词,标点符号全部是标准的英文字符)。 Output 输出文章里面所有单词(按照字典序,每个单词一行)。 Sample Input Hello worl
阅读全文
数据结构 领取礼品的顺序 (STL+模拟)
摘要:Description 很多购物网站或者商场经常会搞些所谓的先来先得之类的促 销。在这种促销下,该网站或商场许诺给客户准备礼物,但因为礼物有限,只能先来先得,送完为止。可以模拟这个先来先得场景:每个客户用一个编号来表示,用 户给出的客户编号的顺序就是客户访问网站或者商场的次序,设计的程序就是输出这一
阅读全文
数据结构 求表达式串的后缀表达式和值 (栈+模拟)
摘要:Description 基于任意给定的表达式串(包含的运算有加(+)、减(-)、乘(*)、除(/)、圆括号等,例如:输入3.4+5.6*(4.2-1),求其后缀表达式,并求表达式的计算结果。 Input 有多组输入数据,每一行一组输入,请处理到文件结束(EOF)。 每行一个表达式串(最多1000个字
阅读全文
数据结构 下车的顺序 (STL+stack)
摘要:Description 很多高校都有两个或多个校区,为了方便教师和学生往返于 这两个校区,学校在两个校区之间开通了校车。用于通勤的校车只有一个门,上、下车均需要通过此门,且校车的容量上限为c。车内过道很窄,只能容纳一个人通 过,为了运送更多的人,车内中间过道上设有活动、可折叠的坐椅,如果有人站在或者
阅读全文
数据结构 击鼓传花 (STL+模拟)
摘要:Description 设有N个人围成一个圈,每人手里都握着一个令牌写明一个 数字(随机生成的)。从第一个人开始玩“击鼓传花”游戏,第一个击的次数为其令牌上写明的数字数(假设为m1)。第m1个人出列。下次再从第m1+1个人 开始新的“击鼓传花”击的次数也为其令牌上写明的次数,等于该次数的人出列。重复
阅读全文
数据结构 求集合的交并补集 (STL)
摘要:Description 任意给定两个包含1-30000个元素的集合A,B(集合中元素类型为任意整型数,且严格递增排列),求A交B、A并B、A-B和B-A集合。 Input 输入第一行为测试数据组数。每组测试数据两行,分别为集合A、B。每行第一个数n(1<=n<=30000)为元素数量,后面有n个严格
阅读全文
CCF 201509-3 模板生成系统 (STL+模拟)
摘要:问题描述 成成最近在搭建一个网站,其中一些页面的部分内容来自数据库中不同的数据记录,但是页面的基本结构是相同的。例如,对于展示用户信息的页面,当用户为 Tom 时,网页的源代码是 而当用户为 Jerry 时,网页的源代码是 这样的例子在包含动态内容的网站中还有很多。为了简化生成网页的工作,成成觉得他
阅读全文
CCF 201512-4 送货 (并查集+DFS,欧拉路)
摘要:问题描述 为了增加公司收入,F公司新开设了物流业务。由于F公司在业界的良好口碑,物流业务一开通即受到了消费者的欢迎,物流业务马上遍及了城市的每条街道。然而,F公司现在只安排了小明一个人负责所有街道的服务。 任务虽然繁重,但是小明有足够的信心,他拿到了城市的地图,准备研究最好的方案。城市中有n个交叉路
阅读全文