常数优化
Coco_T_
东南大学本科毕业生,浙江大学在读研究生
展开
-
Tyvj3980(dp+priority_queue)
题目链接分析: 首先明确数据范围: N<=10^5,A[i]<=10^9这个题想的时间不短 显然留下的奶牛越多越好,那这就变成了一个剔除问题 对于每个i,如果选ta,那么之前k个中一定有一个不能选 我们可以枚举这个j(不能选的一个) f[i]=max{f[j-1],sum(j+1,i)} (j-i<=k) sum的计算可以通过前缀和求得 那么方程可化为: f[i]=max{f[j原创 2017-09-22 17:42:25 · 205 阅读 · 0 评论 -
poj1160 Post Office(区间dp+四边形不等式优化)
题目链接分析: 一看这道题,就有一个疑问进入我的脑海: 我们要怎么确定一个村庄到底去哪个邮局呢?实际上邮局的存在就把村庄分成了若干区间 一个区间内的村中都去一个邮局 如果我们确定了区间,那么要找到区间最优解是不难的(枚举暴力计算)也就是说整个序列被我们划分成了P个区间,每个区间内的最优解我们可以预处理出 所以设计状态:f[i][j]表示前i个村庄被划分成了j个区间(建了j个邮局) 转移方原创 2017-11-03 14:09:33 · 400 阅读 · 0 评论 -
从一道题看四边形不等式
题目链接简介: 给出一个长度为L的木棍,以及n个切割点 要求切割成n+1段,每切一次花费都是原始的木棍长度 求最小花费分析: 实际上我们可以看做是n+1个物品 这和能量项链是一样的: 设计状态:f[i][j]表示切割编号为(i~j)的木棍的花费f[i][j]=min{f[i][k]+f[k+1][j]+a[j]-a[i-1]}a[i]是前i段木棍的前缀和,实际上就是分割点 唯一需要注意原创 2017-10-31 20:27:45 · 1357 阅读 · 0 评论 -
最大子矩阵(天坑)
我真的不知道,在不知道最大子矩阵解法的情况下,我是怎么撑到现在的,我可以回去学习文化课了问题描述:求一个M*N的矩阵的最大子矩阵和。比如在如下这个矩阵中:0 -2 -7 09 2 -6 2-4 1 -4 1-1 8 0 -2 拥有最大和的子矩阵为:9 2-4 1-1 8其和为15。分析:这是一个经典问题了,我们最先想到的(最耿直的原创 2017-10-15 20:44:54 · 375 阅读 · 0 评论 -
UVa10891 Game of Sum(dp)
分析: 一开始觉得是一道博弈 但是可以用dp解决的 这就和Tyvj上的硬币游戏有异曲同工之妙原创 2017-10-08 09:34:53 · 529 阅读 · 0 评论 -
bzoj1499 [NOI2005]瑰丽华尔兹(luoguP2254)(dp+单调队列)
题目链接分析: 样例图: 设计状态f[i][j][k]:表示时间k,正好到(i,j) 知道了刚刚走完的是哪一段,我们就知道了刚才的方向 魔法不限制使用次数,而且不能改变方向(这就很好了嘛) 我们倒着推回去,这样就可以知道上一段时间结束后,我们在哪里了 这样的复杂度是O(nmT)为了练码力,我专门写了一下这个部分分(50%),发现还是有很多细节的:#include<cstdio>#i原创 2017-10-30 18:57:13 · 442 阅读 · 0 评论 -
bzoj3229 [Sdoi2008]石子合并(非dp的GarsiaWachs算法)
Description 在一个操场上摆放着一排N堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。 试设计一个算法,计算出将N堆石子合并成一堆的最小得分。Input 第一行是一个数N。 以下N行每行一个数A,表示石子数目。Output 共一个数,即N堆石子合并成一堆的最小得分。Sample Input 4 1原创 2017-09-17 17:09:19 · 485 阅读 · 0 评论 -
随 (rand)(校内hu测10.6T1)(dp+矩阵+数论)
【题目描述】 给出n个正整数a1,a2…an和一个质数mod.一个变量x初始为1.进行m次操作.每次在n个数中随机选一个ai,然后x=x*ai%mod.问m次操作之后x的取值的期望. 答案一定可以表示成a/b的精确分数形式.a和b可能很大,所以只需要输出a*(b^(10^9+5))模10^9+7的结果.【输入格式】 第一行三个整数n,m,mod. 接下来一行n个空格隔开的正整数a1,a2…原创 2017-10-06 15:01:07 · 513 阅读 · 0 评论 -
bzoj4518 [Sdoi2016]征途(斜率优化dp)
分析: 斜率优化dp 很多人做斜率优化的时候喜欢画出斜率 我偏向画柿子题目就是把若干个元素分成m份, 每一份的价值是该组中的元素之和 使得m组数的方差最小平均数:x=(sum[1]+sum[2]+..+sum[m])/m //sum是每一组的价值 x=(Σa[i])/m 方差:s=((sum[1]-x)^2+(sum[2]-x)^2+…+(sum[m]-x)^2)/m先想状态原创 2017-09-24 15:35:16 · 475 阅读 · 0 评论 -
bzoj1597 [Usaco2008 Mar]土地购买(斜率)
Description农夫John准备扩大他的农场,他正在考虑N (1 <= N <= 50,000) 块长方形的土地. 每块土地的长宽满足(1 <= 宽 <= 1,000,000; 1 <= 长 <= 1,000,000). 每块土地的价格是它的面积,但FJ可以同时购买多快土地. 这些土地的价格是它们最大的长乘以它们最大的宽, 但是土地的长宽不能交换. 如果FJ买一块3x5的地和一块5x3的地,则原创 2017-09-25 18:27:06 · 530 阅读 · 0 评论 -
bzoj1010 [HNOI2008]玩具装箱toy(斜率)
Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京。他使用自己的压缩器进行压 缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中。P教授有编号为1…N的N件玩具,第i件玩具经过 压缩后变成一维长度为Ci.为了方便整理,P教授要求在一个一维容器中的玩具编号是连续的。同时如果一个一维容 器中有多个玩具,那么两件玩具之间要加入一个单位长度的填充物,原创 2017-09-24 20:07:44 · 880 阅读 · 0 评论 -
bzoj1096 [ZJOI2007]仓库建设(斜率)
Description L公司有N个工厂,由高到底分布在一座山上。如图所示,工厂1在山顶,工厂N在山脚。由于这座山处于高原内 陆地区(干燥少雨),L公司一般把产品直接堆放在露天,以节省费用。突然有一天,L公司的总裁L先生接到气象 部门的电话,被告知三天之后将有一场暴雨,于是L先生决定紧急在某些工厂建立一些仓库以免产品被淋坏。由于 地形的不同,在不同工厂建立仓库的费用可能是不同的。第i个工厂目原创 2017-09-25 19:35:42 · 536 阅读 · 0 评论 -
bzoj1009 [HNOI2008]GT考试(AC+矩乘优化dp)
Description 阿申准备报名参加GT考试,准考证号为N位数X1X2….Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的数字。 他的不吉利数学A1A2…Am(0<=Ai<=9)有M位,不出现是指X1X2…Xn中没有恰好一段等于A1A2…Am. A1和X1可以为 0Input 第一行输入N,M,K.接下来一行输入M位的数。 N<=10^9,M<=20,K<=1000Out原创 2017-09-28 10:41:37 · 316 阅读 · 0 评论 -
bzoj1297 [SCOI2009]迷路(矩阵优化)
Description windy在有向图中迷路了。 该有向图有 N 个节点,windy从节点 0 出发,他必须恰好在 T 时刻到达节点 N-1。 现在给出该有向图,你能告诉windy总共有多少种不同的路径吗? 注意:windy不能在某个节点逗留,且通过某有向边的时间严格为给定的时间。Input 第一行包含两个整数,N T。 接下来有 N 行,每行一个长度为 N 的字符串。 第i行第j列为’0’原创 2017-09-28 20:26:16 · 316 阅读 · 0 评论 -
bzoj4653 [Noi2016]区间
Description在数轴上有 n个闭区间 [l1,r1],[l2,r2],…,[ln,rn]。现在要从中选出 m 个区间,使得这 m个区间共同包含至少一个位置。换句话说,就是使得存在一个 x,使得对于每一个被选中的区间 [li,ri],都有 li≤x≤ri。 对于一个合法的选取方案,它的花费为被选中的最长区间长度减去被选中的最短区间长度。区间 [li,ri] 的长度定义为 ri−li,即等于它原创 2017-09-02 11:26:03 · 401 阅读 · 0 评论 -
Tyvj1077
题目链接分析: 数论 第一反应,这个P是素数的限制比较厉害,有可能是一个很有用的条件 我们先放在这(后来证明没有什么卵用)最朴素的算法就是N^2,但是肯定TLE 那我们就要考虑优化了 假设我们枚举i,j i/j≈sqrt(p) 然而这个p我们是已知的 如果我们只枚举一个i j≈sqrt(i*i/p) 从这里我们就可以看到,其实不用枚举j就可以算出答案 这样我们就可以直接做了ti原创 2017-09-07 10:52:14 · 197 阅读 · 0 评论 -
Tyvj1208(LIS数量)
题目链接分析: 之前在xym的hu测中做过这道题,但是代码是急急忙忙码的 理解不是很深刻,题解说的也不好 所以只能再来学习一遍第一问nlogn,不要写错了第二问 这次是最长上升子序列记g[i]为以i结尾,长度是f[i]的子序列的所有方案数对于每个f[i]=k来说 ta都可能是由f[j]=k-1(j < i)且a[j] < a[i]转移来的 这就是不同...原创 2017-09-22 20:18:12 · 282 阅读 · 0 评论 -
bzoj1005 [HNOI2008]明明的烦恼(Prufer数列+高精度(wys算法。。。))
题目链接分析: 题目所求的就是一个叫:有标号无根树 的数目我们怎么知道两棵树的形态是否一样呢? 换句话说,我们能不能找到一种表示树的方法,使得不同的树表示出来互不相同呢?那么我们就需要一个新姿势了:Prufer数列JMJST大大的blog Prufer数列是无根树的一种数列 在组合数学中,Prufer数列是由一个对于顶点标过号的树转化来的数列,点数为n的树转化...原创 2018-03-21 14:38:56 · 267 阅读 · 3 评论