摘要: 求next数组,(一般有两种,求循环节用的见代码)求出循环节的长度。 阅读全文
posted @ 2016-07-31 20:20 水郁 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 题 字符串所有子串要不同。求修改最少多少个字符。 因为只能是26个字母,显然大于26的不可能有答案,其它情况ans+=u[i]-1;u[i]是字母出现的次数。 阅读全文
posted @ 2016-07-31 16:28 水郁 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 题 给定三角形,求三个两两相切且与三角形的一条边相切的圆的半径。 二分一个半径,可以得出另外两个半径,需要推一推公式(太久了,我忘记了) 阅读全文
posted @ 2016-07-31 16:14 水郁 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 题 利用叉积解方程 利用点斜式解方程 阅读全文
posted @ 2016-07-31 16:02 水郁 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 题 给定字典,再询问。 字典与询问之间有一个空行。 cin.peek()是一个指针指向当前字符。 处理空行的技巧 阅读全文
posted @ 2016-07-31 14:48 水郁 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 求矩形面积并,离散化加线段树。 扫描线法: 用平行x轴的直线扫,每次ans+=(下一个高度-当前高度)*当前覆盖的宽度。 另一种方法还是线段树,这里扫描线用的是平行y轴的直线,每次增加的面积是当前扫描的竖线所在的高度区间的最后一次的x与当前x的差值乘上区间的高度。所以每次增加的不一定是一个矩形,而 阅读全文
posted @ 2016-07-31 06:52 水郁 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 离散化后,[1,10]=[1,3]+[6,10]就丢了[4,5]这一段了。 因为更新[3,6]时,它只更新到[3,3],[6,6]。 要么在相差大于1的两点间加入一个值,要么就让左右端点为l,r的线段树节点表示到x[l]到x[r+1]的区间。 这样tree[l,r]=tree[l,m]+tree[m 阅读全文
posted @ 2016-07-31 05:17 水郁 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 当两个点距离小于直径时,由它们为弦确定的一个单位圆(虽然有两个圆,但是想一想知道只算一个就可以)来计算覆盖多少点。 阅读全文
posted @ 2016-07-31 04:23 水郁 阅读(597) 评论(0) 推荐(0) 编辑
摘要: 给定点集的最远两点的距离。 先用graham求凸包。旋(xuán)转(zhuàn)卡(qiǎ)壳(ké)求凸包直径。 ps:旋转卡壳算法的典型运用 http://blog.csdn.net/hanchengxi/article/details/8639476。 阅读全文
posted @ 2016-07-31 03:54 水郁 阅读(363) 评论(0) 推荐(0) 编辑
摘要: 两个木条装雨水能装多少。 两线段相交,且不遮盖的情况下才可能装到水。 求出交点,再取两线段的较高端点的较小值h,(h-交点的y)为三角形的高。 三角形的宽即为(h带入两条线段所在直线得到的横坐标的差值)。 三角形的面积即为雨水的量。 坑点:如果用G++提交,ans要加上eps才能过,c++提交则没问 阅读全文
posted @ 2016-07-31 00:23 水郁 阅读(406) 评论(0) 推荐(0) 编辑
……