上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 25 下一页
摘要: 【算法】图论,最短路? 【题意】原图为无向连通图,现给定原图的最短路矩阵,求原图最小边权和,n<=300。 【题解】要求最小边权和下,原图的所有边一定是所连两端点的最短路。 那么现在将所有最短路作为边加入原图,考虑删边。 对于(u,v),若存在点w使得(u,v)=(u,w)+(w,v),则(u,v) 阅读全文
posted @ 2017-09-17 12:33 ONION_CYC 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 【算法】并查集+平衡树+数学+扫描线 【题解】 经典曼哈顿距离转切比雪夫距离。 曼哈顿距离:S=|x1-x2|+|y1-y2|<=c 即:max(x1-x2+y1-y2,x1-x2-y1+y2,-x1+x2+y1-y2,-x1+x2-y1+y2) 令X1=x1+y1,Y1=x1-y1,则转化为 切比 阅读全文
posted @ 2017-09-15 17:04 ONION_CYC 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 【算法】线段树(经典线段树上二分) 【题意】n个房间,m个询问,每次订最前的连续x个的空房间,或退订从x开始y个房间,求每次订的最左房间号。 【题解】关键在于找连续x个空房间,经典二分。 线段树标记sum,lsum,rsum,表示最长连续房间,从左开始最长连续房间,从右开始最长连续房间。 对于区间k 阅读全文
posted @ 2017-09-14 19:57 ONION_CYC 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 【算法】离散化+容斥原理 【题意】给定大矩阵,可以每格都可以任意填1~m,给定n个子矩阵,要求满足子矩阵内的最大值为vi,求方案数。 n<=10,h,w<=1w。 【题解】 此题重点之一在于离散化,因为有效坐标很少,离散化后遵循左闭右开计算矩阵点数。 然后对于每个格,能填的最大值是min(m,vi) 阅读全文
posted @ 2017-09-13 17:06 ONION_CYC 阅读(373) 评论(0) 推荐(0) 编辑
摘要: 【算法】计算几何 【题意】给定平面直角坐标系上的若干个点,任意选点连成凸多边形,凸多边形的价值定义为2^(n-|S|),其中n为凸多边形内部点数(含边界),|S|为顶点数,求总价值。n<=10^5。 【题解】 首先凸多边形的价值转化为凸多边形内部点数的选择方案(每个点选或不选)。 先考虑没有多点共线 阅读全文
posted @ 2017-09-12 20:14 ONION_CYC 阅读(332) 评论(1) 推荐(0) 编辑
摘要: 【算法】数学+线段树/树状数组 【题解】 首先三个操作可以理解为更相减损术或者辗转相除法(待证明),所以就是求区间gcd。 这题的问题在线段树维护gcd只能支持修改成一个数,不支持加一个数。 套路:gcd(a,b,c,d,e)=gcd(a-b,b-c,c-d,d-e,e),也就是所有数的gcd可以转 阅读全文
posted @ 2017-09-10 18:58 ONION_CYC 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 【算法】扫描线+平衡树(set) 【题解】很明显的二维偏序数点,排序后扫描线,现加点后查询答案。 则问题转化为一维偏序,显然贪心找第一个比当前大的最优,所以用平衡树维护。 记得开multiset!!! #include<cstdio> #include<algorithm> #include<cst 阅读全文
posted @ 2017-09-08 16:51 ONION_CYC 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 【链接】F - Sandglass 【题意】给定沙漏A和B,分别装着a和X-a的沙子,开始时A在上B在下,每秒漏1,漏完不再漏。给定n,有n个时刻ai沙漏倒转。给定m个询问,每次询问给定初值a和时刻t,求A中沙子量。 【算法】数学(函数) 【题解】 先不考虑时刻,令ft(a)表示沙子初值a时,当前A 阅读全文
posted @ 2017-09-08 07:35 ONION_CYC 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 【算法】模拟 【题意】http://codeforces.com/contest/849/problem/D 给定n个点从x轴或y轴的位置p时间t出发,相遇后按对方路径走,问每个数字撞到墙的位置。(还是乖乖啃原题意去吧233) 【题解】 两个数会相撞,当且仅当xi+tj=xj+ti,即xi-ti=x 阅读全文
posted @ 2017-09-06 14:08 ONION_CYC 阅读(272) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2017-09-05 20:16 ONION_CYC 阅读(34) 评论(0) 推荐(2) 编辑
摘要: 【题意】n个数字分成k段,每一段的价值是段内不同数字的个数,求最大价值。n<=35000,k<=50。 【算法】分治决策单调+主席树(可持久化线段树) 【题解】 f[i][j]表示前i天分成j段的最大价值。 f[i][j]=max(f[k][j-1]+work(k+1,i)),j-1<=k<i。 首 阅读全文
posted @ 2017-09-05 19:03 ONION_CYC 阅读(242) 评论(0) 推荐(1) 编辑
摘要: 【算法】可持久化线段树(主席树)+启发式合并+LCA 【题意】给定森林,每次询问u,v路径上的第k小,或给u,v连边(保证森林),n<=8*10^4。 【题解】 区间第k小:离散化,在上一个位置的基础上建可持久化权值线段树,每次比较左子树和k并找到第一个大于等于k的位置。 树上第k小:每个点上其父亲 阅读全文
posted @ 2017-09-03 23:08 ONION_CYC 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 【算法】主席树||离线+树状数组 【题解】 主席树经典应用:找区间不同的数字个数。 做法:记录每个数上一次出现的位置last[i],对last建权值线段树,对于区间询问last[i]<L的数字个数。 注意权值范围是last[i],也即0~n。 注意x=0时返回,否则可能c<0就完了。 #includ 阅读全文
posted @ 2017-09-03 21:43 ONION_CYC 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 【算法】高斯消元-异或方程组 【题解】良心简中题意 首先开关顺序没有意义。 然后就是每个点选或不选使得最后得到全部灯开启。 也就是我们需要一种确定的方案,这种方案使每盏灯都是开启的。 异或中1可以完美实现取反。 故令xi表示第i盏灯的开关情况,然后对每盏灯的亮灭列方程,即 (1*x1)^(1*x2) 阅读全文
posted @ 2017-08-31 20:45 ONION_CYC 阅读(480) 评论(0) 推荐(2) 编辑
摘要: 【算法】动态规划 【题解】yy出了O(1w log 1w)的算法。 将雪坡排序预处理出g[i]表示能力值为i的最短时长雪坡。 这样就可以定义work(t,c)表示时长t能力c的最多滑雪数量,work(t,c)=t/g[c]。 然后将课程按结束时间排序。 f[i]=f[j]+work(a[i].beg 阅读全文
posted @ 2017-08-31 19:33 ONION_CYC 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 【算法】树上贪心 【题解】 因为一个点必须被覆盖,那么它如果没有被子树节点覆盖的话,就覆盖它的父节点。 从叶子开始贪心。 注意,如果它自己已经被选了就不需要选父节点了。 #include<cstdio> #include<algorithm> #include<cstring> #include<c 阅读全文
posted @ 2017-08-31 12:36 ONION_CYC 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 【算法】DFS序+树状数组 【题解】题意相当于统计前i-1个点在第i个点的祖先的个数,显然可以用dfs维护,用树状数组差分维护前缀和。 出栈不新加节点就要注意左闭右开,即in[a[i]]处+1,ou[a[i]]+1处-1。 出栈新加节点就要注意数组开双倍。 #include<cstdio> #inc 阅读全文
posted @ 2017-08-31 10:20 ONION_CYC 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 【算法】动态规划DP 【题解】 题目要求不严格递增或不严格递减。 首先修改后的数字一定是原来出现过的数字,这样就可以离散化。 f[i][j]表示前i个,第i个修改为第j个数字的最小代价,a表示排序后数组,b表示原数组。 f[i][j]=min(f[i-1][k])+abs(b[i]-a[j]) mi 阅读全文
posted @ 2017-08-31 09:27 ONION_CYC 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 【算法】最短路树+(树链剖分+线段树)||最短路树+并查集 【题解】 两种方法的思想是一样的,首先题目限制了最短路树唯一。 那么建出最短路树后,就是询问对于每个点断掉父边后重新找路径的最小值,其它路径只能是这个点和其子树节点通过非树边到达非子树节点。 这样考虑很难统计,换个角度考虑每条非树边的影响。 阅读全文
posted @ 2017-08-31 08:48 ONION_CYC 阅读(390) 评论(0) 推荐(0) 编辑
摘要: 【算法】动态规划 【题解】 万物皆动规,每时每刻都要想着DP!特别是这种明显可以序列递推的题目。 一个简单的思路是f[i]表示前i个选择合法方案(第i个可选可不选)的最大效率 f[i]=max(f[i-1],f[j-2]+sum[j~i]),j=i-k+1~i。 然后就可以把f[j]-sum[j+1 阅读全文
posted @ 2017-08-30 19:40 ONION_CYC 阅读(238) 评论(0) 推荐(0) 编辑
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 25 下一页