07 2016 档案

摘要:求next数组,(一般有两种,求循环节用的见代码)求出循环节的长度。 阅读全文
posted @ 2016-07-31 20:20 水郁 阅读(178) 评论(0) 推荐(0) 编辑
摘要:题 字符串所有子串要不同。求修改最少多少个字符。 因为只能是26个字母,显然大于26的不可能有答案,其它情况ans+=u[i]-1;u[i]是字母出现的次数。 阅读全文
posted @ 2016-07-31 16:28 水郁 阅读(268) 评论(0) 推荐(0) 编辑
摘要:题 给定三角形,求三个两两相切且与三角形的一条边相切的圆的半径。 二分一个半径,可以得出另外两个半径,需要推一推公式(太久了,我忘记了) 阅读全文
posted @ 2016-07-31 16:14 水郁 阅读(329) 评论(0) 推荐(0) 编辑
摘要:题 利用叉积解方程 利用点斜式解方程 阅读全文
posted @ 2016-07-31 16:02 水郁 阅读(254) 评论(0) 推荐(0) 编辑
摘要:题 给定字典,再询问。 字典与询问之间有一个空行。 cin.peek()是一个指针指向当前字符。 处理空行的技巧 阅读全文
posted @ 2016-07-31 14:48 水郁 阅读(296) 评论(0) 推荐(0) 编辑
摘要:求矩形面积并,离散化加线段树。 扫描线法: 用平行x轴的直线扫,每次ans+=(下一个高度-当前高度)*当前覆盖的宽度。 另一种方法还是线段树,这里扫描线用的是平行y轴的直线,每次增加的面积是当前扫描的竖线所在的高度区间的最后一次的x与当前x的差值乘上区间的高度。所以每次增加的不一定是一个矩形,而 阅读全文
posted @ 2016-07-31 06:52 水郁 阅读(325) 评论(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 水郁 阅读(363) 评论(0) 推荐(0) 编辑
摘要:当两个点距离小于直径时,由它们为弦确定的一个单位圆(虽然有两个圆,但是想一想知道只算一个就可以)来计算覆盖多少点。 阅读全文
posted @ 2016-07-31 04:23 水郁 阅读(599) 评论(0) 推荐(0) 编辑
摘要:给定点集的最远两点的距离。 先用graham求凸包。旋(xuán)转(zhuàn)卡(qiǎ)壳(ké)求凸包直径。 ps:旋转卡壳算法的典型运用 http://blog.csdn.net/hanchengxi/article/details/8639476。 阅读全文
posted @ 2016-07-31 03:54 水郁 阅读(367) 评论(0) 推荐(0) 编辑
摘要:两个木条装雨水能装多少。 两线段相交,且不遮盖的情况下才可能装到水。 求出交点,再取两线段的较高端点的较小值h,(h-交点的y)为三角形的高。 三角形的宽即为(h带入两条线段所在直线得到的横坐标的差值)。 三角形的面积即为雨水的量。 坑点:如果用G++提交,ans要加上eps才能过,c++提交则没问 阅读全文
posted @ 2016-07-31 00:23 水郁 阅读(410) 评论(0) 推荐(0) 编辑
摘要:1001 Another Meaning 题意:字符串A中包含的字符串B可以翻译或不翻译,总共有多少方案。 题解:动规,dp[i]表示A的第i位为止有多少方案。 转移方程: dp[i]=dp[i-1](不翻译) dp[i]+=dp[i-B.size()](翻译i结尾的子串B) 初始条件:dp[0]= 阅读全文
posted @ 2016-07-29 04:23 水郁 阅读(438) 评论(0) 推荐(0) 编辑
摘要:1.gcd 2.扩展gcd )extend great common divisor 3.求a关于m的乘法逆元 补充:求逆元还可以用ans=abmodm=(amod(mb))/b 4.快速幂quick power 5.快速乘,直接乘会 阅读全文
posted @ 2016-07-29 02:18 水郁 阅读(6843) 评论(3) 推荐(3) 编辑
摘要:有n个节点以1为根节点的树,给你树的边关系u-v,一开始每个节点都有一个苹果,接下来有两种操作,C x改变节点x的苹果状态,Q x查询x为根的树的所有苹果个数。 求出树的dfs序,st[i]保存i的进入时间戳,ed[i]保存i的退出时间戳,则st[i]到ed[i]就是子树节点的对应时间戳。 每个节点 阅读全文
posted @ 2016-07-26 01:32 水郁 阅读(323) 评论(0) 推荐(0) 编辑
摘要:x和y分开考虑,在(1,1)到(n,m)之间可以选择走i步。就需要选i步对应的行C(n-2,i)及i步对应的列C(m-2,i)。相乘起来。 假设mn$$\sum_{i=1}^{m-2} C_{n-2}^i\cdot C_{m-2}^i=\sum_{i=1}^{m-2} C_{n-2}^ 阅读全文
posted @ 2016-07-24 22:47 水郁 阅读(928) 评论(0) 推荐(0) 编辑
摘要:链接 某个数x属于[1,n],至少询问哪些数y“x是否是y的倍数”才能判断x。找出所有质因数和质因数的幂即可。 阅读全文
posted @ 2016-07-24 18:04 水郁 阅读(388) 评论(0) 推荐(0) 编辑
摘要:题目给定n和d,都是10的9次方以内,求1到n里面有几个数最大因数是d?1000000组数据。解:求出d的满足p[i]*d<n的最小质因数是第几个质数。即为答案。 阅读全文
posted @ 2016-07-24 01:38 水郁 阅读(265) 评论(0) 推荐(0) 编辑
摘要:题目求n个互不相同的数,满足其和为其lcm。我们把lcm看成一个线段,分割成长度不同的n份。当然分法有很多,我们只需要构造一个好想好写的。先分成两个二分之一,取其中一个二分之一再分成1/3和2/3,接下来每次取1/3的分成1/3和2/3。11/2 1/21/2 2/6 1/61/2 2/6 2/18 阅读全文
posted @ 2016-07-23 16:20 水郁 阅读(421) 评论(0) 推荐(0) 编辑
摘要:题目每次把空列换到最后一列,把非空行换到最下一行。 阅读全文
posted @ 2016-07-23 13:51 水郁 阅读(235) 评论(0) 推荐(0) 编辑
摘要:题目链接 第一种解法是O(n3p)的:f[i][j][k]表示前i个人进j个人长度为k有几种方案(排列固定为123..n时)。f[i][j][k]=f[i1][j][k]+f[i1][j1][ka[i]]最外层枚举t表示被卡的那个人。i=t时不加上f[i-1][j-1][k-a[ 阅读全文
posted @ 2016-07-23 12:44 水郁 阅读(413) 评论(0) 推荐(0) 编辑
摘要:有理数的树,根节点是1/1,左儿子是1/2,右儿子是2/1...。求给定的分数是第几个,或者给定n求第n个分数。递归。给定的分数,每次递归,如果分子比较小,就用分母减去分子,并且这是左儿子。反之是右儿子,终点是分子分母相等。求第n个,每次递归,如果n是奇数(为右儿子),新的分子是分子加分母。终点是n 阅读全文
posted @ 2016-07-23 00:49 水郁 阅读(420) 评论(0) 推荐(0) 编辑
摘要:题目链接 正经解法: 给定n个点的坐标,找一个点,到其他点的曼哈顿距离之和最小。n可以是100000。大概要一个O(nlogn)的算法。算曼哈顿距离可以把x和y分开计算排好序后计算前缀和就可以在O(1)时间内判断一个点到其他点的距离。 缩小范围法: 另外一种做法,当时我就是这么想的,但是后来没敢交, 阅读全文
posted @ 2016-07-23 00:03 水郁 阅读(622) 评论(0) 推荐(0) 编辑
摘要:题目 给定每张海报的覆盖区间,按顺序覆盖后,最后有几张海报没有被其他海报完全覆盖。离散化处理完区间端点,排序后再给相差大于1的相邻端点之间再加一个点,再排序。线段树,tree[i]表示节点i对应区间是哪张海报,如果是-1代表对应区间不是一张海报(0或多张)。每贴一张海报,就用二分查找出覆盖的起点和终 阅读全文
posted @ 2016-07-22 01:56 水郁 阅读(270) 评论(0) 推荐(0) 编辑
摘要:题目0到n-1的花瓶,操作1在下标a开始插b朵花,输出始末下标。操作2清空[a,b]的花瓶,求清除的花的数量。线段树懒惰标记来更新区间。操作1,先查询0到a-1有num个空瓶子,然后用线段树的性质,或者二分找出第num+1个空瓶子的下标,和第num+b个空瓶子的下标。再区间更新为满。操作2,也相当于 阅读全文
posted @ 2016-07-22 00:22 水郁 阅读(343) 评论(0) 推荐(0) 编辑
摘要:STL头文件:#include<queue> 优先队列: 默认从大到小排列:priority_queue<node>q; 自带的比较函数 priority_queue<int, vector<int>, less<int> > q;//等价于默认,从大到小排 //greater<int> 从小到大排 阅读全文
posted @ 2016-07-21 13:28 水郁 阅读(13393) 评论(4) 推荐(2) 编辑
摘要:cccc的天梯赛决赛,水题一样的水,中档题以上的还是没做出来。补了一下题,觉得其实也不是很难,主要是练的少。 L2-1:红色预警 并查集 我做的时候想不到并查集,想到了也不一定做的出来,都是其实不难。每次失去一个城市,重新计算过并查集,比较几个根节点,如果根节点增加了那么就是改变了连通性。 L2-2 阅读全文
posted @ 2016-07-21 10:16 水郁 阅读(1279) 评论(0) 推荐(0) 编辑
摘要:题意 求i=1ngcd(i,n) 给定 n1n232)。 链接 题解 欧拉函数 φ(x) :1到x-1有几个和x互质的数。 gcd(i,n)必定是n的一个约数。 若p是n的约数,那么gcd(i,n)==p的有φ(n/p)个数,因为要使g 阅读全文
posted @ 2016-07-21 00:09 水郁 阅读(1085) 评论(0) 推荐(0) 编辑
摘要:三种动物,A吃B,B吃C,C吃A。那么用并查集时,还要多一个x和根的关系,吃或者被吃或者同类。合并两个需要更新和祖先的关系。这个关系可以自己画一画。 阅读全文
posted @ 2016-07-12 16:10 水郁 阅读(371) 评论(0) 推荐(0) 编辑
摘要:给你n个物品交换,每个交换用r,v,t描述,代表需要用r元的东西花费t时间交换得v元的东西。一开始只有1元的东西,让你求出交换到价值至少为m的最少时间代价。相当于每个交换是一条边,时间为边权,求走到价值大于等于m的点的最短路径。bfs的时候,用优先队列来储存状态,每次取出花费总时间最小的状态。 阅读全文
posted @ 2016-07-12 16:08 水郁 阅读(297) 评论(0) 推荐(0) 编辑
摘要:贪心:最贵的留到最后买。状态转移方程:dp[j]=dp[j+a[i]]|dp[j],dp[i]表示余下i元。 原来就不足5元,那就不能买啦。 阅读全文
posted @ 2016-07-06 10:37 水郁 阅读(324) 评论(0) 推荐(0) 编辑
摘要:第一次做交互题。 题意是有n个数(n<1000),你通过问1 a b,后台返回你YES代表a<b,NO代表a>b。要你在10000次询问内给出一个符合的排列。n=1000来说,10000其实就是大约nlogn。 所以需要一个时间复杂度稳定为nlogn的排序,每次询问的结果对应cmp函数的返回值。然后 阅读全文
posted @ 2016-07-06 10:35 水郁 阅读(394) 评论(0) 推荐(0) 编辑
摘要:题意是给你n个物品,每次两辆车运,容量分别是c1,c2,求最少运送次数。好像不是很好想,我看了网上的题解才做出来。先用状压DP计算i状态下,第一辆可以运送的重量,用该状态的重量总和-第一辆可以运送的,如果小于c2,那么可以一次运送i状态里的货物。然后再用DP把s【i】为i状态的运送次数,通过转移方程 阅读全文
posted @ 2016-07-06 10:34 水郁 阅读(325) 评论(0) 推荐(0) 编辑
摘要:题意是给你抢劫每个银行可获得的钱m和被抓的概率p,求被抓的概率小于P,最多能抢多少钱。01背包问题,体积是m,价值是p。被抓的概率不是简单相加,而应该是1−Π(1−p[i])DP:dp[i]表示抢到i元且不被抓的概率。初始条件:dp[0]=1;转移方程:dp[j]=max{dp[j],dp[j−m[ 阅读全文
posted @ 2016-07-06 10:33 水郁 阅读(345) 评论(0) 推荐(1) 编辑
摘要:题目字符串的LCS,输出解我比较不会,dp的时候记录从哪里转移来的,之后要一步一步转移回去把解存起来然后输出。 阅读全文
posted @ 2016-07-06 10:32 水郁 阅读(347) 评论(0) 推荐(0) 编辑
摘要:一直不明白为什么我的耗时几百毫秒,明明差不多的程序啊,我改来改去还是几百毫秒。...一个小时后:明白了,原来把最大值0x3f(77)取0x3f3f3f3f就把时间缩短为16ms了。可是为什么原来那样没有WA呢?哦,明白了,因为最大值写小了,dicnic会多跑几遍。嗯顺便:0x3f3f3f3f也就是1 阅读全文
posted @ 2016-07-06 10:31 水郁 阅读(189) 评论(0) 推荐(0) 编辑
摘要:题目 阅读全文
posted @ 2016-07-06 10:31 水郁 阅读(207) 评论(0) 推荐(0) 编辑
摘要:相当于用1*2的板覆盖给定的h*w的格子里的点,求最少的板。可以把格子相邻的分成两个集合,如下图,0为一个集合,1的为一个,也就是(行数+列数)为奇数的是一个集合,为偶数的为另一个集合。101010101010101010101两个集合分别代表男和女,能不能结婚,首先要看是不是异性,然后看是不是相邻 阅读全文
posted @ 2016-07-06 10:30 水郁 阅读(195) 评论(0) 推荐(0) 编辑
摘要:Dijkstra最短路,每次限制一个等级差,再更新答案。 阅读全文
posted @ 2016-07-06 10:29 水郁 阅读(265) 评论(0) 推荐(0) 编辑
摘要:题目 Prim算法:任选一个点,加入集合,找出和它最近的点,加入集合,然后用加入集合的点去更新其它点的最近距离......这题求最小生成树最大的边,于是每次更新一下最大边。 阅读全文
posted @ 2016-07-06 10:28 水郁 阅读(314) 评论(0) 推荐(0) 编辑
摘要:从(1,1)到(n,m),每次向右或向下走一步,,不能经过(x,y),求走的方案数取模。可以经过(x,y)则相当于m+n步里面选n步必须向下走,方案数为 C((m−1)+(n−1),n−1) 再考虑其中经过(x,y)的方案数,也就是(1,1)到(x,y)的方案乘上(x,y)到(n,m)的方案,为 C 阅读全文
posted @ 2016-07-06 10:26 水郁 阅读(593) 评论(0) 推荐(0) 编辑

欢迎这位怪蜀黍来到《2016 年 7月 随笔档案 - 水郁 - 博客园》
点击右上角即可分享
微信分享提示