
ACM/ICPC区域赛真题
文章平均质量分 82
XDU_Skyline
Everything is over, everything is just beginning.
展开
-
HDU 5029 Relief grain (2014年广州赛区网络赛H题)
1.题目描述:点击打开链接2.解题思路:本题是典型的树链剖分题目,不过本题的一个难点在于如何维护每个结点处数量最多的谷物型号。树链剖分经常和离线标记法结合使用,本题亦然。可以用一个vector来维护区间端点处增加的谷物种类。addv[L].push_back(z),subv[R+1].push_back(z)。通过树链剖分可以快速标记好每个区间。接下来就是扫描一遍每个结点,并用一个线段树来维护原创 2015-09-23 23:54:14 · 581 阅读 · 0 评论 -
HDU 5130 Signal Interference (2014年广州赛区现场赛D题)
1.题目描述:点击打开链接2.解题思路:根据题意,P点轨迹构成了一个圆,即著名的阿波罗尼斯圆,接下来的任务就是求解圆和多边形相交区域的面积了,直接用模板解决。3.代码:#include#include#include#include#include#include#include#include#include#include#include#include#i原创 2015-10-04 22:21:03 · 1005 阅读 · 0 评论 -
HDU 5445 Food Problem (2015年长春赛区网络赛I题)
1.题目描述:点击打开链接2.解题思路:本题利用拆分法+01背包解决,通过题意可以知道,我们需要做2次多重背包,第一次计算出最小的面积,第二次计算出最小费用。然而由于200*100*100=2e6,背包的W值过大,肯定会TLE,因此需要将每个物品按照二进制拆分成logMi个,由于Mi最大只有100,因此拆分后的物品总量最多只有200*log(2,100)=2000个,而且拆分后的物品的能量最少原创 2015-09-15 23:47:40 · 889 阅读 · 0 评论 -
HDU 5468 Puzzled Elena (2015年上海赛区网络赛A题)
1.题目描述:点击打开链接2.解题思路:本题利用dfs序+容斥原理+前缀和性质解决。题目中要求每个结点,和多少个它的子结点互素。如果每次为了求一个点去跑一遍dfs,复杂度将是O(N(N+M))。一定会超时。因此需要深入加以分析。注意到n的范围是10^5以内的,因此可以事先用线性筛求出每个数含有哪些素因子。接下来,我们尝试利用dfs序来求解。设num[i]表示遍历到当前结点时候,含有因数i(注意原创 2015-10-01 22:54:53 · 678 阅读 · 0 评论 -
HDU 5437 Alisha’s Party (2015年长春赛区网络赛A题)
1.题目描述:点击打开链接2.解题思路:本题是多关键字的排序题目,可以事先定义好优先级,然后利用一个优先队列来模拟“到来”和“进门”这2个过程,有2个地方需要小心:1.题目中输入的t,p需要事先排序;2.不要忘记处理最后一次开门时候的情况。3.代码:#include#include#include#include#include#include#include#inclu原创 2015-09-14 17:19:57 · 607 阅读 · 0 评论 -
HDU 5442 Favorite Donut (2015年长春赛区网络赛F题)
1.题目描述:点击打开链接2.解题思路:本题利用后缀数组解决。这是我第一次用后缀数组解题,没想到第二发就过了,非常激动人心啊~。本题实际上就是SA的基本应用,首先求出原始串的SA,那么SA的最后一个后缀一定是顺时针方向上的最优解。这点不难证明,因为字典序比较时候,一定是从前往后比较的,这样,即使看做环形的字符串,这个大小关系依然不变,因此可以快速得到顺时针时候的答案。至于逆时针,这就需要借助一原创 2015-09-14 20:37:53 · 632 阅读 · 0 评论 -
HDU 5441 Travel (2015年长春赛区网络赛E题)
1.题目描述:点击打开链接2.解题思路:本题利用并查集解决,事先存储所有的查询,然后按照值由小到大排序,这样,可以计算出排序后的第i个查询比第i-1个查询增加的结点,比如如果u和v不在同一个集合,且此时u和v分别有rank[u]和rank[v]个元素,那么多增加的值就是2*rank[u]*rank[v]。累加ans即可。3.代码:#include#include#include#原创 2015-09-14 12:16:19 · 659 阅读 · 2 评论 -
HDU 5438 Ponds (2015年长春赛区网络赛B题)
1.题目描述:点击打开链接2.解题思路:本题利用拓扑排序+并查集解决。由于以前没用过用队列来模拟一个拓扑排序过程,比赛时候这道题做的异常艰难才通过==。如果用队列来处理的话,就会方便很多,首先入队列的是degree小于2的点,然后从这些点出发,和他相邻的点的degree都要减小1,如果发现相邻结点的degree也小于2了,那么加入队列,同时标记所有degre小于2的点,表示他们已经被删除了。这原创 2015-09-14 14:05:49 · 624 阅读 · 0 评论 -
HDU 5446 Unknown Treasure (2015年长春赛区网络赛J题)
1.题目描述:点击打开链接2.解题思路:本题利用Lucas+CRT+移位乘法解决。然而。。。比赛时候意识到了可能会爆long long,但是还没学移位乘法,受到了100点伤害==3.代码:#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#include#include#include#incl原创 2015-09-13 16:33:32 · 776 阅读 · 0 评论 -
ZOJ 3814 Sawtooth Puzzle (2014年牡丹江赛区网络赛F题)
1.题目描述:点击打开链接2.解题思路:本题是一道隐式图的搜索题目。一般来说,这类题目首先要定义状态,接下来是弄清楚状态如何转移,以及状态如何判重,如何判断当前状态是否和目标状态相同。至于求解最短路就是常用的BFS即可。接下来我们逐一展开讨论。1.状态的定义:看到这道题,猛一下会想着把每个字符分别用01表示,然后看成二进制码进行状态压缩,这个状态定义虽然可以,但是显然,状态过于精确原创 2015-08-19 13:25:48 · 700 阅读 · 0 评论 -
HDU 5012 Dice (2014年西安赛区网络赛F题)
1.题目描述:点击打开链接2.解题思路:本题利用BFS解决。本题是一道隐式图搜索题目,不过本题的状态扩展比较简单,直接用常量数组即可搞定,然后就可以进行扩展了,比较简单就不再详细叙述过程了。3.代码:#include#include#include#include#include#include#include#include#include#include#inc原创 2015-09-12 22:59:07 · 459 阅读 · 0 评论 -
HDU 5493 Queue (2015年合肥赛区网络赛J题)
1.题目描述:点击打开链接2.解题思路:本题利用名次树解决。一般这种排队类的题目都可以往名次树上考虑。接下来考虑如何确定每个元素的位置。可以由小到大逐个考虑,假设现在考虑第i个元素,有num个人要比他高,由于他前面的人都比他矮,因此可以全部忽略。这时候因为要考虑2种情况,那么我们优先选择会让第i个元素比较靠前的策略。如果是前面有num个人比他高,那么第i个人就在当前队列的第num+1个位置;如原创 2015-09-28 22:40:33 · 636 阅读 · 0 评论 -
HDU 5135 Little Zu Chongzhi's Triangles (2014年广州赛区现场赛I题)
1.题目描述:点击打开链接2.解题思路:典型的状压dp题目,用集合S表示当前已经使用过的木棍的集合,那么有dp(S)=max{dp(S),S(i,j,k)+dp(S/{i,j,k})}。从小到大递推枚举集合即可。3.代码:#include#include#include#include#include#include#include#include#include#i原创 2015-10-05 01:08:53 · 595 阅读 · 0 评论 -
HDU 5439 Aggregated Counting (2015年长春赛区网络赛C题)
1.题目描述:点击打开链接2.解题思路:本题利用打表+二分查找。仔细观察后会发现如下规律:(1):序列中,相同元素的个数构成的序列仍然是原序列;(2):如果我们按照个数来分类,可以写成下面的形式:个数 元素1 12 2, 33 4, 54 6, 7, 85 9, 10, 116原创 2015-09-16 22:37:01 · 630 阅读 · 0 评论 -
1002 Mission Impossible 6 (2015年北京赛区网络赛B题)
1.题目描述:点击打开链接2.解题思路:本题要求模拟一个文本编辑器。功能就是题目中描述的那样。为了方便支持插入,删除,替换操作,可以直接使用string来模拟。不过这种题目一般重难点在于对细节的把握。稍微考虑不周就会陷入WARush中。这道题我上来就被这几处细节给坑到了:(1)新输入的字符,如果在caret右侧没有字符时候,可以看做是insert,而不是忽略它。(2)对于已经被忽略的字原创 2015-09-23 00:03:52 · 929 阅读 · 0 评论 -
1005 Border Length (2015年北京赛区网络赛E题)
1.题目描述:点击打开链接2.解题思路:(尚未AC):第一次计算在圆内的线段总长度,第二次计算在多边形内部的圆弧长度。相加就是答案,然而。。不明觉厉为何总是WA。求大神可以提示。3.代码:#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#include#include#include#incl原创 2015-09-21 19:02:46 · 631 阅读 · 0 评论 -
1008 Fractal (2015年北京赛区网络赛G题)
1.题目描述:点击打开链接2.解题思路:本题利用代数分析即可解决。通过观察可以发现,有竖线的地方的横坐标均满足0.5-0.5^n。因此可以事先求出n,如果发现恰好是0.5-0.5^n,输出-1,否则输出4*n。3.代码:#include#include#include#include#include#include#include#include#include#in原创 2015-09-22 14:21:07 · 514 阅读 · 0 评论 -
1001 The Cats' Feeding Spots (2015年北京赛区网络赛A题)
1.题目描述:点击打开链接2.解题思路:本题需要分三种情况讨论:(1) nm。首先枚举圆心,然后计算其他点相对于该圆心的距离,排序后根据情况来讨论即可。3.代码:#include#include#include#include#include#include#include#include#include#include#include#include#incl原创 2015-09-22 14:16:26 · 617 阅读 · 0 评论 -
HDU 4998 Rotate (2014年鞍山赛区网络赛B题)
1.题目描述:点击打开链接2.解题思路:本题属于几何变换专题,一开始想着随便枚举两个点,然后都进行一下旋转变换,最后利用原始点和旋转后的点所在直线的中垂线的交点求解。然而发现精度损失很大,而且可能有特殊情况没有考虑到。学习了一下几何变换的方法。 由于旋转操作相当于对一个点构成的矩阵和一个旋转矩阵做乘法运算。最基本的旋转变换就是任意一个点围绕原点进行逆时针旋转。如果改成围绕某个定原创 2015-08-07 11:19:08 · 648 阅读 · 0 评论 -
HDU 5454 Excited Database (2015年沈阳赛区网络赛E题)
1.题目描述:点击打开链接2.解题思路:本题利用线段树解决,根据题意,我们需要建立两棵线段树,分别维护主对角线,副对角线。每个线段树的结点需要维护sum,sumL,sumR,查询时候把矩形看做一个平行四边形加上上下两个三角形来分3次查询。这样,本题即可在O(logN)时间内查询完毕。3.代码:#include#include#include#include#include#i原创 2015-10-24 11:52:03 · 1331 阅读 · 0 评论 -
UVa 1709 Amalgamated Artichokes
1.题目描述:点击打开链接2.解题思路:这是今年World Finals 的最简单的题。因为给的时间相当的宽,所以只需要提前计算出最大值后,用ans=max(mx[i-1]-y[i])更新答案即可。3.代码:#include#include#include#include#include#include#include#include#include#include原创 2015-10-09 22:29:00 · 829 阅读 · 0 评论 -
HDU 5451 Best Solver (2015年沈阳赛区网络赛B题)
1.题目描述:点击打开链接2.解题思路:第一次做这类通过矩阵求解整数部分的题目,学习了。首先是如何求(5+2sqrt(6))^n的整数部分,这里可以参考如下的博客链接:点击打开链接接下来,本题还有另外一个难点就是如何降低指数的次数。由于我们已经把问题变换为了通过矩阵快速幂来求解,而且根据线性递推数列取模后均为周期序列的结论,本题的矩阵也存在周期性,看到网上有的是根据群论的知识直接算原创 2015-10-21 00:14:16 · 678 阅读 · 0 评论 -
HDU 5447 Good Numbers (2015年长春赛区网络赛K题)
1.题目描述:点击打开链接2.解题思路:本题利用唯一分解定理+gcd解决。这是我第一次用Java写题,忙了一下午终于通过了,真是太不容易了==。本题实际上就是把k1,k2分解后,把所有素因子的指数相乘就是答案。然而,k1,k2的范围太大了,高达10^24,为了方便使用大整数,直接上Java。接下来就是考虑如何高效分解k1,k2了,注意到题目中给了一个条件:k1,k2的最大的素因子是相同的,原创 2015-09-17 19:47:42 · 1701 阅读 · 0 评论 -
HDU 5452 Minimum Cut (2015年沈阳赛区网络赛C题)
1.题目描述:点击打开链接2.解题思路:本题要求找到一个最小割,使得只有一条边属于生成树上的。观察后可以发现,只有选择在树上的度为1的点才可行,因为如果这个点在生成树上的度大于1,那么显然只删除树上的一条边,他仍然和整个图是连通的。这样,只需要找到树上的度为1的点,然后用它在图中的度更新答案即可。3.代码:#include#include#include#include#inc原创 2015-10-20 22:44:38 · 855 阅读 · 0 评论 -
HDU 5491 The Next (2015年合肥赛区网络赛H题)
1.题目描述:点击打开链接2.解题思路:本题要求找一个尽量小的数字,使得它大于D,且二进制表示中1的个数在区间[s1,s2]中。比赛时候想了好久,终于想到一个比较诡异的做法:如首先把D分解成二进制并把每一位都放到数组base中,并用num来统计当前1的个数。如果最低位是0,那么先把它变成1,并检查此时1的个数是否符合要求。接下来,开始不停地寻找形如”11..1110“的序列,并把这段全部取反,原创 2015-09-28 10:39:14 · 743 阅读 · 0 评论 -
HDU 5044 Tree (2014年上海赛区网络赛C题)
1.题目描述:点击打开链接2.解题思路:本题是树链剖分的入门题。关于树链剖分的讲解,可以参考该博客:点击打开链接 。本题要求对结点和边都执行add操作,如果用树链剖分,并结合线段树,执行每次操作的时间复杂度可以降为O((logn)^2)。3.代码:#include#include#include#include#include#include#include#includ原创 2015-09-06 17:15:20 · 522 阅读 · 0 评论 -
HDU 5476 Explore Track of Point (2015年上海赛区网络赛I题)
1.题目描述:点击打开链接2.解题思路:本题需要事先求出点P的轨迹形状,容易发现,题目要求找的是2角相加恰好是180度时候点的轨迹。比赛时候猜出来样例是由sqrt(2)*PI/2+1得到的,然而没有想到这个圆长什么样子==,差点就猜到圆的半径是sqrt(2)/2,圆心角是90度了。那只有一种情况就是这个圆和等腰三角形的两条边是旁切的。至于证明,过程比较复杂,因此在此略去。大概如下:3.原创 2015-09-28 11:34:16 · 507 阅读 · 0 评论 -
HDU 4458 Shoot the Airplane (2012年杭州赛区现场赛F题)
1.题目描述:点击打开链接2.解题思路:本题利用运动的相对性解决。可以假设飞机固定不动,那么子弹相当于还有一个水平分量,只不过方向是-v。这样,问题就转化为一个动点什么时候到达一个多边形内部的问题了。不过本题有一个细节就是g可能等于0,因此要分匀变速运动和匀速运动2种情况求出最大可能的子弹飞行时间。另外一个细节就是本题对精度要求比较高,建议判断点是否在线段上改为利用坐标的差值来判断,避开使用D原创 2015-08-30 20:19:49 · 1222 阅读 · 0 评论 -
HDU 5003 Osu! (2014年鞍山赛区网络赛G题)
1.题目描述:点击打开链接2.解题思路:本题是一道简单的排序题,按照题意排序计算即可。3.代码:#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#include#include#include#include#include#include#include#include#inclu原创 2015-08-07 11:43:11 · 830 阅读 · 0 评论 -
HDU 5000 Clone (2014年鞍山赛区网络赛D题)
1.题目描述:点击打开链接2.解题思路:本题利用动态规划解决。首先需要一点点的推导,即什么情况下两个克隆体可以共存,假设A,B两个克隆体可以共存,必然有一个属性A大于B,而另一个A小于B,直观上感觉:如果他们的属性值的和sum相同的话,就一定可以共存。这一点很容易证明。 第二点,两个sum值不相同的克隆体能共存吗?显然也是可以的。然而当所有的sum值相同的克隆体都组成一类的话,原创 2015-08-07 14:47:15 · 661 阅读 · 0 评论 -
HDU 5001 Walk (2014年鞍山赛区网络赛E题)
1.题目描述:点击打开链接2.解题思路:本题利用矩阵快速幂+概率dp解决。根据题意可以画出来一个状态转移图,根据状态转移图不难得到一步转移概率矩阵,接下来的问题是:如何求解d步之内(包括d)均无法从其他点走到结点u的概率。首先,既然无法到达结点u,那么出发的时候就不能选择该点。其次,为了使其他结点也无法到达结点u,可以将一步转移概率矩阵中跟结点u有关的概率全部置零。即表示u结点出发无法到达原创 2015-08-07 17:18:12 · 683 阅读 · 0 评论 -
HDU 5006 Resistance (2014年鞍山赛区网络赛J题)
1.题目描述:点击打开链接2.解题思路:本题利用缩点+高斯消元解决。本题的最大特点就是电阻非零即一,如果电阻为0,说明零点之间是等电位点,可以看做一个整体,自然可以想到先利用并查集进行缩点操作,将复杂的电路图转化为不相等的电位点构成的电路图。如果转换完毕后,发现s和t在一个集合中,说明两点之间是等电位的,自然电阻为0,否则,对转换后的图G‘重新判断连通性,依然可以利用并查集解决,如果发现不连通原创 2015-08-07 23:20:49 · 673 阅读 · 0 评论 -
HDU 4422 The Little Girl who Picks Mushrooms (2012年长春赛区现场赛C题)
1.题目描述:点击打开链接2.解题思路:本题是一道简单模拟题,然而,自己的方法不对WA了很多次==。最后不得不弃用自己的思路了。首先用-1表示还没有使用过的位置。可以每次枚举3个位置,如果发现这3个位置中没有-1且他们的和不能被1024整除,那么return 0,否则,找到没有被标记的另外2个位置,如果这2个位置其中一个为-1,那么直接返回1024,因为我们已经交了三个袋子了,剩下的袋子中如果原创 2015-08-26 22:00:57 · 754 阅读 · 0 评论 -
HDU 4427 Math Magic (2012年长春现场赛H题)
1.题目描述:点击打开链接2.解题思路:本题要求寻找k个正整数,它们的和恰好是N,它们的LCM恰好是M的解的个数。可以设置一个三维的dp来解决。用dp(i,j,k)表示选择i个数,它们的和恰好是j,它们的LCM恰好是k的个数。那么答案就是dp(k,n,m)。不过这里介绍一种利用状态压缩思想求解的方法。通过题意可以发现,N,M的范围都比较小,不超过1000,而1000之内的所有数的不原创 2015-08-27 00:04:23 · 1229 阅读 · 0 评论 -
HDU 5002 Tree (2014年鞍山赛区网络赛F题)
1.题目描述:点击打开链接2.解题思路:LCT的模板题3.代码:#include #include #include #include #include using namespace std;const int N = 111111;const int INF = 1111111111;int n, m;class LCT {private :原创 2015-08-28 01:44:44 · 1179 阅读 · 0 评论 -
HDU 4118 Holiday's Accommodation (2011年成都赛区现场赛H题)
1.题目描述:点击打开链接2.解题思路:本题利用树形dp求解。本题要求每个结点上的人都交换位置后,使得走过的总路程最大,这就意味着每条边经过的次数都尽可能的多。因此我们不妨从边的角度入手来考虑,怎么才能让第i条边通过的次数最多呢?可以发现,如果这条边右侧的结点数有size个,右边有n-size个,那么最大的通过次数就是2*e[i].w*min(size,n-size),而计算size正是树形d原创 2015-08-26 09:31:59 · 661 阅读 · 0 评论 -
HDU 4435 charge-station (2012年天津赛区现场赛E题)
1.题目描述:点击打开链接2.解题思路:本题利用DFS解决。不过本题的解法颇为巧妙,注意到2^0+2^1+...+2^(i-1)3.代码:#include#include#include#include#include#include#include#include#include#include#include#include#include#include原创 2015-08-27 21:10:40 · 720 阅读 · 0 评论 -
HDU 4115 Eliminate the Conflict (2011年成都赛区现场赛E题)
1.题目描述:点击打开链接2.解题思路:本题属于2-SAT问题,第一次做这种题,还是很感兴趣的。2-SAT解决的是给定m条语句,每一条语句形如“xi为真或xj为假”,问你是否可能让所有的语句都成立。那么不难发现,本题就属于一种2-SAT问题。首先,根据题意可知,第i轮有2种出法,要么是x[i],要么是(x[i]+1)%3。我们令xi为真表示出x[i],xi为假表示出(x[i]+1)原创 2015-08-26 12:15:28 · 702 阅读 · 0 评论 -
HDU 4455 Substrings (2012年杭州赛区现场赛C题)
1.题目描述:点击打开链接2.解题思路:本题利用dp解决。不过这个dp的思路的确比太容易想到。需要观察规律才能发现。我们可以从贡献值的角度考虑。以题目中给的样例来说明这种方法。通过观察相邻两个w值,我们会发现一个事实:每个大区间都包含了小区间的解(这里的解即原题中的sum值)。但是这原创 2015-08-30 13:47:04 · 766 阅读 · 0 评论 -
HDU 4462 Scaring the Birds (2012年杭州赛区现场赛J题)
1.题目描述:点击打开链接2.解题思路:本题是一道简单模拟题。不过重点还是对于题目细节的理解。容易犯2个理解错误:(1)误以为是每个稻草人有不同的scaring range,实际上scaring range是由不同的vacant intersection决定的,跟稻草人毫无关系。(2)误以为所有点都需要被覆盖,实际上题目要求的是只要所有corn被保护就行,插稻草人的地方本来就是空地,有没有被保原创 2015-08-30 15:43:35 · 625 阅读 · 0 评论