随笔分类 - ACM萌动之旅
摘要:特征 1、对于每个节点,父节点的接受串是该节点的接受串的后缀,而且是最长的那个。用该节点的len减去父节点的fa.len,就是该节点表示的串中父节点不能表示的串个数。 同理,当插入这个节点,出现的新不同子串个数就是len-fa.len。 2、每个节点表示串出现的次数,是这个节点子树上有效节点的总数。
阅读全文
摘要:1、Calendar Game HDU - 1079 题意:两个游戏,Adam先手,每次将当前日期+1天或+1个月份(前提是加完后日期有效),谁先走到2001.11.4谁赢。现在给出一个起始日期(在1900.1.1~2001.11.4之间),问Adam能否赢。 思路:从最后一天2001.11.4向前
阅读全文
摘要:1、poj 3241 Object Clustering 题意:平面上有n个点,点之间的距离采用曼哈顿距离衡量。求一个最小距离X,使得在把这些点分为k组后,每组中两两点之间的距离不超过X。 思路:首先我们这么想,如果所有点都在1个组中,即k=1时,那么所要求的X即为该n个点的曼哈顿最小生成树的最大边
阅读全文
摘要:原理 1、离线操作。 2、划分成若干块,将区间先按块排序,块内按区间右边界排序。块大小一般为sqrt(n)。 3、按照排序后的区间进行操作,不断进行区间转移,更新答案。 题目 1、小Z的袜子(hose) HYSBZ - 2038 题意:有n只袜子,求区间内颜色相同的两只袜子的概率。 思路:对于区间[
阅读全文
摘要:原理 1、对于修改的值,在线段树中只会从该点到根的一条链中的信息被修改,我们对这些被修改的结点新建点,其他不变的点连回原来的线段树结点。这样就实现了历史版本的保存和新版本的建立。 2、对于[1,n]的数组(离散化排序),对每个前缀维护一颗线段树。 3、对树上的区间查询,以到根的距离作为“前缀”维护主
阅读全文
摘要:思想 点分治就是采用分治的思想递归处理子树,用容斥去除重复的贡献。 1、找到树的重心。 2、从当前树的重心开始,加上经过该重心的贡献,减去在同一棵子树的贡献,再对每一棵子树,重新寻找树的重心,重复2. 时间复杂度:O(nlogn*计算贡献时间) 题目 1、Tree POJ - 1741 题意:有一棵
阅读全文
摘要:模板参考:https://blog.csdn.net/saramanda/article/details/55253627 综合各位大大博客后整理的模板: 1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 const i
阅读全文
摘要:1、hdu 3966 Aragorn's Story 题意:敌人有n个帐篷,每个帐篷有初始人数,两两之间只有一条路径。现在进行q次操作,可以把c1到c2路径上的所有帐篷人数都加上或减去一个值,或者询问某个帐篷当前人数。 思路:树链剖分模板题,线段树,点权,区间更新,单点查询。 1 #include<
阅读全文
摘要:1、Knights in Chessboard LightOJ - 1010 题意:在n*m的棋盘上最多能放马多少个? 思路:设n最小。如果n为1,则可以放m个;如果n=2,可以放满一个田,空一个田,再放,最后剩下的为min(4,m%4*2);其他,则最多可以放棋盘的一半。 1 #include<i
阅读全文
摘要:1. Wannafly挑战赛3- A 珂朵莉 题面:给你一个长 n 的序列,m 次查询 。每次查询给一个 x,然后: 从序列的最左端 1 开始,每次随机的选择一个右端点 r,如果两个端点间的区间和不超过 x ,就进行一次分割,然后把左端点变成 r + 1, 否则一直随机下去。 问这样分割出来的期望段
阅读全文
摘要:1、uva 11374 Airport Express 题意:给出若干经济舱的路线和商务舱的路线,但只能选择乘坐一次商务舱。求前往机场的最短时间。 思路:分别从起点和终点求出到其他点的最短路,枚举每个商务舱,记录最小值。 1 #include<iostream> 2 #include<vector>
阅读全文
摘要:1、poj 2195 Going Home(二分图最小权匹配) 题意:图上有n个房子,n个人,现在安排每个人回到一所房间,求最小的步数和。 思路:KM算法模板题。注意反向。 附:推荐km算法大神博客: http://blog.sina.com.cn/s/blog_691ce2b701016reh.h
阅读全文
摘要:1、Educational Codeforces Round 29 F.Almost Permutation (见CF题记《Educational Codeforces Round 29》) 2、uva 11613 Acme Corporation 题意:有M月,X元素每个月单位保存费用为I,在每个
阅读全文
摘要:1、poj 115 TELE 题意:一个树型网络上有n个结点,1~n-m为信号传送器,n-m+1~n为观众,当信号传送给观众后,观众会付费观看,每铺设一条道路需要一定费用。现在求以1为根,使得收到观众的费用-铺设道路的费用>=0的情况下,能最多给多少个观众观看? 思路:树形dp,dp[i][j]表示
阅读全文
摘要:1、hdu 2126 Buy the souvenirs 题意:给出若干个纪念品的价格,求在能购买的纪念品的数目最大的情况下的购买方案。 思路:01背包+记录方案。 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using
阅读全文
摘要:1、hdu 1260 Tickets 题意:有k个人,售票员可以选择一个人卖,或者同时卖给相邻的两个人。问最少的售票时间。 思路:dp[i] = min(dp[i - 1] + singlep[i], dp[i - 2] + dbp[i - 1]);dp[i]表示卖到第i个人后所需最少时间。注意时间
阅读全文
摘要:1、HDU 3374 String Problem(见《KMP专题》15) 2、hdu 2609 How many(见《KMP专题》16) 3、uva 1314 Hidden Password 题意:给出一个字符串,求其最小表示法。 思路:最小表示法模板 1 #include<iostream> 2
阅读全文
摘要:1、UVa 1401 Remember the Word 题意:给出n个字符串集合,问其有多少种组合方式形成目标字符串。 思路:对n个字符串集合建立Trie树,保存每个结点的字符串的顺序编号。然后对这棵树查找目标字符串每一个后缀的前缀字符串,累加。 1 #include<cstdio> 2 #inc
阅读全文
摘要:1、uva 10054 The Necklace(欧拉回路) 题意:有n个具有两种颜色的珠子,现在需要将其串起来,要求前后珠子相邻颜色相同。 思路:以每一种颜色为结点,以珠子为边,判断是否联通和是否存在欧拉回路。 1 #include<iostream> 2 #include<vector> 3 #
阅读全文
摘要:后缀数组基本模板 ①倍增法(时间O(NlogN),空间O(N)) 1 #include<iostream> 2 using namespace std; 3 const int maxl = 100010; 4 char s[maxl]; 5 int totlen; 6 int r2[maxl],
阅读全文

浙公网安备 33010602011771号