常用技巧——等价转换
文章平均质量分 78
XDU_Skyline
Everything is over, everything is just beginning.
展开
-
习题5-4 交换学生 UVa10763
其实我的思路想复杂了,AC了之后看了别人的代码才发现如此简单原创 2014-08-12 14:24:51 · 757 阅读 · 0 评论 -
HDU 5032 Always Cook Mushroom (2014年北京赛区现场赛A题)
1.题目描述:点击打开链接2.解题思路:本题利用极角排序+BIT解决。不过这种思路实在是不容易想到。首选把(1,1)~(1000,1000)都存入数组,并按照他们的斜率排序,然后对输入的m条询问也当做点来看待,当然,这些“点”不能和前面预处理的那些点混淆,这些点表示的是询问点,需要保存询问点的信息有:直角顶点(x,0),斜率(b/a),答案(ans),询问的id(i)。对这些询问也按照斜率由小原创 2015-09-05 19:50:16 · 665 阅读 · 0 评论 -
例题4.3 狗的距离 UVa11796
1.题目描述:点击打开链接2.解题思路:本题利用相对运动来解决。首先,我们可以考虑一种简单的情况,甲和乙的路线都是一条线段,因为运动的相对性,可以认为是甲不动,乙自己沿着直线走。因此问题转化为求点到线段的最大和最小距离。 那么如何求解本题呢?其实只需要模拟整个过程即可,假设现在甲的位置在Pa,刚经过编号为Sa的拐点;乙的位置在Pb,刚刚经过编号为Sb的拐点。则我们只需要计算他原创 2015-08-15 22:19:58 · 505 阅读 · 0 评论 -
HDU 5386 Cover (2015年多校比赛第8场)
1.题目描述:点击打开链接2.解题思路:本题利用逆向思维+贪心法解决。因为题目中已经告诉我们一定存在解,因此可以考虑贪心法的使用。这道题的妙处在于答案和初始矩阵是无关的,只和目标矩阵有关。因为不管初始矩阵长什么样,只要操作一样,加上解的存在性,得到的目标矩阵一定是相同的。接下来就是如何寻找操作序列。假设最后一步操作执行后,我们得到了目标矩阵,由于所有操作都是对一整行或者一整列进行的原创 2015-08-15 10:30:00 · 832 阅读 · 0 评论 -
HDU 5000 Clone (2014年鞍山赛区网络赛D题)
1.题目描述:点击打开链接2.解题思路:本题利用动态规划解决。首先需要一点点的推导,即什么情况下两个克隆体可以共存,假设A,B两个克隆体可以共存,必然有一个属性A大于B,而另一个A小于B,直观上感觉:如果他们的属性值的和sum相同的话,就一定可以共存。这一点很容易证明。 第二点,两个sum值不相同的克隆体能共存吗?显然也是可以的。然而当所有的sum值相同的克隆体都组成一类的话,原创 2015-08-07 14:47:15 · 647 阅读 · 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 · 707 阅读 · 0 评论 -
例题1.27 王子和公主 UVa10635
1.题目描述:点击打开链接2.解题思路:本题是一道经典的题目,巧妙的将LCS问题转化为LIS问题。这种题目的一个特定就是其中一个序列的所有元素均不相同。首先,我们可以对A数组重新编号为{1,2,3,...n},接下来对于B数组的每个元素,替换为A中那个元素的编号,若没有在A中出现,那么直接置0,这样,B数组也变为一个由编号构成的数组,此时我们发现,A数组是一个自然序列,那么只要在B中找到最长上原创 2015-05-23 19:49:14 · 902 阅读 · 0 评论 -
Looksery Cup 2015 G. Happy Line
1.题目描述:点击打开链接2.解题思路:本题利用贪心法解决。不过贪心的思想却是非常巧妙的。想象有一个阶梯,第n个人的阶梯高度是1,然后第n-1个人的阶梯高度是2,第1个人的阶梯高度是n。程序中用base[i]表示第i位的阶梯高度。注意:题目中,“前面”只的是序号大的,“后面”指的是序号小的。那么,如果一个人沿着阶梯下降,说明他在往前移动;反之则是在往后移动。由于不管怎么交换,最终想要达到的状态原创 2015-06-18 18:40:23 · 569 阅读 · 0 评论 -
#140 (div.1) B. Naughty Stone Piles
1.题目描述:点击打开链接2.解题思路:本题利用贪心法解决。根据题意描述,我们知道最终的答案是和摆放顺序无关的,而费用要尽量小,因此直观上的感觉是尽量取小堆放在大堆上。这里我们试图利用递归的思想来解决本题。首先,假设这n个石子已经由小到大排序,当k=n-1时,只需要把前n-1个石子都摞到第n个石子上即可。那么,当k=n-2时该怎么办呢?我们还想办法把它变成之前的简单情况,即变为第n个石原创 2015-06-01 13:22:00 · 650 阅读 · 0 评论 -
习题6-6 修改天平 UVa12166
1.题目描述:点击打开链接2.解题思路:本题利用dfs解决,不过思维上要发挥一些创造性。本题问至少要修改的砝码个数,那么首先可以想到要选一个基准砝码,其他所有的砝码都试图根据这个基准法吗而改变。不过本题的巧妙之处就在这里,只要以深度为depth(depth从0开始)重量为w的砝码为基准,那么就能求出整个天平的总重量,即w*2^(depth),在代码中可以简洁地表示为wth。这样,我们只用统计每原创 2015-04-01 14:40:44 · 1249 阅读 · 0 评论 -
例题6-22 战场 UVa11853
1.题目描述:点击打开链接2.解题思路:本题初看起来比较麻烦,不妨简化一下:先判断是否有解,再考虑如何求出解。根据题意描述,相当于在一个正方形中有若干个圆形障碍物,问是否能从左边界走到右边界。判断是否有解需要一点创造性的思维:不妨把正方形当做一个湖,所有的圆形都是垫脚石,假设我们可以从上边界“踩着”垫脚石成功走到下边界,说明左右边界是不连通的;否则就是连通的。想到了这里,便不难用dfs或bfs原创 2015-03-31 18:54:47 · 1726 阅读 · 2 评论 -
习题3-11 换低挡装置 UVa1588
1.题目描述:点击打开链接2.解题思路:本题要求找一个尽量小的长度,使得能够容纳下两个不同的装置。还是考虑暴力搜索:假设两个装置分别为a,b,,长度分别为n1,n2.那么固定b(b的起始位置固定到位置n1),从左往右枚举a的起始位置,看能否和b进行匹配。如果可以,更新最小的长度。输出即可。另外,也可以从对称性的角度考虑。由于固定装置是相对的,因此考虑固定b和固定a两者的最小值即可。3.原创 2015-03-23 19:10:58 · 746 阅读 · 0 评论 -
例题1.5 蚂蚁 UVa10881
1.题目描述:点击打开链接2.解题思路:本题是一道很经典的题目,锻炼思维的。蚂蚁在杆子上相互碰撞,反弹,从远处看去,好像直接穿过,除此之外,每只蚂蚁的相对位置是不变的。本题就是从这两处突破口编程解决的。因此,我们可以最初把他们看做直接穿过,到最后再确定他们”谁是谁“即可。由于最初输入时是乱序(没有按照位置由小到大输入),因此应该先记录输入的序号,按照位置排序后用一个order数组标记第i个输入原创 2015-03-10 21:11:14 · 634 阅读 · 0 评论 -
例题1.4 墓地雕塑 UVa1388
1.题目描述:点击打开链接2.解题思路:本题的解法颇为巧妙,应用了逆向思维。假设最后这n+m个雕塑已经摆放好,不妨将它们两两之间的距离看做单位1,那么计算之前的位置坐标。这里都以其中一个为圆周上的坐标原点。那么原来的雕塑中第i个的距离是pos=i/n*(n+m),因此看它离哪个整数比较接近,就移动到那个整数。而选择距离最近的那个整数只用把i/n*(n+m)四舍五入即可,即floor(pos+0原创 2015-03-10 18:47:39 · 1032 阅读 · 0 评论 -
例题1.3 分金币 UVa11300
1.题目描述:点击打开链接2.解题思路:本题要求若干个人分金币时交换的最少金币数。由于最后每个人获得的金币数量一样,即平均值M,那么我们可以设出来第i个人传递给第i+1个人的金币数量是Xi(把队列当做循环的),那么每个人都可以看做一个结点,根据结点可以列写相应的转移方程:Ai+X(i-1)-X(i)=M。整理后发现,每个Xi都等于X1-|Ai-M|,令Ci=|Ai-M|,所以本题就是求sum{原创 2015-03-10 18:13:55 · 790 阅读 · 0 评论 -
例题9-3 旅行 UVa1347
1.题目描述:点击打开链接2.解题思路:本题看似一道几何问题,实际上可以利用动态规划解决。走一圈周长最短可以等价为两个人同时从最左端出发,沿着不同的路径走到最右端。如果定义d(i,j)表示1~max(i,j)全部走过,第一个人在i,第二个人在j,还需要走多长的距离。此时可以规定i>j,这样,还可以规定i,j中只有一个人允许走到i+1这一点。这样的话可以保证不会出现某些点跳过的情况。状态转移方程原创 2015-02-11 17:59:22 · 2900 阅读 · 1 评论 -
例题8-5 Gergovia的酒交易 UVa11054
1.题目描述:点击打开链接2.解题思路:考虑最左边的村庄,假设需要买酒,即a1>0,则一定有劳动力从第二个村庄往左给村庄1送酒,而不必考虑酒是从哪里来的。这样,问题就转化成只有村庄2~n,且第2个村庄的需求为a1+a2的情况。这样的推理对a13.代码:#define _CRT_SECURE_NO_WARNINGS #include#include#include#include原创 2015-02-06 12:46:00 · 721 阅读 · 0 评论 -
POJ 3723 Conscription
1.题目描述:点击打开链接2.解题思路:本题考察最小生成树,利用Kruskal算法解决。我们来设想一下这样一个无向图:如果在征募某个人a时,利用了a和b之间的关系,那么就有一条a到b的边。假设这个图中存在圈,那么无论以什么顺序征募这个圈上的所有人,都会产生矛盾。因为其中的关系必须单向利用。比如B和A最亲近,那么有一条边A->B,而C又和B最亲近,那么有B->C,可能实际上A和C也是最亲近的,但原创 2015-04-07 19:25:20 · 633 阅读 · 0 评论