关闭

RMQ算法小结(st实现)

rmq+stRMQ简单来说就是求区间的最大值(最小值)。举个例子: 1 -2 9 10 15 38 -9 这里有 7 个数(随便输的),RMQ就是用来查询这些数中的最大值(最小值),但是是区间的。比如查询 [1,3] 这个区间的最大值 就是 9 这个值 . RMQ一般有三种实现方式:暴力、线段树优化、st(dp),其中以st算法复杂度最低...
阅读(7) 评论(0)

圆的一些操作

1、三点求圆心坐标和半径:x0=((y2-y1)(y3*y3-y1*y1+x3*x3-x1*x1)-(y3-y1)(y2*y2-y1*y1+x2*x2-x1*x1))/(2.0*((x3-x1)(y2-y1)-(x2-x1)(y3-y1)));y0=((x2-x1)(x3*x3-x1*x1+y3*y3-y1*y1)-(x3-x1)(x2*x2-x1*x1+y2*y2-y1*y1))/(2.0*((y...
阅读(25) 评论(0)

辛普森积分(自适应辛普森公式求积分)

自适应辛普森公式求积分第一回接触辛普森积分,至于这个辛普森是干嘛的呢,在这里就有必要好好地讲一讲了。来源:辛普森(Simpson)公式是牛顿-科特斯公式当n=2时的情形,也称为三点公式。利用区间二等分的三个点来进行积分插值。其科特斯系数分别为1/6,4/6,1/6。应用:立体几何中用来求拟柱体体积的公式。这里就不详细说辛普森公式了,有需要的朋友可以看这里:https://baike.baidu.co...
阅读(1194) 评论(1)

凸包(判多边形的凹凸性)

题目:ZOJ-3537题目大意:给定n个点的坐标,先问这些点是否能组成一个凸包,如果是凸包,问用不相交的线来切这个凸包使得凸包只由三角形组成,根据 cost(i, j) = |xi + xj| * |yi + yj| % p 算切线的费用,问最少的切割费用。思路:先判断多边形是否是凸包,,,凸包:和凸多边形差不多的意思,,如何判断凸多边形:http://blog.csdn.net/kavu1/art...
阅读(72) 评论(0)

二分图最大匹配(邻接表法)

二分图最大匹配(邻接表法)题目链接:https://cn.vjudge.net/contest/181019#problem/F题目大意:给你一个n*n的矩阵,问你能不能从这个矩阵的所有对角线上各取一个数,这2n-1个数各不相同,如果能,输出这些数,不能就输出NO,,,这些数的范围是1-10的9次方,,,这题用二分图匹配做,将这些对角线当做男生,将这些对角线上的数当做女生,将这个数在这条对角线上当做...
阅读(61) 评论(0)

并查集(按秩合并)

并查集-按秩合并题目:UVA-11354题目大意:给出一张n个点m条边的无向图, 每条边有一个危险度,有q个询问, 每次给出两个点s、t,找一条路, 使得路径上的最大危险度最小。思路:首先,我们可以发现,如果求一个最小生成树, 那么任意两点, 在生成树上有唯一路径, 而且这条路径上的最大危险值一定最小。 但是n和q都太大, 如果直接顺着树走,每次询问最大复杂度O(n), 那么复杂度高达O(n^2),...
阅读(64) 评论(0)

树状数组(二维)

今天学习了一维的数组数组,就又学了学二维的树状数组,其实,二维树状数组和一维的套路差不多,就是在处理的时候有一点点不同而已。。一维树状数组更新是这样的:void add(int x,int val) { for(;x<=n;x+=lowbit(x)) { num[x]+=val; } } 二维树状数组更新是这样的:void add(...
阅读(60) 评论(0)

树状数组(一维)

今天学习了一天的树状数组,感觉有点小懂,但是理解还不够透彻,大致现在博客上写写心得,下回不会再回过头来看,,,,ORZ先讲讲一维的树状数组:·以下有引用到大牛博客:http://blog.csdn.net/int64ago/article/details/7429868一维树状数组解决的大致问题就是:修改某点的值、求某个区间的和,,引用大牛的一段话: 树状数组是干什么的? 平...
阅读(49) 评论(0)

HDU-4462(状态压缩,枚举)

题目:hdu-4462欢迎转载,转载请注明出处。。。题目大意:n*n(<=50)的地图上有稻草,有m(<=10)个点没有稻草可以放稻草人,问最少放几个稻草人,能守卫所有稻草。不能守卫所有稻草输出-1。 思路:枚举所有情况,就是枚举取多少个地方放稻草人,也就是:C(n,1)+C(n,2)+……C(n,n)=1<#include #include #include...
阅读(50) 评论(0)

HDU-4460(bfs搜索)

题目大意:有n个人,m个关系,A认识B经过最少的人数为A到B的关系长度,问在这n个人中,任意两个人相互认识的最长关系长度为多少。如果有两个人无法通过关系认识则输出-1。换句话解释题意就是说求最短路的最大值(相邻两点的距离为1),数据范围是点数 1000 ,边数20000, 难道要求所有点之间的最短路再求最大值, O(n^3) 有点大。怎么办呢? 其实是可以优化的,从一个源点用BFS一圈一圈地向外扩...
阅读(56) 评论(0)

CodeForces - 766C(基础dp)

题目链接:https://vjudge.net/contest/170950#problem/C题目大意:给一串字符串,只包含26个字母,可以把这串字符串分成若干个子串,但是限定每个字母只能出现在长度Ax的子串里,问最多有多少种分割方案,方案数对1e9+7取膜,以及分割子串最大长度,和最少分割子串数量。思路:设dp[i]为从0到i这段字符串的分割方案数,为了满足字符a[i]的限定条件,我们只能在i-...
阅读(48) 评论(0)

UVA-1422(贪心+二分+优先队列)

今天怕是石乐志。。。。题目:UVA-1422题目大意:给你n个任务,每个任务要在【l,r】的时间内完成w个工作量,注意坑点*就是这个任务可以分段完成,就是先完成一部分再在另外一个时间完成另一部分*,那么这题肯定是贪心,将完成时间靠前的先考虑,然后二分工作速度,就是每分钟做多少个工作量,然后枚举每一秒,在每一秒内,找到任务开始时间在这时间里的那些任务,优先做那些结束时间早的任务,所以要用优先队列维护。...
阅读(70) 评论(0)

欧拉函数应用

题目:https://vjudge.net/contest/173827#problem/E(UVA:11426)这题真是值得反省自己,之前做过一遍,比赛的时候硬是没想起来怎么做的,完全没有思路,这就很难受,很绝望,所以这回认认真真的把这个题又补了一遍。。。题意: G=0; for(i=1;iphi[1]=1; for(int i=2; i<maxn; i++) {...
阅读(67) 评论(0)

最小生成树总结

最小生成树算法: Prim算法和Kruskal算法prim算法:1).输入:一个加权连通图,其中顶点集合为V,边集合为E;2).初始化:Vnew = {x},其中x为集合V中的任一节点(起始点),Enew = {},为空;3).重复下列操作,直到Vnew = V:a.在集合E中选取权值最小的边#include #include #include...
阅读(60) 评论(0)

区间dp

区间dp题目链接:https://vjudge.net/contest/169127#problem/F这是我做的第一个区间dp,个人觉得,区间dp就是根据区间的变化来反映整个区间的变化,通过一个个小区间的动归的递推,很容易得出最后的整个区间。题意:告诉有n场晚会中需要穿的衣服,衣服是可以套在其他衣服外面的,告诉了序列顺序之后求出最少需要穿多少次衣服。解题思路:使用dp[i][j]来表示区间 i~j...
阅读(81) 评论(0)
47条 共4页1 2 3 4 下一页 尾页
    个人资料
    • 访问:5534次
    • 积分:501
    • 等级:
    • 排名:千里之外
    • 原创:43篇
    • 转载:2篇
    • 译文:0篇
    • 评论:1条