文章分类 -  精妙解法

1 2 3 下一页
HDU4003:Find Metal Mineral
摘要:——求K个机器人从同一点出发,遍历所有点所需的最小花费——树形DP,分组背包——url:http://acm.hdu.edu.cn/showproblem.php?pid=4003————————————————————————————————————————————————【转载】:dp[i][j]表示对于以i结点为根结点的子树,放j个机器人所需要的权值和。当j=0时表示放了一个机器人下去,遍历完结点后又回到i结点了。状态转移方程类似背包如果最终的状态中以i为根结点的树中有j(j>0)个机器人,那么不可能有别的机器人r到了这棵树后又跑到别的树中去因为那样的话,一定会比j中的某一个到达i 阅读全文
posted @ 2011-09-17 19:39 风也轻云也淡 阅读(338) 评论(0) 推荐(0)
ZOJ3537:Cake
摘要:——将一块多边形的蛋糕切成许多三角形的小蛋糕,每切一刀有一个花费,求最小的花费。——dp,多边形的三角剖分——url:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3537————————————————————————————————————————————————————————————————【转载】在一个n个顶点的凸多边形中,插入对角线(对角线两两不相交)将多边形划分为三角形。总共需要n-3条弦,将多边形切成n-2个小三角形。设凸多边形n个顶点顺序为p[1],p[2],……,p[n],它有n条边:<p[1 阅读全文
posted @ 2011-09-17 15:24 风也轻云也淡 阅读(375) 评论(0) 推荐(0)
POJ1635:Subway tree systems
摘要:——初始时站在树的根节点,若朝着远离根的方向走,记录“0”,接近根的方向走记录“1”。并且树的每一条边只能来回走一次(即向下和返回)。一个合法的01序列可以描述出一棵树的形态。现在给出两个合法的01序列,判断两棵树是否同构。——树的同构——url:http://poj.org/problem?id=1635————————————————————————————————————————————————————【转载】由于根节点确定,若两棵树同构,无非就是把子树的位置交换了一下。很自然的想法就是:将树的子树按照某种规则进行排序,若排序之后两个字符串相等,则同构;否则不同构。现在来分析一下01序列 阅读全文
posted @ 2011-09-15 21:54 风也轻云也淡 阅读(200) 评论(0) 推荐(0)
POJ3847:Moving to Nuremberg
摘要:——一棵树,有边权,有一些点有点权,其余点点权为0。要求一个点,使得该点到其他点的边权和*点权的总和最小。——dp……大概算dp吧——url:http://poj.org/problem?id=3847————————————————————————————————————————————————————————————————————任选一个点作为根,将无根树变成有根树。预处理出(所有有点权的点到根的边权和*点权)的和D[ROOT]预处理出以每个点u为根的子树中所有点的frequency的和F[U]一遍dfs,求出每个点的D值D[U]=Segma(W*(sum-2*F[V])) V为U的儿. 阅读全文
posted @ 2011-09-08 16:08 风也轻云也淡 阅读(383) 评论(0) 推荐(1)
HDU3921:Clear All of Them II
摘要:——3920的加强版。这次一次设计能够反弹3个敌人。——贪心。——rul:http://acm.hdu.edu.cn/showproblem.php?pid=3921————————————————————————————————————————————————————————————题目中已经告诉我们,用贪心的方法,但是普通的贪心要n^4的复杂度,会超时。因此需要优化。假设一次射击击中的敌人分别是A,B,C,D。枚举B,C找出“我”和B点到其最近的点a1和次近一个点a2,以及与C点最近的点d1及次近的一个点d2若a1与d1不同,则用a1,B,C,d1来更新若a1与d1相同,则用a2,B,C, 阅读全文
posted @ 2011-09-05 19:45 风也轻云也淡 阅读(266) 评论(0) 推荐(0)
HDU3920:Clear All of Them I
摘要:——有2*n个敌人。你可以射击n次,每次可以且必须消灭2个敌人,消耗的能量为你到第一个敌人和第一个敌人到第二个敌人的距离。问消耗的能量最小是多少。——dp,状态压缩——url:http://acm.hdu.edu.cn/showproblem.php?pid=3920——————————————————————————————————————————————————————dp[I][J]表示第I次射击,敌人的情况为J时消耗的最小能量(J为二进制压缩的数)。dp[I][J]=MIN(DP[I-1][K&(1<<x)&(1<<y]+dist,DP[I][J 阅读全文
posted @ 2011-09-04 21:15 风也轻云也淡 阅读(166) 评论(0) 推荐(0)
POJ1160:Post Office【四边形不等式优化】
摘要:——有n个村庄,要建m个邮局,使得村庄到邮局距离的总和最小。(邮局只能建在村庄里)——DP,四边形不等式优化。——url:http://poj.org/problem?id=1160————————————————————————————————————————————————————————————————————————具体参见毛子清的论文。————————————————————————————————————————————状态转移方程d[i,j]=min{d[i,k-1]+d[k+1][j]}+w[i,j]i<=k<=j时间复杂度为O(n*n*n)。1、如果函数w满足:w 阅读全文
posted @ 2011-09-02 22:19 风也轻云也淡 阅读(338) 评论(0) 推荐(0)
EOJ:Roller Coaster
摘要:——贝茜滑冰,一共有n段。每段或者睁眼或者闭眼。如果一段睁着眼则好感度和晕眩度增加,若闭眼则好感度不变,晕眩度下降。求在不超过晕眩度上限的情况下获得的做大好感度。——背包问题,注意维度表示的量——http://202.120.106.94/onlinejudge/problemshow.php?pro_id=589————————————————————————————————————————————————首先,大家都能想到的方程:DP[I][J]表示第I个物品晕眩度为J时能获得的最大好感度。但是由于原题中I<=1000而J<=300000,所以这个转移铁定超时。———————— 阅读全文
posted @ 2011-08-13 21:29 风也轻云也淡 阅读(162) 评论(0) 推荐(0)
EOJ:Crossed Matchings
摘要:——给两行数字,在上下两行相同的数字间画条线,要求每条线必须要与且只能与另外一条线相交,一个数只能连一条线。问最多能连几条线。——类似LCS 最长公共子序列。——url:http://202.120.106.94/onlinejudge/problemshow.php?pro_id=504——————————————————————————————————————————————————参考最长公共子序列DP[I][J]表示匹配到上边第I个和下面第J个时最多的线的条数若A[I]==B[J]显然不能匹配(因为需要与另外条相交)则DP[I][J]=MAX(DP[I][J-1],DP[I-1][J- 阅读全文
posted @ 2011-08-09 23:34 风也轻云也淡 阅读(187) 评论(0) 推荐(0)
HDU3879:Base Station
摘要:——建通讯站。每个通讯站有一定耗费,两个特定的通讯站之间建立通讯以后会有一定收益,问怎样建立通讯站可以使得收益最大——最大权闭合子图-》最小割——url:http://acm.hdu.edu.cn/showproblem.php?pid=3879——————————————————————————————————————————首先考虑将图转化。即一条通讯线路有一定收益,但需要建立两个通讯站,这两个通讯站有一定造价。将通讯线路也变成点,点权为收益,连两条有向只向两个通讯站。原来的通讯站点权不变。由此,题目转化为在新的图中求一个闭合图,使得其点权最大,即最大权闭合子图(闭合图个人理解的定义:对于 阅读全文
posted @ 2011-08-07 18:52 风也轻云也淡 阅读(439) 评论(0) 推荐(0)
EOJ:Pro-Test Voting
摘要:——PROBLEM:某人竞选,须在各个社区争取选票,投入一定资金能够提高支持率,问如何分配资金能够使支持的人最多,并输出方案(同等条件下使第一个社区的投入最多,如果相同则第二个社区最多,依次类推)——背包问题,麻烦在于输出方案——url:http://202.120.106.94/onlinejudge/problemshow.php?pro_id=542————————————————————————————————————————————————————————————别被公式吓到,其实是个很简单的背包问题方程:dp[i][j]=max(dp[i-1][k]+tmp) tmp为投入J-K这 阅读全文
posted @ 2011-08-06 22:12 风也轻云也淡 阅读(199) 评论(0) 推荐(0)
EOJ:Ugly Numbers
摘要:——给一串数字。要求在数字中(第一个数字前不能添加)添加“+”或者“-”使得最后算出来的结果能够被2,3,5,7其中的一个整除。求这样的添加方案共有多少种。——DP——http://202.120.106.94/onlinejudge/problemshow.php?pro_id=426——————————————————————————————————————————————————————————拿到题首先的想法是搜索……一看这个复杂度果断就放弃了。在做DP之前有个很重要的想法就是对结果取余,直接保存余数即可。对几取余?直观的想法是对2,3,5,7以及两两,三三,四个的公倍数分别取余,然后 阅读全文
posted @ 2011-07-25 22:52 风也轻云也淡 阅读(152) 评论(0) 推荐(0)
EOJ:Buying Feed【单调队列优化】
摘要:——problem:从0出发到E,有一个容量为K的背包,途中有N个商店出售物品,物品价格不同且搬运物品的费用为k*k*D,k为当前背包的重量。求到终点背包容量恰为K的最小费用。——solution:树形DP——url:http://202.120.106.94/onlinejudge/problemshow.php?pro_id=440_______________________________________________________________明显的DP转移方程DP[I][J]=MIN{DP[I-1][K]+K*K*(D[I]-D[I-1])+(J-K)*C[I]} J-... 阅读全文
posted @ 2011-07-24 21:48 风也轻云也淡 阅读(200) 评论(0) 推荐(0)
EOJ:Let's Go to the Movies
摘要:——problem:有一群人去看电影,票有两种,一种是单票,一种是家庭票(允许一个家长和他所有子女),问怎样钱最少(相同情况取票数少的)——solution:树形DP——url:http://202.120.106.94/onlinejudge/problemshow.php?pro_id=53——————————————————————————————————最开始的想法是从上而下,由祖先开始,假设父节点买家庭票或单票两种情况往下推。然后发现这样做方程都写不出。正确的是dp[x][0]表示使用个人票的耗费,dp[x][1]表示使用家庭票的耗费。如果不考虑使用票的数目,可以有如下方程:vs为个 阅读全文
posted @ 2011-07-21 22:06 风也轻云也淡 阅读(135) 评论(0) 推荐(0)
POJ3271:Lilypad Pond
摘要:——problem:贝茜要从只能在荷叶上跳“日”字,问从起点到终点最少要加多少个荷叶,有多少种方案——solution:最短路——url:http://poj.org/problem?id=3271刚拿到题想直接最短路,但是发现在计数上会出现问题。如下图:222212222022243222122从3到4可以通过上面的1,也可以通过下面的1,这样会认为有两条最短路,但实际上摆放方式只有一种。为了解决这个问题,我们需要重新构图:将所有【空地】格看做点,如果空地i和空地j之间能在不添加荷叶的情况下互达,连一条无向边然后添加【原起点格和原起点能够在不添加荷叶的情况下到达的格子的集合】作为新的起点,终 阅读全文
posted @ 2011-04-05 21:38 风也轻云也淡 阅读(362) 评论(0) 推荐(0)
POJ3262:Protecting the Flowers
摘要:——problem:有N头牛,每头牛有两个参数T和D。把每头牛送到目的地要2*Ti的时间,在这期间其他牛会吃掉2*Ti*SEGMA(Di)的花,问如何排放牛的顺序使得被吃到的花最少——solution:排序——url:http://poj.org/problem?id=3262一开始以为只要按照D排序就可以了,结果WA了。正确的应该按照D/T从大到小排序。证明如下:任取两头牛i和j,这两头牛需要的总时间为2*(Ti+Tj),在此时间中其他牛吃的花是一定的,因此只要考虑这两头牛就可以了。若先送牛i,则牛j吃掉的花为2*(Ti*Dj),若先送牛j,则牛i吃掉的花为2*(Tj*Di),我们只要在两者 阅读全文
posted @ 2011-04-05 13:56 风也轻云也淡 阅读(222) 评论(0) 推荐(0)
POJ3277:City Horizon
摘要:——problem:求平面上矩形的面积,重复的只算一次。矩形的一边和X轴重合。——solution:离散化+线段树——url:http://poj.org/problem?id=3277比赛的时候先离散化试了下,超时。于是只能再写线段树,结果线段树写撮了。注意:1、40000个矩形,边大概有80000多个,线段树的数组至少要开到80000×3=240000。2、所有矩形先按从小到大排序。这样插入的时候不必判断已经插入矩形的高度,直接插就可以了。3、注意面积会超过int的范围,要开long long。代码:第一个代码矩形没有排序。于是node有三个域,h记录高度(如果左右子树的高度不同 阅读全文
posted @ 2011-04-02 21:39 风也轻云也淡 阅读(303) 评论(0) 推荐(1)
ECNU1468:Bicriterial routing
摘要:——url:http://acm.cs.ecnu.edu.cn/problem.php?problemid=1468——problem:路径A比路径B时间少"且"费用低才算A比B"好", 所以B最好只是意味着没有别的路径比它好, 而不是B比别的路径都好. 听起来很拗口, 因为本题的目标函数值不具有全序关系, 即存在不可比较的情况. 所以时间4费用5和时间5费用4的两条路径无法比较. 如果没有比它们更好的, 则它们都是最优"双调路径"(bicriterial应该是双重准则的意思). 另外, 如果有两条时间4费用5的最优双调路径, 则在答 阅读全文
posted @ 2011-03-27 18:58 风也轻云也淡 阅读(544) 评论(0) 推荐(0)
SGU145:Strange People
摘要:——problem:起点到终点的严格K短路(每个点在路径中最多出现一次)——solution:二分+dfs+dijkstra优化——url:http://acm.sgu.ru/problem.php?contest=0&problem=145一开始以为A*就可以了。鉴于A*本来也不会,所以就先学了遍A*。写完发现A*求的是非严格最短路。最后是二分答案+dfs+dijkstra优化过的。注意:1、当当前长度搜到的路径数已经大于K的话,就没必要再搜下去了。不过这样做的话,每次都要初始化下VIS数组。2、用dijkstra求出终点到各点的最短路,用来在DFS的时候剪枝。3、注意二分的问题,如 阅读全文
posted @ 2011-03-27 15:29 风也轻云也淡 阅读(297) 评论(0) 推荐(0)
POJ1338:Ugly number
摘要:——problem:求只含有因子2,3,5的第K大的数——solution:标记三个下标P2,P3,P4表示2,3,5分别乘到第几个数了。每次在2*(P2+1),3*(P3+1),5*(P5+1)里取最小的一个数放到数组了,然后那个下标+1. 阅读全文
posted @ 2011-03-26 22:00 风也轻云也淡 阅读(74) 评论(0) 推荐(0)

1 2 3 下一页