自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

(╯°口°)╯(┴—┴

┬—┬ ノ( ' - 'ノ)

  • 博客(65)
  • 收藏
  • 关注

原创 BZOJ 3574 HNOI 2014 抄卡组 字符串Hash+STL

题目大意:给出一些表示卡组的字符串,字符串中可能出现‘*’符号(并不是BZ上以前写的‘#’号,更不是“ ‘*’ ”。。。),这个符号可以代表任意字符串(包括空串)。问所有的字符串是否能够相同。思路:题目描述,样例有误,数据范围坑爹,官方数据出错,BZ输入流过大RE。。这题做完了都不知道该说什么好了。。。整个就是一个常数很大的O(n)模拟题而已。。。首先数据范围十分坑爹,N*最长

2014-12-31 14:42:31 2726 2

原创 BZOJ 1270 Beijing Wc 2008 雷涛的小猫 动态规划

题目大意:给出一个棵果树,上面有些地方长了一些果子。现在有一只小猫想去吃这些果子,他从最高处往下跳,每到一个地方可以吧这个地方的果子全吃掉。也可以向旁边的果树上跳。问小猫最多能吃到多少果子。思路:WC的无脑动规大水题。随便加个小优化就过了。。CODE:#include #include #include #include #define MAX 3510u

2014-12-31 14:36:21 929

原创 BZOJ 1821 JSOI 2010 Group 部落划分 Group Kruskal

题目大意:给出平面上的一些点,现在要把这些点分成k组,求每组之间的距离的最小值的最大值。思路:很水的题,只需要做一次最小生成树 ,然后去掉k-1条边,第k-2条边就是答案。CODE:#include #include #include #include #include #include #define MAX 1010using namespace

2014-12-30 20:19:23 592

原创 BZOJ 3238 AHOI 2013 差异 后缀数组+单调栈

题目大意:思路:一看各种后缀那就是后缀数组没跑了。求出sa,height之后就可以乱搞了。对于height数组中的一个值,height[i]来说,这个值能够作为lcp值的作用域只在左边第一个比他小的位置到右边第一个比他小的位置。这个东西很明显可以倍增RMQ+二分/单调栈。之后就是数学题了Σlen[Ti] + len[Tj] = (len + 1) * len * (len

2014-12-30 20:11:06 767

原创 BZOJ 2438 中山市选 2011 杀人游戏 Tarjan

题目大意:给出一张有向人物关系图,告诉你谁认识谁,认识具有传递性。其中有一个人是犯人。现在警察要调查谁是犯人。他可以问任何人。但是如果他问到了犯人,那么它就会死。如果他问到的一个人认识犯人,这个人就会告诉警察谁是犯人。问警察保证自身安全并知道犯人是谁的概率最大是多少。思路:这个题前一阵子重测了,加强了数据,卡掉了网上一片AC代码。。正解并不是很难想。首先先缩点,整个图变成拓扑图,之

2014-12-30 10:48:48 895

原创 BZOJ 1706 usaco 2007 Nov relays 奶牛接力跑/POJ 3613 Cow Relays 倍增Floyd

题目大意:求恰好走k步从S到T的最短路。思路:设f[p][i][j]为从i到j恰好走2^p步的最短路,DP方程十分简单:f[p][i][j] = min(f[p][i][j],f[p - 1][i][k] + f[p - 1][k][j]);对总步数T进行二进制拆分,在T有1的位置上,假如这个位置为p,那么就用f[p][][]来更新答案g[][],最后得到的g[][]就是答案矩阵。

2014-12-30 09:03:16 955

原创 BZOJ 1221 HNOI 2001 软件开发/网络流24题 餐巾计划问题 最小费用最大流

题目大意:有一个软件公司,每天需要给一些员工准备消毒毛巾,这些毛巾可以循环利用,但是需要消毒。可以将毛巾送去消毒,有两种方式,A天fA花费,B天fB花费。或者还可以直接买新毛巾,问为了满足员工的需求,至少需要花多少钱。思路:经典的费用流问题。将每一天拆点,S向每一天CODE:#include #include #include #include #inc

2014-12-29 20:53:15 987

原创 BZOJ 1833 ZJOI 2010 count 数字计数 数位DP

题目大意:问0~9这10个数字在[l,r]中出现过多少次。思路:数位DP。以前只是听说过,并没有写过,写了才发现好闹心啊。。预处理一个数组,f[i][j][k]表示长度为i,开头为j,数字k出现的次数。对于一个数kXXXXXX,我们先处理1~999999,然后处理1000000~kXXXXXX前面的东西很规则,可以直接调用f数组来解决。对于后面不太规则的东西,按位处理。

2014-12-29 19:56:19 806

原创 BZOJ 2165 大楼 倍增Floyd

题目大意:给出一个有向图,问总路径长度>=k最少需要经过多少边。思路:记录几个辅助数组,f[p][i][j]表示走2^p步时最长的路径是多少。g[i][j]表示目前从i到j最长路是多长。f的dp方程是f[p][i][j] = max(f[p][i][j],f[i - 1][i][j] = f[i - 1][j][k]);然后在处理g数组的时候当从1开始的最长路大于等于k的时候就

2014-12-29 18:28:36 1510

原创 BZOJ 3813 奇数国 欧拉函数+线段树+乘法逆元

题目大意:给出一个序列,支持修改操作,求这个序列连续一段的乘积的欧拉函数。每个数的最大质因子不超过281。思路:φ(n) = n * (1 - 1 / p1) * (1 - 1 / p2) * (1 - 1 / p3) * (1 - 1 / p4)……*(1 - 1 / pn) = n  / (p1 * p2 * p3 * …… * pn) * ((p1 - 1) * (p2 -

2014-12-29 09:24:33 1063

原创 BZOJ 3823 定情信物 线性筛乘法逆元

题目大意:n维多面体中有多少n-1维,n-2维,n-3维。。。1维元素,求他们的异或和并%p。思路:考试题,当时做的时候不会线性筛乘法逆元,就得了70分。。。算法和标程不太一样,标程好象是递推,但是我空间想象力不够,没推出来。。只能找规律了。。花了一个半小时才找出来的规律。。CODE:#include #include #include #includ

2014-12-29 07:19:19 1052

原创 BZOJ 2823 AHOI 2012 信号塔 凸包+最小圆覆盖

题目大意:给出平面上n个点,求最小圆覆盖。思路:圆覆盖问题只与所有点中凸包上的点有关,因此先求一下凸包,然后数据范围骤减。大概是只剩下logn左右个点。这样就可以随便浪了。先找所有三个点组成的圆,然后找两个点为直径所组成的圆。还有就是三角形的外心公式,简直不是人推的,然后我就机制的百度了,结果如下:不要模拟退火。。。样例很坑,当你算出2.49 2.86的时候,不

2014-12-26 17:14:49 936

原创 高精度乘法FFT 模板

渣模板,不知为何常数还挺大。。CODE:#include #include #include #include #include #define MAX 200010#define PI 3.1415926535897932384626using namespace std;struct Complex{ double real,imag; Compl

2014-12-26 10:32:40 1436

原创 BZOJ 2179 FFT快速傅立叶 FFT

贴个渣模板CODE:#include #include #include #include #include #define MAX 140010#define PI 3.1415926535897932384626using namespace std;struct Complex{ double real,imag; Complex(double

2014-12-26 10:09:53 934

原创 BZOJ 1941 SDOI 2010 Hide and Seek K-D树

题目大意:给出平面上n个点,一个点离所有点的最长距离和最短距离的差最小,求这个最小的差。思路:50W的数据为何O(nsqrt(n))的暴力能过???CODE:#include #include #include #include #define MAX 500010#define INF 0x3f3f3f3fusing namespace std;#d

2014-12-25 20:22:51 811

原创 BZOJ 2626 JZPFAR K-D树

题目大意:给出平面上的一些点,求到一个点的最远的第k个点的标号。思路:朴素的K-D树建树,然后在搜索的时候维护一个小跟堆,保留着最大的k个点,然后吧第k大的点作为基准点来判断是否更新其他的点。CODE:#include #include #include #include #include #include #define MAX 100010#def

2014-12-25 17:21:29 899

原创 BZOJ 3563 DZY Loves Chinese / BZOJ 3569 DZY Loves Chinese II 随机化+高斯消元解异或方程组

题目大意:给出一个无向图,问删掉k条边的时候,图是否联通。思路:虽然我把这两个题放在了一起,但是其实这两个题可以用完全不同的两个解法来解决。第一个题其实是DZY出错了。。。把每次的边数也异或了,那就直接用这个性质一个一个往后推就行了。。最后一个暴力求一下。。第二个题才是本意啊。听到做法的时候我惊呆了。。首先是将整个图中拆出一个树,那么所有边就分为树边和非树边。将所有非树

2014-12-25 15:04:39 930

原创 BZOJ 3190 JLOI 2013 赛车 暴力

题目大意:给出一些赛车的速度和初始位置,问那些赛车在比在中有过领先于其他所有车的时候。思路:正解是解不等式组然后半平面交,不太想写。据说当年这个题暴力只卡掉了1个点,但是如果半平面交没写明白分就很低了。。暴力也没什么好说的,就是注意一下输出,最后不能有换行,否则PE。。CODE:#include #include #include #include #d

2014-12-25 11:05:07 1108

原创 BZOJ 3065 带插入区间K小值 替罪羊树套线段树

题目大意:带插入,单点修改的区间k小值在线查询。思路:本年度做过最酸爽的题。树套树的本质是一个外层不会动的树来套一个内层会动(或不会动)的树。两个树的时间复杂度相乘也就是差不多O(nlog^2n)左右。但是众所周知,高级数据结构经常会伴有庞大的常数,所以一般来说树套树的常数也不会小到哪去。所以在做这种题的时候先不要考虑常数的问题。。。为什么要用替罪羊树呢?因为一般的平衡树都是会

2014-12-24 19:17:16 959

原创 BZOJ 2648 SJY摆棋子 / 2716 Violet 3 天使玩偶 K-D树

题目大意:平面上有一些点,问一个点周围离它最近的点的曼哈顿距离是多少。支持动态加点。思路:CDQ分治可以离线解决,但是SJY是卡CDQ的,天使玩偶可以过。毕竟K-D树的O(sqrt(n))的时间复杂度摆在那。K-D树理解起来其实不难,有k个维度的时候,每一层按照一个维度排序,取出按照这个维度排序的中位数,当作这个块的根,然后将这个块分开。还有一个比较重要的东西就是估价函数,这个函数

2014-12-24 11:07:13 1868

原创 BZOJ 3295 CQOI 2011 动态逆序对 线段树套Treap

题目大意:给出一个数列,每次从这个序列中删掉一个数字,问每次删之前逆序对的数量是多少。思路:这个题用CDQ分治是飞快的,然而我不知道怎么写。。于是就朴素的写了树套树。然后就朴素的被卡常了内层用一个线段树。这个线段树不修改,一开始就要建好,然后线段树的每一个节点维护一个平衡树,存的是线段树存的区间中所有的值。一开始先算一下逆序对数,然后每次删点的时候,先查询在这个点之前有多少大于

2014-12-23 16:42:30 918

原创 BZOJ 1339 Baltic 2008 Mafia 最小点割集

题目大意:一个城市中有些点,有一些双向道路将这些点连接起来,每个点都有权值,求警察最少占据的点的权值和使得从A点无法到达B点。思路:最小点割集签到题。CODE:#include #include #include #include #include #define MAX 80010#define INF 0x3f3f3f3fusing namespa

2014-12-23 13:58:50 1076

原创 BZOJ 3210 花神的浇花集会 切比雪夫距离

题目大意:平面上一些点,求一个点到所有点的切比雪夫距离只和最小。思路:和那个松鼠的题目比较像,但是松鼠的那个是求的点是所有点中的一个点,而这个题却不一定。和那个题一样,将横纵坐标分别排序,然后取中位数统计。但是有可能会出现小数,因此随即调整一下,取最小值就行了。CODE:#include #include #include #include #define

2014-12-23 12:48:50 1107

原创 BZOJ 3170 TJOI 2013 松鼠聚会 切比雪夫距离

题目大意:给出平面上的一些点,求这些点中的一个使得所有点到这个点的切比雪夫距离之和最短。思路:切比雪夫距离和曼哈顿距离是可以相互转化的,具体实现就是吧一个点的坐标由(x,y)变成(x - y,x + y),求切比雪夫距离就可以转化成求曼哈顿距离了,很好推。然后就是暴力枚举每一个点,统计出来每个点的曼哈顿距离之和,最后取一个最小值。CODE:#include #

2014-12-23 11:07:06 926

原创 BZOJ 2656 ZJOI 2012 数列(sequence) 高精度+记忆化搜索

题目大意:定义个一序列,f[i] = f[i / 2] (i % 2 == 0);f[i] = f[i / 2] + f[i / 2 + 1] (i % 2 == 1);求这个数列的第m项(m 思路:数据范围高精度没跑了。记得之前做过这个题的弱化版,似乎是没有高精度的记忆化搜索,这个题就是加个高精度。CODE:#include #include #include

2014-12-23 10:07:29 878

原创 BZOJ 2257 JSOI 2009 瓶子和燃料 数学

题目大意:有一些固定容量的瓶子,你想从火星人用k个瓶子那里拿到一些燃料,火星人只能从一个瓶子中转移到另一个瓶子中,或者把一个瓶子中的燃料倒掉,或者将一个瓶子装满。每次火星人会给你他能给出的最少的燃料。问你能够得到的最多的燃料。思路:yy一下发现一些瓶子中能给出的最少的燃料就是这些瓶子容量的gcd,于是就把所有的瓶子容量的约数弄出来,找到最大的大于k个的就是答案。CODE:

2014-12-22 20:50:01 1320

原创 BZOJ 3809 Gty的二逼妹子序列 莫队算法+分块

题目大意:给出一个数列,问[x,y]中间有多少种不同的数字在[a,b]之间。思路:又是傻逼莫队……如果没有[a,b]的限制,那么就是傻逼莫队了这个限制就比较坑爹了,当然常规一点的想法还是树套树,很明显这个空间限制是卡树套树的。所以就只能莫队了。然而暴力的求[a,b]之间有多少个数的话时间就到了O(n^2),但是利用一下分块,时间复杂度就是O(n*sqrt(n))了。

2014-12-22 19:50:11 834

原创 BZOJ 1822 JSOI 2010 Frozen Nova 冷冻波 二分+网络流

题目大意:在平面中有一些巫妖和一些小精灵,还有一些树会阻挡巫妖的视线。每一个巫妖都有一个攻击半径,如果一个小精灵在巫妖的攻击半径内,两点之间的连线没有树木阻挡,那么巫妖就可以秒杀小精灵。每个巫妖都有技能的CD。问最快多长时间可以使小精灵全灭。思路:看出范围知算法系列。很明显的二分+最大流。二分最短时间,在这个时间内,每个巫妖可以发招time / CD + 1次。那么每次建图就从S到每个

2014-12-22 16:04:52 1002

原创 BZOJ 3744 Gty的妹子序列 分块+fenwick

题目大意:强制在线区间无修改逆序对。思路:看到数据范围发现分块是很显然的。预处理了很多东西,比如说每个块里面的逆序对个数,还有f[i][j]表示从第i块到第j块的逆序对个数。如果仅仅处理到这里的话,后面是不太好处理的。我们还需要一个东西,是每个点对每个块的逆序对个数,并取前缀合优化。否则的话就得用主席树来乱搞,那常数剩下就是小事了, 比如离散话啥的。。CODE:

2014-12-15 19:31:58 1036

原创 BZOJ 1875 SDOI 2009 HH去散步 矩阵乘法优化DP

题目大意:给出一张无向图,求从A到B走k步(不能走回头路)的方案数。(k 思路:看到k的范围就知道是矩阵乘法了。关键是不能走回头路怎么构造。正常的方法构造点的转移不能避免这个问题,就用边来构造。只要保证不经过自己^1的边就可以保证不走回头路了。CODE:#include #include #include #include #define MAX 210

2014-12-13 11:52:56 1188

原创 BZOJ 3790 神奇项链 Hash+二分

题目大意:给出一个字符串,求出这是最少由多少个回文串组成的。回文串可以重叠。思路:将原串中的所有回文串都统计出来,然后变成一些区间,问题就转化成了区间并的问题。CODE:#include #include #include #include #define MAX 400010#define BASE 1333#define INF 0x3f3f3f

2014-12-13 10:37:21 800

原创 BZOJ 1567 JSOI 2008 Blue Mary的战役地图 二维hash

题目大意:给出两个m*m的地图,问两个地图的最大子正方形矩阵的边长是多大。思路:先对两个矩阵hash,然后枚举最大长度,从大到小枚举。把第一个矩阵的所有情况插到哈希表中,然后查询第二个矩阵的所有情况。记住哈希表中的那些数组一定要开大点。。CODE:#include #include #include #include #define MAX 60#de

2014-12-13 08:48:55 1364

原创 BZOJ 2462 BeiJing 2011 矩阵模板 二维hash

题目大意:给出一个m*n的由01组成的矩阵,下面有q个询问,查询矩阵中存不存在大小为k*l的子矩阵。思路:二维hash。我们先把大矩阵hash,然后把所有可能的k*l的子矩阵都插到哈希表里,然后只要对于每个询问hash一下看哈希表中是否存在。值得一提的是,这个题只需要输出10个1就可以AC了。。CODE:#include #include #include

2014-12-13 08:45:15 18011 1

原创 BZOJ 2006 NOI 2010 超级钢琴 堆+主席树

题目大意:给出一些音符,将它们组成和旋。和旋只能由[l,r]个音符组成。优美程度为所有音符的和。求k个和旋的又优美程度的最大和。思路:先处理出来前缀和,以便O(1)去除一段的和。然后考虑对于一个音符来说,向左边扩展的音符是一段长度为r - l + 1的区间,取出的最大和是sum[i] - sum[p],sum[i]是一定的,要想让整段和最大,需要让sum[p]最小。之后就是区间k小值和

2014-12-12 17:00:40 868

原创 BZOJ 3800 Saber VS Lancer/POJ 1755 Triathlon 半平面交

题目大意:有n个人进行铁人三项比赛,对于这三种运动,每个人都有一个固定的速度,但是每种运动的长度是多少并不知道。现在问裁判可不可以通过调整这三项运动的长度来使某一个人赢得比赛。思路:考虑现在我们想让一个人赢的时候,这个人的三个速度分别为v1,v2,v3,想让所有人都输给他,设某一个人的三个速度是v1',v2',v3'。设三项的比赛的长度为l1,l2,l3。那么不难得到如下方程:l1 /

2014-12-11 20:19:14 1114

原创 BZOJ 2434 NOI 2011 阿狸的打字机 AC自动机构造fail树

题目大意:有一种打字机上有28个字母,分别是26个小写字母和BP,其中B代表退格,P代表换行,每一行就是一个字符串。现在给这些字符串标号,并询问x串在y串中出现过几次。思路:这算是NOI史上最难的字符串的题了吧(动物园)。首先按照题意不难建一个AC自动机出来,按照正常的思路,对于每一个询问都需要在AC自动机上暴力的查找。但这样时间会十分好看。于是我们想,fail指针构成的一定是

2014-12-10 15:14:27 943

原创 BZOJ 1060 ZJOI 2007 时态同步 树形DP

题目大意:给出一个有根树,树上的边有边权。现在可以将一个边的边权的值+1,要想使得根节点到所有叶子节点的距离相等,最少需要多少个+1操作。思路:当只考虑以一个节点为根的子树的时候,就必须要保证这个根节点到所有这个子树中的叶子节点的距离相等,才能保证最终根节点到所有叶子节点的距离都相等。所以就深搜一次,对于每个节点求出到这个节点的最长距离,将所有其他的边加成这个最长距离,记录答案。但

2014-12-10 12:58:57 832

原创 BZOJ 2754 SCOI 2012 喵星球上的点名 后缀数组

题目大意:在喵星球上有一些喵~,每个喵都有一个姓和一个名字。点名的时候如果一个喵中姓或者名中有这个串的话他就会喵。问每次点名有几个喵喵了,和每个喵喵了几次。思路:好萌的题喵~AC自动机构造fail树是可以做的,但是和SA乱搞的时间差不多,我就是SA乱搞的w把所有的串(姓名,询问)用$连接成一个串,然后做后缀数组,height数组。过程中记录一下每一个后缀数属于哪个喵,还有询问在

2014-12-10 10:06:10 1219 1

原创 BZOJ 2657 ZJOI 2012 旅游(journey) 树的直径

题目大意:给出一个凸多边形的三角剖分图,每一个三角形代表一个城市,现在连接这个图中的两个点,问最多能够经过多少个城市。思路:浙江都是一帮神么。。这题给的条件简直是不知所云啊。。转化十分巧妙。因为每个凸n边形经过三角剖分之后会出现n - 2个三角形,任意一条边只会成为两个城市的公共边或者整个多边形的边。不难推出两个城市的公共边是n - 3条,也就是说把公共边看成是新图的边的话,就会新

2014-12-09 19:23:02 890

原创 BZOJ 2751 HAOI 2012 容易题(easy) 数学

题目大意:给出一个序列中哪个位置不能出现哪一种数字,求可以组成的数列的积的和。思路:如果我们让第一个位置确定,那么这个问题就可以转化成一个子问题。也就是第一位的数字乘上后面的积的和。推下去的话不难发现,其实求得就是每一位和的积。观察一下mn都很大,之后k不大,于是就用个map啥的随便记录一下,然后写个快速幂,再写个快速乘,没了。。CODE:#include #

2014-12-09 09:46:25 1115

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除