- 博客(40)
- 收藏
- 关注
原创 [zoj]: 1610 & [poj]: 2777 (颜色覆盖题)
zoj1610 Count the ColorsTime Limit: 2 Seconds Memory Limit: 65536 KB Painting some colored segments on a line, some previously painted segments may be covered by some the subsequent ones. Your
2017-05-29 18:46:01 398
原创 [vijos 1659]: 河蟹王国
河蟹王国 描述 河蟹王国有一位河蟹国王,他的名字叫羊驼。河蟹王国富饶安定,人们和谐相处。有一天,羊驼国王心血来潮,想在一部分人中挑出最和谐的人。于是,羊驼国王将他的子民排成了一列(==!!b汗~好长呀)。每个人都有一个初始的和谐值。羊驼国王每次会选择一个区间[L,R],这个区间中和谐值最大的人就是国王选出的人。而且,在某一时间,区间[L’,R’]里的人会变得熟悉,因此他们每个人的和谐值都会上升一
2017-05-29 18:28:49 233
原创 [noip 2012] 换教室(线段树)
借教室 描述 在大学期间,经常需要租借教室。大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室。教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样。 面对海量租借教室的信息,我们自然希望编程解决这个问题。我们需要处理接下来n天的借教室信息,其中第i天学校有ri个教室可供租借。共有m份订单,每份订单用三个正整数描述,分别为dj,sj,tj,表示某租借者需要从第sj天到第tj
2017-05-29 18:14:15 232
原创 [codevs]: 切水果(线段树)
1299 切水果 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 简单的说,一共N个水果排成一排,切M次,每次切[L,R]区间的所有水果(可能有的水果被重复切),每切完一次输出剩下水果数量 数据已重新装配,不会出现OLE错误 时限和数据范围适当修改,避免数据包过大而浪费空间资源输入描述 Input De
2017-05-29 17:54:10 324
原创 [笔记]: 线段树
线段树和树状数组的功能类似 但是比树状数组强大的是线段树可以进行区间的更新操作(不只是单点更新)如把数组1-3加5 或者把数组5-6全部改为4 等等但是线段树的代码量比树状数组要大下面代码/*线段树输入一个数组改变区间l到r 使a数组l到r每个加上d求区间ll到rr的和 样例:101 2 3 4 5 6 7 8 9 105 7 2 1 8 输出42 */#include
2017-05-26 11:54:50 324
原创 [bzoj 1103] 大都市meg(树状数组和dfs序)
传送门 Description 在经济全球化浪潮的影响下,习惯于漫步在清晨的乡间小路的邮递员Blue Mary也开始骑着摩托车传递邮件了。 不过,她经常回忆起以前在乡间漫步的情景。昔日,乡下有依次编号为1..n的n个小村庄,某些村庄之间有一些双 向的土路。从每个村庄都恰好有一条路径到达村庄1(即比特堡)。并且,对于每个村庄,它到比特堡的路径恰好 只经过编号比它的编号小的村庄。另外,对于所有
2017-05-25 18:51:00 293
原创 [bzoj 3155] Preprefix sum(树状数组)
传送门DescriptionInput第一行给出两个整数N,M。分别表示序列长度和操作个数 接下来一行有N个数,即给定的序列a1,a2,….an 接下来M行,每行对应一个操作,格式见题目描述 Output对于每个询问操作,输出一行,表示所询问的SSi的值。Sample Input5 3 1 2 3 4 5 Query 5 Modify 3 2 Query 5Sample Output3
2017-05-25 15:10:55 237
原创 [bzoj 1452] Count (树状数组)
传送门 题目描述 输入 输出 样例输入 样例输出 1 2 提示 思路 因为权值最大为100 所以对于每一种权值建一个树状数组 然后维护和查询就不多说了 (PS:输出千万别用cout 我RE了10次 改printf就A了!! QwQ)#include<iostream>#include<cstdio>#include<cstring>using name
2017-05-25 11:48:12 326
原创 [vijos 1066和1052] 简单树状数组练习题
背景SuperBrother在机房里闲着没事干(再对比一下他的NOIP,真是讽刺啊……),于是便无聊地开始玩“打鼹鼠”…… 描述在这个“打鼹鼠”的游戏中,鼹鼠会不时地从洞中钻出来,不过不会从洞口钻进去(鼹鼠真胆大……)。洞口都在一个大小为n(n<=1024)的正方形中。这个正方形在一个平面直角坐标系中,左下角为(0,0),右上角为(n-1,n-1)。洞口所在的位置都是整点,就是横纵坐标都为整数的点
2017-05-25 09:33:02 502
原创 [笔记]: 前向星
前向星与邻接表都存储图的方式 前向星是一种数据结构,以储存边的方式来存储图。构造方法如下:读入每条边的信息,将边存放在数组中,把数组中的边按照起点顺序排序(可以使用基数排序,如下面例程),前向星就构造完了。通常用在点的数目太多,或两点之间有多条弧的时候。一般在别的数据结构不能使用的时候才考虑用前向星。除了不能直接用起点终点定位以外,前向星几乎是完美的。/*样例:6 8 1 2 1 1 3
2017-05-25 09:13:08 850
原创 [poj 3321]:Apple Tree(树状数组/线段树 和dfs序)
Apple Tree Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 29084 Accepted: 8633 Description There is an apple tree outside of kaka’s house. Every autumn, a lot of apples wi
2017-05-24 14:08:59 1100
原创 [noip 2013]火柴排队(树状数组/线段树 求逆序对)
描述涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度。现在将每盒中的火柴各自排成一列,同一列火柴的高度互不相同,两列火柴之间的距离定义为: ) 2 ,其中 a_ia i 表示第一列火柴中第 i 个火柴的高度,b_ib i
2017-05-24 09:36:45 241
原创 [vijos 1448]: 校门外的树(树状数组/线段树)
描述校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的…… 如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两个操作: K=1,K=1,读入l、r表示在区间[l,r]中种上一种树,每次操作种的树的种类都不同 K=2,读入l,r表示询问l~r之间能见到多少种树 (l,r>0) 格式输入格式第一行n,m表示道路总长为n,共有m个操作 接下
2017-05-23 16:36:44 574
原创 [笔记]: 树状数组
主要看图 i往上找就是i+=2^k; 往下就是减 k是i的二进制右边0的个数 2^k 直接等于i&(-i); 传送门:写的很好 总结 首先,明白树状数组所白了是按照二分对数组进行分组;维护和查询都是O(lgn)的复杂度,复杂度取决于最坏的情况,也是O(lgn);lowbit这里只是一个技巧,关键在于明白c数组的构成规律;分析的过程二进制一定要深入人心,当作心目中的
2017-05-23 15:31:04 231
原创 [noip 2016普及组第三题]: 海港
题目描述小K是一个海港的海关工作人员,每天都有许多船只到达海港,船上通常有很多来自不同国家的乘客。小K对这些到达海港的船只非常感兴趣,他按照时间记录下了到达海港的每一艘船只情况;对于第i艘到达的船,他记录了这艘船到达的时间ti (单位:秒),船上的乘 客数星ki,以及每名乘客的国籍 x(i,1), x(i,2),…,x(i,k);。小K统计了n艘船的信息,希望你帮忙计算出以每一艘船到达时间为止的24
2017-05-22 19:10:08 1538
原创 [笔记]: 树转二叉树
给出一个多叉树 那么怎么将树转换为一个二叉树呢?/*树-->二叉树 给出一棵树 将此树转化为二叉树采用兄弟表示法 如给出: A B C D E F转化为: A B E C F D转换方法将 树的 最左结点作为二叉树的左节点 从第二个结点开始(左节点的兄弟) 作为二叉数中的右儿子 如例子中的 c是b的兄弟 所
2017-05-18 10:22:57 288
原创 [笔记]: 二叉排序树
二叉排序树: 二叉树中每个数都有 左结点小于根结点小于右结点 二叉排序树的中序遍历就是结点的data从小到大排序 建树过程: 对于每个结点 从根结点出发 如果大于结点就往右走 小于就往左走 如走到一个结点为空 则将此结点建入树 /* 如输入 31524 树为 3 1
2017-05-18 09:34:12 373
转载 [转] 最长回文子串——Manacher算法
转自https://segmentfault.com/a/1190000003914228 0. 问题定义 最长回文子串问题:给定一个字符串,求它的最长回文子串长度。如果一个字符串正着读和反着读是一样的,那它就是回文串。下面是一些回文串的实例:12321 a aba abba aaaa tattarrattat(牛津英语词典中最长的回文单词) 1. Brute-force 解法 对于最长回文
2017-05-17 18:27:39 495
原创 [笔记]: 哈弗曼树(最优二叉树)
给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。 哈夫曼树(霍夫曼树)又称为最优树. 1、路径和路径长度 在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第
2017-05-17 16:38:53 413
原创 [noip 2004普及组] FBI树
描述我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串。 FBI树是一种二叉树1,它的结点类型也包括F结点,B结点和I结点三种。由一个长度为2^N的“01”串S可以构造出一棵FBI树T,递归的构造方法如下: 1) T的根结点为R,其类型与串S的类型相同; 2) 若串S的长度大于1,将串S从中间分开,分为等长的左右子串S1和
2017-05-17 14:29:59 443
原创 [笔记]: 二叉树 遍历转换
遍历命名 根据访问结点操作发生位置命名: ① NLR:前序遍历(Preorder Traversal 亦称(先序遍历)) ——访问根结点的操作发生在遍历其左右子树之前。 (中 左 右) ② LNR:中序遍历(Inorder Traversal) ——访问根结点的操作发生在遍历其左右子树之中(间)。 (左 中 右) ③ LRN:后序遍历(Postorder Traversal)
2017-05-16 19:55:20 457
原创 [笔记]:指针 链表 邻接表
1.指针#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<cmath>using namespace std;int main(){ int a; scanf("%d",&a); int *b; *b=a;
2017-05-16 15:28:36 601
原创 [洛谷 2580] 于是他错误的点名开始了 (字典树)
题目背景XS中学化学竞赛组教练是一个酷爱炉石的人。他会一边搓炉石一边点名以至于有一天他连续点到了某个同学两次,然后正好被路过的校长发现了然后就是一顿欧拉欧拉欧拉(详情请见已结束比赛CON900)。题目描述这之后校长任命你为特派探员,每天记录他的点名。校长会提供化学竞赛学生的人数和名单,而你需要告诉校长他有没有点错名。(为什么不直接不让他玩炉石。)输入输出格式输入格式: 第一行一个整数 n,表示班上
2017-05-16 09:50:08 468
原创 [笔记]:归并排序
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 归并过程为:比较a[i]和b[j]的大小,若a[i]≤b[j],则将第一个有序表中的元素a[i]复制到r[k]中,并
2017-05-15 18:52:59 191
转载 [vijos 1425]子串清除
描述我们定义字符串A是字符串B的子串当且仅当我们能在B串中找到A串。现在给你一个字符串A,和另外一个字符串B,要你每次从B串中从左至右找第一个A串,并从B串中删除它,直到A串不为B串的子串,问你需要进行几次删除操作。 格式输入格式输入文件共2行,第一行一个字符串A(长度小于256),第二行一个字符串B。 30%的数据是随机生成的; 50%的数据满足输入文件大小小于300KB; 100%的数据
2017-05-15 18:33:13 433
原创 [noip 2011普及组No.2] 统计单词数
背景noip2011 NO.2 描述一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例1),
2017-05-15 16:36:52 1451
转载 string类一些常用函数用法
insert string的成员函数insert有以下多种重载:string &insert(int p0, const char *s);——在p0位置插入字符串sstring &insert(int p0, const char *s, int n);——在p0位置插入字符串s的前n个字符string &insert(int p0,const string &s);——在p0位置插入字符串ss
2017-05-15 15:05:25 317
原创 [vijos 1379] 字符串的展开
描述 在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的 字符串中,含有类似于“d-h”或者“4-8”的字串,我们就把它当作一种简写,输出时,用连续 递增的字母获数字串替代其中的减号,即,将上面两个子串分别输出为“defgh”和“45678”。在 本题中,我们通过增加一些参数的设置,使字符串的展开更为灵活。具体约定如下:
2017-05-15 11:12:46 444
原创 [vijos 1677] 陶陶的名字(kmp)
背景陶陶是一个智能机器人,他能像人一样思考问题,不过由于IQ问题,他给自己取了一个很长很长的名字。 描述某一天,陶陶想把自己的名字涂在墙上。由于他的名字太长,为了省事,他从自己名字的开头截取了一段作为模板。我们不妨设这个模板的长度为l,陶陶的名字的长度为L,那么有1≤l≤L。然后陶陶会用这个模板进行若干次喷涂,喷出自己的名字
2017-05-13 09:36:53 533
原创 [poj 2752] Seek the Name,Seek the Fame(kmp算法)
POJ-2752 Seek the Name, Seek the Fame ——-KMP Seek the Name, Seek the Fame Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8261 Accepted: 3883 DescriptionThe little cat is so fam
2017-05-13 08:21:36 459
原创 [笔记]:[字符串] kmp算法
KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法)。KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是实现一个next()函数,函数本身包含了模式串的局部匹配信息。时间复杂度O(m+n)。
2017-05-12 19:46:27 337
原创 [openjudge 6263] 布尔表达式(栈)
描述 输入一个布尔表达式,请你输出它的真假值。 比如:( V | V ) & F & ( F | V ) V表示true,F表示false,&表示与,|表示或,!表示非。 上式的结果是F输入 输入包含多行,每行一个布尔表达式,表达式中可以有空格,总长度不超过1000 输出 对每行输入,如果表达式为真,输出”V”,否则输出”F”
2017-05-12 19:05:08 2552 2
原创 [poj 2001] Shortest Prefixes(tire树的简单应用)
Shortest Prefixes Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 18363 Accepted: 7962
2017-05-12 15:29:30 338
原创 [笔记]:[字符串]trie数的基本构造
Trie 树, 又称字典树,单词查找树。它来源于retrieval(检索)中取中间四个字符构成(读音同try)。用于存储大量的字符串以便支持快速模式匹配。主要应用在信息检索领域。
2017-05-12 10:46:12 314
原创 [noip 2005] 等价表达式(equal)
描述明明进了中学之后,学到了代数表达式。有一天,他碰到一个很麻烦的选择题。这个题目的题干中首先给出了一个代数表达式,然后列出了若干选项,每个选项也是一个代数表达式,题目的要求是判断选项中哪些代数表达式是和题干中的表达式等价的。 这个题目手算很麻烦,因为明明对计算机编程很感兴趣,所以他想是不是可以用计算机来解决这个问题。假设你是明明,能完成这个任务吗? 这个选择题中的每个表达式都满足下面的性质:
2017-05-11 18:29:11 826
原创 [openjudge 7213] 垃圾炸弹
描述 2014年巴西世界杯(2014 FIFA World Cup)开踢啦!为了方便球迷观看比赛,里约街道上很多路口都放置了的直播大屏幕,但是人群散去后总会在这些路口留下一堆垃圾。为此巴西政府决定动用一种最新发明——“垃圾炸弹”。这种“炸弹”利用最先进的量子物理技术,爆炸后产生的冲击波可以完全清除波及范围内的所有垃圾,并且不会产生任何其他不良影响。
2017-05-11 08:35:35 599
原创 [openjudge 1813] 熄灯问题
openjudge 1813 熄灯问题 描述 有一个由按钮组成的矩阵,其中每行有6个按钮,共5行。每个按钮的位置上有一盏灯。当按下一个按钮后,该按钮以及周围位置(上边、下边、左边、右边)的灯都会改变一次。即,如果灯原来是点亮的,就会被熄灭;如果灯原来是熄灭的,则会被点亮。在矩阵角上的按钮改变3盏灯的状态;在矩阵边上的按钮改变4盏灯的状态;其他的按钮改变5盏灯的状态。
2017-05-10 19:27:07 1031 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人