POJ
文章平均质量分 50
DrCarl
重庆大学acm-icpc集训队队员
展开
-
POJ-2481 Cows
抽象模型:求许多区间中某个区间是多少个区间的真子区间。 解决思路:刚拿到这个题似乎无从下手,很难表达区间的包含关系。但实际上一维的包含关系,可以转化为二维的位置关系。对于区间[x1,y1]与[x2,y2],如果[x1,y1]是[x2,y2]的真子区间,那么x1>x2,y1<y2,可知(x2,y2)这个点再(x1,y1)的左上方。那么求某个点某个方向有多少个点,参考HDU 1541 S原创 2016-03-22 19:33:38 · 407 阅读 · 0 评论 -
POJ-1260 Pearls 【DP】
题目链接题意某公司需采购c种珍珠,知道每种珍珠的价格和需要的量。购买时,若要买某种珍珠,需额外支付10个该种珍珠的价钱。同时价格低的珍珠可以用价格高的珍珠代替。求最少能花多少钱完成采购。分析解决本题关键要想到这一点:若第i种珍珠可以被第j种珍珠代替(i< j且珍珠价格递增),则第i~j-1种珍珠都应当被第j种珍珠代替。证明很简单,这里省略。所以最终的采购的方式就是将整个珍珠种类的区间进行划分,每个划原创 2017-02-25 15:25:44 · 270 阅读 · 0 评论 -
POJ 3017 Cut the Sequence 【DP+单调队列优化+平衡树】
题意给定一串数列,要求把它划分成一些小段,每个小段的和不超过M,找到一种分段方法使得每一段的最大值的和最小,求这个最小值分析易得转移方程 dp[i]=min(dp[k]+max(num[k+1],⋯,num[i])) dp[i]=min(dp[k]+max(num[k+1], \cdots, num[i])) 其中∑ij=k+1num[j]<=M\sum^i_{j=k+1} num[j]<=M原创 2017-01-16 10:14:38 · 511 阅读 · 0 评论 -
POJ 3225 Help with Intervals 【线段树】
题目链接 segment tree题意给定集合S,S最初是空集。现对其进行一些操作:与一个集合求交、并、补、对称差。用区间表示出最终的S分析这个题有许多注意的地方(当然可能是我写法不太好),肝了一上午…… 那么首先想到用线段树来解决这个区间覆盖的问题。虽然是实数区间,但注意到区间端点始终是整数。于是我们整体乘2,用偶数来代表整数点,用奇数来代表两整数之间的开区间。比如2就对应[1,1],3就对应原创 2016-10-26 12:00:30 · 376 阅读 · 0 评论 -
POJ 3255 Roadblocks 【次短路】
题意给N个节点,R条双向边求从结点1到N的次短路径分析通过这个题学习了一下次短路的求法。求K短路可以用A*+Dijkstra,有机会再学一发。 求次短路可以改进一下求最短路的Dijkstra,对每个结点不仅记录最短距离,同时也记录其严格的次短距离(不能等于最短路),同时再把松弛的条件改为满足次短的情况。具体来说,首先入队的条件有两个:小于最短距离,大于最短距离且小于次短距离。 if(dist[a原创 2016-08-13 09:23:57 · 361 阅读 · 0 评论 -
POJ 3666 Making the Grade 【DP+离散化】
题目链接题意有N个平台,它们的高度分别为Ai。先想把这些平台的高度变得非严格单调,改变一个平台的高度的花费就是高度的改变量,问最小的花费是多少。分析定义状态: dp[i][j]↔前i个平台高度变成单调递增并且第i个平台高度为j所需的最少花费dp[i][j] \leftrightarrow 前i个平台高度变成单调递增并且第i个平台高度为j所需的最少花费 所以状态转移:dp[i][j]=max(dp[原创 2016-08-09 14:59:42 · 331 阅读 · 0 评论 -
POJ 1065 Wooden Sticks 【贪心】
题目链接题意给n个整数对,定义数对间的大于关系是(w1,l1)≤(w2,l2)↔w1≤w2andl1≤l2(w1,l1) \leq (w2,l2) \leftrightarrow w1\leq w2 \,and\, l1\leq l2,求用这些数对最少能组成几组非递减序列分析LIS的变形,但考虑到原来给的这些数对并没有顺序,可以随便选择,因此没有必要用DP求LIS。可以倒序排序(先按第一个数排序,再原创 2016-08-09 14:41:44 · 283 阅读 · 0 评论 -
POJ 3280 Cheapest Palindrome 【区间DP】
题目链接题意给你一串字符串,并给出添加以及删除(在任意位置)每种字符的花费,问把这个字符串变成回文串所需的最少花费分析经典的区间DP状态设 dp[i][j]⇔将子串S(i,j−1)变成回文串的最小花费dp[i][j]\Leftrightarrow 将子串S(i,j-1)变成回文串的最小花费习惯设成前闭后开区间状态转移方程如果当前子串最前面和最后面的字符本来就相同,当前的最小花费就等于里面的子串的最原创 2016-08-02 21:37:35 · 337 阅读 · 0 评论 -
POJ 2566 Bound Found 【Two Pointers】
题目链接题意给一串数列,再给一个目标值(非负),求这个数列中最接近目标值的区间和的绝对值分析原数列中的数有正有负,用Two Pointers不能保证向左向右移动一定会使区间和变大或变小,而排序又会打乱数列的顺序。同样,如果先算出前缀和,在前缀和上移动同样不能保证向着期望的方向变化。但是,对前缀和排序不影响结果,只要记录某个前缀和对应的原下标,排序后再用Two Pointers,就可以解决这个问题AC原创 2016-08-01 14:56:00 · 245 阅读 · 0 评论 -
POJ 3679 Median 【二分】
题目链接题意给N(N小于等于1e6)个数,求出由它们每个数的差组成的数列的中位数(若有偶数个,取左边的一个)分析1e6的数据量,直接算是O(n2)O(n^2)的数据量,肯定T。考虑用二分来枚举中位数。然后二分中的判断有不同的方法: O(nlog2n)O(nlog^2n)做法: 用两次二分。先把原来的所有数排序,排序之后,选定一个数,其后面的数与其的差就是递增的了。于是用枚举的中位数,从头到尾遍历,原创 2016-08-01 11:35:59 · 298 阅读 · 0 评论 -
POJ 1862 Stripies 【贪心】
题目链接题意有一种生物,他们两两融合过后的质量是原来的几何平均数的二倍,求所有的融合之后能够得到的质量最小值。分析主要是要思考到如何贪心,结论是:不断让所有生物中质量最大的两个进行融合,直到只剩一个位置(即使答案)证明:设nn个生物,他们的质量分别是m1,m2,⋯,mnm_1, m_2, \cdots ,m_n ,则它们融合过后的质量为原创 2016-07-20 23:19:38 · 374 阅读 · 0 评论 -
POJ 3190 Stall Reservations 【区间贪心】
题目链接题意给你N个闭区间,求最小的分组数,使得每组中的区间互不相交分析最开始想的是用取最多不相交区间的办法,不断地取出当前可以作为最多不相交区间的组,取后标记,再不断取,这样可以保证组数最少。但是这样做复杂度是O(N2)O(N^2),而题中数据量是50000,不可取。 考虑另一种贪心思路:不断取当前可取的左端点最小的区间,如果可以加在当前右端最值最小的组的后面,则加入,否则新开一组放它。 那么原创 2016-07-20 23:18:24 · 495 阅读 · 0 评论 -
POJ 1852 Ants 【水+Trick+贪心】
题目链接题意有一根长度为lcm的杆,上面又n个蚂蚁,它们的运动速度均为1cm/s,相遇的蚂蚁会同时改变运动方向,运动到杆边缘的蚂蚁会掉落下来。现知道它们每一个的起始位置,但不知道运动方向,求它们全部掉落的最短时间,以及最长时间。分析求最短时间很容易,全部同时向离自己最近的那个边缘运动,离得最远的那只掉落的时间就是总的最短时间。 而在求最长时间时,注意蚂蚁相遇时会同时改变运动方向,由于每只蚂蚁运动速原创 2016-07-20 19:22:04 · 408 阅读 · 2 评论 -
POJ 2955 Brackets 【区间DP】
题目链接题意给一串包含中括号和小括号的字符串,求其括号匹配正常的顺序(不一定连续)子串中的(最长串)分析状态区间问题的一般处理方法:设dp[i][j]⇔与j间最长满足要求子串长度dp[i][j]\Leftrightarrow与j间最长满足要求子串长度状态转移方程 如果这个区间两个端点的括号是匹配的,那么它可以是由去掉两端点的串加上2转移而来,比如([]) dp[i][j]=max(dp[i][j]原创 2016-05-25 16:50:03 · 689 阅读 · 0 评论 -
POJ-1180 Batch Scheduling 【逆向DP+斜率优化】
题目链接题意一台机器有N个物品要处理,每个物品的处理时间是Ti,花费系数是Fi,可以把这N个物品分包处理,打包需要花费时间S,机器每处理完一包物品就会把当前时间显示出来(刚开始处理时时间为0),那么这包中每个物品的花费就是显示的这个时间乘以其花费系数。求处理完所有物品的最小花费。分析朴素的想法设状态为处理前i个物品的最小花费,但是单考虑前i个物品的花费是有后效性的,因为每新增一个包它的开始时间是由前原创 2017-03-05 15:21:20 · 458 阅读 · 0 评论