HDU
文章平均质量分 52
DrCarl
重庆大学acm-icpc集训队队员
展开
-
HDU 1576 A/B 【带简单处理的扩展欧几里得】
题目链接: 求解思路:从A一定是B的倍数入手,令A=k*9973+C,那么k*9973+C=tB,所以tB-k*9973=C,用扩展欧几里得求出最小的正t即是A/B,那么再去一次模就求得了解 AC代码: //HDU-1576 A/B //AC 2016-4-19 19:54:46 //extent Euclid #include #include #include #i原创 2016-04-19 20:00:36 · 396 阅读 · 0 评论 -
HDU-3480 Division 【DP+斜率优化(二维)】
题目链接题意定义一个集合的花费是这个集合中的最大值减最小值的平方。然后给定一个集合S,求对这个集合的一个覆盖,使得所有子集的花费和最小。分析本身这个题是非常简单的,只是今天看了别人的题解,我发现我以前写的二维斜率优化都写复杂了。直接外层循环用未被优化的那一维就行了,不用像我以前那样维护一个k维的单调队列……我说怎么不对劲,每次看别人的代码都那么短…… 具体见代码AC代码//HDU-3480 Div原创 2017-03-11 15:26:24 · 448 阅读 · 0 评论 -
HDU-2829 Lawrence 【斜率优化DP】【四边形不等式优化】
题目链接题意背景故事大概是说一战时一个英国间谍Lawrence要指挥突击队去炸毁奥斯曼帝国的一些铁轨。铁轨上有n个火车站,按线性排列,每个火车站上有一个权值,最后整个铁路的价值就是每一段联通铁路段上的火车站权值两两相乘的和加起来(联通段上只有一个车站就是0)。Lawrence有m次炸毁两个车站之间铁路的机会,求Lawrence最终可以使得这段铁路价值变成的最小值。分析转移方程易想出,设状态dp[i]原创 2017-02-26 15:31:41 · 796 阅读 · 0 评论 -
HDU 5800 To My Girlfriend 【DP】
题意有n个物品,每个物品的重量是aia_i,求以下式子: ∑ni=i∑nj=1∑nk=1∑nl=1∑sm=1f(i,j,k,l,m)(i≠j≠k≠l)\sum^n_{i=i} \sum^n_{j=1} \sum^n_{k=1} \sum^n_{l=1} \sum^s_{m=1} f(i,j,k,l,m) (i \neq j \neq k \neq l) 其中f(i,jk,l,m)f(i,jk,l原创 2017-01-19 10:04:17 · 594 阅读 · 0 评论 -
HDU 5726 GCD 【GCD】【ST表+二分】【线段树+暴力枚举】
题意给一串数列,求区间GCD和整个数列中与该区间GCD相等的区间数分析首先区间GCD易求,用能求RMQ的方法都可以,比如ST表、线段树。关键是如何求第二个问题,这里有两种做法: 方法一 利用GCD的性质,若固定区间左端点,增大右端点,区间GCD必然非递增。因此我们可以遍历区间左端点,用二分求出以该端点起始的区间的所有gcd的情况及其对应的区间个数,并用map记录。该过程复杂度可近似看做O(nlo原创 2017-01-17 19:35:18 · 388 阅读 · 0 评论 -
HDU 3401 Trade 【DP+单调队列优化】
题意给出接下来T天每天卖出、买入股票的价格,每天买入、卖出的上限,持有的股票的总上限,并且两次股票操作之间有时间间隔,求T天之后最多能赚多少钱。分析很容易可以写出状态转移方程: dp[i][j]↔第i天持有j的股票能获得的最大利益dp[i][j] \leftrightarrow第i天持有j的股票能获得的最大利益 dp[i][j]=max(dp[i−1][j],max(dp[pre][j+k]+B原创 2017-01-16 23:32:23 · 434 阅读 · 0 评论 -
HDU 4348 To the moon 【主席树+区间修改】
persistent segment tree 题目链接题意给一串初始序列An,并且初始的时间是0,定义以下操作: 1. 给一个区间内的数加上一个值,并且时间加一 2. 查询当前某区间的区间和 3. 查询过去某个时间的某个区间和 4. 回到某个时间序列大小和查询数量级为1e5分析SPOJ上也有这个题,但HDU卡内存严格一些,所以有些方法就不能过了。 首先既然有历史版本,那么就用主席树吧原创 2016-11-16 00:25:27 · 927 阅读 · 0 评论 -
HDU 4288 Coder 【线段树】
题目链接segment tree, single-point update题意维护一个集合,这个集合可进行以下操作: + 向其中添加一个数(保证之前没有这个数) + 向其中删除一个数(保证集合中有这个数) + 求所有下标%5==3的数的和(从小到大排列) 完成给定的操作,返回sum的值分析求区间和问题,尝试使用线段树。然而是求的有步长的和,怎么处理?首先,每个区间中记录下标模5相同的数的和(原创 2016-10-20 21:04:28 · 429 阅读 · 0 评论 -
HDU 2795 Billboard 【线段树】
题目链接 Segment Tree, single-point update题意有一块h*w的告示板,要向上面贴一些广告,每张广告都想被贴得尽量靠顶端,然后再尽量靠左。现有n块尺寸分别是1*wi的广告(高度都为1)依次贴上去,问没张广告贴得位置。分析首先实际贴得行数肯定是min(h,n),开始没注意这个,被数据范围吓到了。然后这个问题只要记录每一行还剩下多少宽度,然后每贴一个广告就查找尽量靠左并且原创 2016-10-16 15:25:14 · 444 阅读 · 0 评论 -
HDU 1542 Atlantis 【线段树+扫描线】
题目链接 segment tree, scanning line题意矩形面积的并分析最基础的扫描线求矩形面积并的题,离散化后用线段树,这个思想很简单,不再赘述。记录在这里主要是这个线段树的写法,适用于区间反复覆盖,RE了很多次,记在这里方便以后查看。AC代码//HDU 1542 Atlantis //AC 2016-10-19 22:33:31 //Segment tree, scan line原创 2016-10-19 22:41:37 · 506 阅读 · 0 评论 -
HDU 5521 Meeting 【拆点+最短路】
题意给m个由图中结点组成的点集,点集中的点两两连通且距离为相等的ti。现有两人分别从1和N点处同时出发吗,问能否相遇以及相遇的最短时间。分析很容易想到直接分别以点1和点N为起始点求最短路,再遍历各个点即可求得最短相遇时间。然而建图上却有问题:这个题中的边是以点集的形式给出,极端情况下可能会出现有1E12条边的稠密图。 这时就要利用点集中的点之间距离相等这个性质,拆点来建图。将点集抽象成一个点,将点原创 2016-08-13 10:03:24 · 516 阅读 · 0 评论 -
HDU 1058 Humble Numbers 【DP】
题目链接题意定义“Humble Numbers”是素因子只含有2,3,5,7的数,求第n个Humble Number是多少。分析显然直接求出某个范围以内所有的humble Numbers,关键是如何枚举才能保证枚举出来的数是递增的。 这里用DP来实现,记录当前没有乘以某个因子中的最大数再乘以这个因子得到的数中的最小值,这样说很抽象,看代码: while(m<=5842) {原创 2016-08-09 14:21:11 · 298 阅读 · 0 评论 -
HDU 4193 Non-negative Partial Sums 【单调队列】
HDU 4193 Non-negative 题解,用到了单调队列、前缀和、循环同构等技巧原创 2016-05-18 23:16:24 · 423 阅读 · 0 评论 -
HDU-3045 Picnic Cows 【DP+斜率优化】
题目链接题意有N只奶牛,每只奶牛有一个满意度,如果把一些奶牛分到一个组内,那么这些奶牛的满意度都会下降到组中满意度的最小值。现在规定每个组至少T只奶牛,求总的满意度变化的最小值分析从这个题中我学到了斜率DP中规定了转移距离的最小值时的处理方法(也就是i必须从小于等于i-T的状态转移而来) 状态不难想出,先对奶牛的满意度排个序,设dp[i]为前i只奶牛分好组后的满意度下降最小值,显然有: dp[i原创 2017-03-11 16:31:12 · 420 阅读 · 0 评论