10 2015 档案

UVA-11367 Full Tank? (dijkstra)
摘要:题目大意:有n个加油站,每个加油站的油价已知,并且已知油箱的大小,问能否从起点走到终点,若能,找出最小油费。题目分析:记得在做暴力搜索的时候做过这道题,不算难。但是这次是用dijkstra算法做的,时间复杂度不理想,差一点超时(1.9s,限制是2s)。用BFS做的话要快很多。代码如下:# inclu... 阅读全文

posted @ 2015-10-31 21:49 20143605 阅读(262) 评论(0) 推荐(0)

UVA-10269 Adventure of Super Mario (dijkstra)
摘要:题目大意:有A个村庄,B个城市,m条边,从起点到终点,找一条最短路径。但是,有一种工具可以使人不费力的移动L个长度,但始末点必须是城市或村庄。这种工具有k个,每个只能使用一次,并且在城市内部不可使用,但在村庄内部可使用。另外,在城市或村庄内部的时间不计。题目分析:在城市内部不可使用但在村庄内部可使用... 阅读全文

posted @ 2015-10-31 20:41 20143605 阅读(441) 评论(0) 推荐(0)

UVA-10972 RevolC FaeLoN (边双连通+缩点)
摘要:题目大意:将n个点,m条边的无向图变成强连通图,最少需要加几条有向边。题目分析:所谓强连通,就是无向图中任意两点可互达。找出所有的边连通分量,每一个边连通分量都是强连通的,那么缩点得到bcc图,只需考虑在bcc图上加有向边。如果,bcc图是由v个孤立的点,0条边构成的,则最少需要添加v条(将v个点首... 阅读全文

posted @ 2015-10-30 21:52 20143605 阅读(379) 评论(0) 推荐(0)

UVA-11396 Claw Decomposition (二分图判定)
摘要:题目大意:给一张无向图,能否把它分成若干个“爪”,即,一个点有三个子节点。题目分析:每个点的度数3是已知的,只需判断一下是不是二分图即可。代码如下:# include# include# include# include# includeusing namespace std;# define RE... 阅读全文

posted @ 2015-10-30 14:45 20143605 阅读(169) 评论(0) 推荐(0)

UVA-10765 Doves and bombs (双连通分量)
摘要:题目大意:给一个n个点的无向连通图,找出删除某个点后的连通块个数。题目分析:统计一下每个节点属于几个双连通分量,若是割点,得到的便是答案,否则答案为1。代码如下:# include# include# include# include# include# includeusing namespace... 阅读全文

posted @ 2015-10-30 14:14 20143605 阅读(435) 评论(0) 推荐(0)

UVA-11865 Stream My Contest (朱-刘 算法+二分)
摘要:题目大意:有一张n个顶点,m条边的有向图,根节点为0。每条边有两个权值,一个是费用c,一个是长度b。问在总费用不超过cost的情况下选出若干条边,使得n个点连通时的边的最短长度的最大值是多少。题目分析:如果已知这个最短距离的最大值d,则问题就变成了:用长度不小于d的边能否构成一个总权值不大于cost... 阅读全文

posted @ 2015-10-27 22:18 20143605 阅读(363) 评论(0) 推荐(0)

POJ-3164 Command Network (最小树形图)
摘要:Command NetworkTime Limit: 1000MSMemory Limit: 131072KTotal Submissions: 14987Accepted: 4301DescriptionAfter a long lasting war on words, a war on arm... 阅读全文

posted @ 2015-10-26 21:04 20143605 阅读(388) 评论(0) 推荐(0)

UVALive-5713 Qin Shi Huang's National Road System (次小生成树)
摘要:题目大意:有n个城市,要修一些路使得任意两个城市都能连通。但是有人答应可以不计成本的帮你修一条路,为了使成本最低,你要慎重选择修哪一条路。假设其余的道路长度为B,那条别人帮忙修的道路两端城市中的总人口为B,要找一个使A/B最大的方案。题目分析:先求最小生成树,处理出MST中任意两点之间的最长边。因为... 阅读全文

posted @ 2015-10-26 15:46 20143605 阅读(379) 评论(0) 推荐(0)

UVA-11478 Halum (差分约束系统)
摘要:题目大意:一张n个节点的有向带边权图,每次操作能任选一个节点v个一个整数d,使以v为终点的边权值都减少d,以v为起点的边权值都增加d,求若干次操作后的最小边权值的非负最大值。题目分析:用sum[i]表示作用在节点i上的所有d之和,则对于边a->b,操作若干次后的权值为w(a,b)+sum[a]-su... 阅读全文

posted @ 2015-10-25 17:37 20143605 阅读(178) 评论(0) 推荐(0)

UVA-11090 Going in Cycle!! (平均值最大回路)
摘要:题目大意:一个n个点,m条无向边的图,求出平均权值最小的回路。题目分析:二分枚举平均值mid,只需判断是否存在平均值小于mid的回路,即判断是否有sum(wi)# include# include# include# include# includeusing namespace std;const... 阅读全文

posted @ 2015-10-25 15:28 20143605 阅读(287) 评论(0) 推荐(0)

UVA-10537 The Toll! Revisited (dijkstra)
摘要:题目大意:每经过一个地方就要交出相应的货物作为过路费,问将一批货物从起点运到终点,最少需要携带多少货物?题目分析:在每一站交的过路费由当前拥有的货物量来决定,所以,要以终点为源点,求一次单源最短路即可。注意,输出要求路径字典序最小。代码如下:# include# include# include# ... 阅读全文

posted @ 2015-10-25 13:50 20143605 阅读(292) 评论(0) 推荐(0)

UVA-10917 Walk Through the Forest (dijkstra+DP)
摘要:题目大意:n个点,m条边的无向图。一个人从起点到终点按照下面的走法:从A走向B当A到终点的最小距离比B到终点的最小距离大时。问从起点到终点有多少路径方案。题目分析:先用dijkstra预处理出终点到每个点的最短路,然后将满足行走条件的A、B(除行走条件外,还要满足一个前提,即A、B之间要有边)用一条... 阅读全文

posted @ 2015-10-23 20:43 20143605 阅读(155) 评论(0) 推荐(0)

UVA-11374 Airport Express (dijkstra+枚举)
摘要:题目大意:n个点,m条无向边,边权值为正,有k条特殊无向边,起止点和权值已知,求从起点到终点的边权值最小的路径,特殊边最多只能走一条。题目分析:用两次dijkstra求出起点到任何一个点的最小权值,任何一个点到终点的最小权值,枚举每一条特殊边,取最小的权值。代码如下:# include# inclu... 阅读全文

posted @ 2015-10-23 19:27 20143605 阅读(160) 评论(0) 推荐(0)

UVA-11294 Wedding (2-SAT)
摘要:题目大意:一张长桌,n对夫妻,编号为0~n,这些人要坐在长桌两侧,每对夫妻不能坐在同一侧。其中,有2*m个人相互讨厌,编号为0的夫妻中的妻子不愿意让对面那一侧中有两个相互吵过架的人,找一种排座位方案。题目分析:2-SAT问题。如果两个人吵过架,那就一定不能在同一侧,满足“只能取一个”的模型。不过如果... 阅读全文

posted @ 2015-10-23 12:17 20143605 阅读(351) 评论(0) 推荐(0)

UVALive-3713 Astronauts (2-SAT)
摘要:题目大意:有三个任务A、B、C,n个已知年龄的人。A任务只能被年龄不小于平均年龄的人做,B任务只能被平均年龄以下的人做,C任务不限,相互讨厌的两个人不能做同一件任务,现在已知厌恶关系,求一种任务分配方案。题目分析:每个人都有两个选择,对于年龄大的人,设选A为真,选C为假,对年龄小的人,设选B为真,选... 阅读全文

posted @ 2015-10-22 21:12 20143605 阅读(171) 评论(0) 推荐(0)

UVALive-3211 Now or later (2-SAT+二分)
摘要:题目大意:有n架飞机,每架飞机有两个可选择的着陆时间,并且每架飞机都必须要选一个时间着陆。为了安全考虑,要求两架飞机的最小着陆时间差最大,找出这个最大值。题目分析:有“最小值的最大值”这样的字眼,用二分。二分枚举这个最小时间差的最大值p,则问题变成了这样的:有n个只有两个元素的集合,每个元素代表一个... 阅读全文

posted @ 2015-10-22 19:48 20143605 阅读(252) 评论(0) 推荐(0)

UVA-11324 The Largest Clique (强连通+DP)
摘要:题目大意:在一张无向图中,最大的节点集使得集合内任意两个节点都能到达对方。题目分析:找出所有的强连通分量,将每一个分量视作大节点,则原图变成了一张DAG。将每个分量中的节点个数作为节点权值,题目便转化为了在DAG中找一条有最大权值和的路径,可以DP解决。代码如下:# include# include... 阅读全文

posted @ 2015-10-21 21:29 20143605 阅读(169) 评论(0) 推荐(0)

UVALive-4287 Proving Equivalences (有向图的强连通分量)
摘要:题目大意:有n个命题,已知其中的m个推导,要证明n个命题全部等价(等价具有传递性),最少还需要做出几次推导。题目分析:由已知的推导可以建一张无向图,则问题变成了最少需要增加几条边能使图变成强连通图。找出所有的强连通分量,将每一个连通分量视作一个大节点,则整张图变成了一张DAG。设出度为0的大节点个数... 阅读全文

posted @ 2015-10-21 19:15 20143605 阅读(285) 评论(0) 推荐(0)

UVALive-5135 Mining Your Own Business (无向图的双连通分量)
摘要:题目分析:在一张无向图中,将一些点涂上黑色,使得删掉图中任何一个点时,每个连通分量至少有一个黑点。问最少能涂几个黑点,并且在涂最少的情况下有几种方案。题目分析:显然,一定不能涂割点。对于每一个连通分量,如果有1个割点,则必须涂上分量内除割点之外的任意一个点,如果有多个(2个及以上)割点,则这个分量不... 阅读全文

posted @ 2015-10-21 12:06 20143605 阅读(265) 评论(0) 推荐(0)

UVALive-3523 Knights of the Round Table (双连通分量+二分图匹配)
摘要:题目大意:有n个骑士要在圆桌上开会,但是相互憎恶的两个骑士不能相邻,现在已知骑士们之间的憎恶关系,问有几个骑士一定不能参加会议。参会骑士至少有3个且有奇数个。题目分析:在可以相邻的骑士之间连一条无向边,构成一张图G。则问题变成了有几个节点不在奇圈(有奇数个节点的圈)内,并且一个点在圈内最多出现一次。... 阅读全文

posted @ 2015-10-20 22:28 20143605 阅读(254) 评论(0) 推荐(0)

LA-4255 Guess (拓扑排序+构造)
摘要:题目大意:一个未知的整数序列,给出其任意一个区间和的正负,还原这个序列。任意一个满足条件的序列即可。题目分析:将连续区间和转化为前缀和之差,sumx-1与sumy的大小关系已知,以此建立一条有向边,做拓扑排序。根据sum0=0,可以构造出所有的前缀和,再取两前缀和之差便得答案。代码如下:# incl... 阅读全文

posted @ 2015-10-19 22:28 20143605 阅读(498) 评论(0) 推荐(0)

UVA-10054 The Necklace (欧拉回路)
摘要:题目大意:有n个珠子,珠子两边的颜色已知,问能否连成一条项链。(两个珠子可以项链当且仅当一个珠子的一边颜色与另一个珠子的另一边颜色相同)。题目分析:欧拉回路。将颜色视作节点,珠子当做边,问题变成了找一条欧拉回路。欧拉回路存在的条件:无向图:1.图连通;2.无奇点; 有向图:1.忽略边的方向后,图连... 阅读全文

posted @ 2015-10-19 20:12 20143605 阅读(203) 评论(0) 推荐(0)

UVA-10047 The Monocycle (图的BFS遍历)
摘要:题目大意:一张图,问从起点到终点的最短时间是多少。方向转动也消耗时间。题目分析:图的广度优先遍历。。。代码如下:# include# include# include# include# includeusing namespace std;struct Node{ int x,y,f,l,t... 阅读全文

posted @ 2015-10-19 10:57 20143605 阅读(229) 评论(0) 推荐(0)

UVA-12661 Funny Car Racing (dijkstra)
摘要:题目大意:一张有向图,问从起点到终点的最快时间。不过边有点特殊,从u到v的边没开放a秒就关闭b秒。题目分析:dijkstra算法即可。在从u走到v的时候要注意一下时间。代码如下:# include# include# include# include# includeusing namespace ... 阅读全文

posted @ 2015-10-18 16:35 20143605 阅读(156) 评论(0) 推荐(0)

UVA-1312 Cricket Field (技巧枚举)
摘要:题目大意:在一个w*h的网格中,有n个点,找出一个最大的正方形,使得正方形内部没有点。题目分析:寻找正方形实质上等同于寻找矩形(只需令长宽同取较短的边长)。那么枚举出所有可能的长宽组合取最优答案即可,如何枚举长宽组合呢?通过两重循环枚举纵坐标来确定矩形的一条边长,枚举点的横坐标来完成对另一条边长的枚... 阅读全文

posted @ 2015-10-18 14:50 20143605 阅读(754) 评论(0) 推荐(0)

UVA-1611 Crane (构造)
摘要:题目大意:给一个1~n的序列,每次操作可以把长度为偶数的序列交换前一半和后一半的位置。求出将这个序列变成升序的步骤。题目分析:构造求解。代码如下:# include# include# include# include# includeusing namespace std;int a[10005]... 阅读全文

posted @ 2015-10-18 13:13 20143605 阅读(199) 评论(0) 推荐(0)

UVA-1615 Highway (贪心,区间选点)
摘要:题目大意:有一条沿x轴正方向,长为L的高速公路,n个村庄,要求修建最少的公路出口数目,使得每个村庄到出口的距离不大于D。题目分析:区间选点问题。在x轴上,到每个村庄距离为D的点有两个(超出范围除外),这两个点便构成了一个区间,这样的区间总共有n个。问题便转化为了,在n个区间中选取最少的点占据所有区间... 阅读全文

posted @ 2015-10-18 10:40 20143605 阅读(645) 评论(0) 推荐(0)

UVA-1623 Enter The Dragon (贪心)
摘要:题目大意:有n个装满水的湖,m天。每天可能下雨也可能晴天,只要下雨就会把湖填满,若已满,则发洪水。有一台只能在晴天使用的抽水机,每次抽水只能抽一个湖,并且全部抽光。问是否存在一种使得不发洪水的抽水方案。题目分析:贪心。贪心策略:对于每个下雨天 i ,让在这天之前的并且在第a[i]个湖上一次水满之后的... 阅读全文

posted @ 2015-10-16 15:57 20143605 阅读(271) 评论(0) 推荐(0)

UVA-1619 Feel Good (单调队列)
摘要:题目大意:给一个非负整数序列,求出一个使得区间和乘以区间最小值最大的区间。题目分析:单调队列。维护两个数组,l[i]表示以a[i]为最小值的左半区间的最左边端点,r[i]表示以a[i]为最小值的右半区间的最右边端点,l[i]和r[i]合起来便是以a[i]为最小值的整个区间。枚举一遍 i 即可。注意:... 阅读全文

posted @ 2015-10-14 21:19 20143605 阅读(269) 评论(0) 推荐(0)

UVA-11536 Smallest Sub-Array
摘要:题目大意:给出一个有n个数的序列,找出最短的涵盖1~k之间所有整数的连续区间。题目分析:扫描一遍序列,维护head、tail两个位置。要注意,最短的区间上两端的数一定[1,k]上。代码如下:# include# include# include# includeusing namespace std... 阅读全文

posted @ 2015-10-14 18:10 20143605 阅读(126) 评论(0) 推荐(0)

UVA-1617 Laptop (贪心)
摘要:题目大意:有n条长度为1的线段,n个区间,第i条线段在第i个区间中,问线段之间的最少间隙有几个。题目分析:先对区间排序,先按右端点排,再按左端点排。有重叠的区间(仅有交点重叠也视为重叠)之间一定可以摆不出空隙来。贪心策略:每碰到一个新的区间(与前面区间没有任何重叠),则把线段放到该区间最后一个长度为... 阅读全文

posted @ 2015-10-14 10:37 20143605 阅读(417) 评论(0) 推荐(0)

UVA-10570 Meeting with Aliens (枚举+贪心)
摘要:题目大意:将一个1~n的环形排列变成升序的,最少需要几次操作?每次操作可以交换任意两个数字。题目分析:枚举出1的位置。贪心策略:每次操作都保证至少一个数字交换到正确位置上。# include# include# include# includeusing namespace std;int a[20... 阅读全文

posted @ 2015-10-13 10:36 20143605 阅读(244) 评论(0) 推荐(0)

UVA-1153 Keep the Customer Satisfied (贪心)
摘要:题目大意:有n件工作,做每件工作的消耗时间为s,截止时间为d,问最多能做完几件工作。题目分析:贪心策略:优先做截止时间靠前的,一旦做不完当前工作,则从已经做过的工作中删去一件耗时最长的,用当前工作取代之。代码如下:# include# include# include# include# inclu... 阅读全文

posted @ 2015-10-12 21:08 20143605 阅读(132) 评论(0) 推荐(0)

UVA-1614 Hell on the Markets(贪心+推理) (有待补充)
摘要:题目大意:一个整数序列a,1≤a[i]≤i。问能否通过在一些元素前加上负号,使得整个序列和为0。题目分析:贪心。贪心策略:每次都先选最大的元素加负号(或保留,不加负号)。 贪心依据:对于1≤a[i]≤i,1~sum[i]总能表示出来。 贪心依据证明:用数学归纳法证明,当i=1时,显... 阅读全文

posted @ 2015-10-12 19:23 20143605 阅读(167) 评论(0) 推荐(0)

UVA-1613 K-Graph Oddity (着色问题)
摘要:题目大意:一张n个顶点、m条边的无向连通图,用k种颜色着色(相邻顶点颜色不能相同),其中k为不小于点的最大度数的最小奇数。题目分析:水题一道。建张图深搜一下就行了。# include# include# include# include# includeusing namespace std;str... 阅读全文

posted @ 2015-10-12 16:18 20143605 阅读(623) 评论(0) 推荐(0)

UVA-1612 Guess (贪心)
摘要:题目大意:考试共有三道题,n个人,每个人对每道题的可能得分已知,现在已知考后排名情况,问排名合不合理。题目分析:贪心。贪心策略:每处理一个排名,都让他的得分尽量高。# include# include# include# includeusing namespace std;const double... 阅读全文

posted @ 2015-10-12 15:21 20143605 阅读(177) 评论(0) 推荐(0)

UVA-11925 Generating Permutations (逆向思维)
摘要:题目大意:给出1~n的某个排列,问由升序变到这个排列最少需要几次操作。操作1:将头两个数交换;操作2:将头一个数移动最后一个位置。题目分析:反过来考虑,将这个排列变为升序排列,那么这个变化过程实际上就是冒泡排序的过程。将这个排列视为环形的,操作1为交换过程,操作2为查找逆序对的过程。那么,将升序排列... 阅读全文

posted @ 2015-10-12 14:13 20143605 阅读(617) 评论(0) 推荐(0)

UVA-11491 Erasing and Winning (单调队列)
摘要:题目大意:给一个数字(开头非0),拿掉其中的d个数字,使剩下的数字最大(前后顺序不能变)。题目分析:拿掉d个数字,还剩下n-d个数字。相当于从n个数字中按先后顺序选出n-d个数字使组成的数字最大,当然采用窗口滑动优先选取大的。代码如下:# include# include# include# inc... 阅读全文

posted @ 2015-10-12 11:13 20143605 阅读(154) 评论(0) 推荐(0)

UVA-12545 Bits Equalizer (贪心)
摘要:题目大意:两个等长的字符串p和q,p有‘0’,‘1’,‘?’组成,q由‘0’,‘1’组成。有三种操作:1.将‘?’变成0;2.将‘?’变成‘1’;3.交换同一字符串任意两个位置上的字符。问有p变到q最少需要几次操作。题目分析:贪心。贪心策略:若两个位置上的字符相同,则不用处理;能交换位置便交换位置,... 阅读全文

posted @ 2015-10-12 10:17 20143605 阅读(195) 评论(0) 推荐(0)

UVA-1610 Party Games (构造)
摘要:题目大意:给出一系列字符串,构造出一个字符串大于等于其中的一半,小于另一半。题目分析:取大小为中间的两个a,b(a# include# include# include# includeusing namespace std;string p[1001];string solve(int n){ ... 阅读全文

posted @ 2015-10-10 23:53 20143605 阅读(225) 评论(0) 推荐(0)

UVA-1149 Bin Packing (贪心)
摘要:题目大意:给定n个物品的重量,无限个容量为m的箱子,每个箱子最多装两个物品,要把所有的物品都装下,最少需要多少个箱子。题目分析:贪心策略:每次将最重和最轻的两个物品放到一个箱子里,如果装不下,则将最重的单独装到一个箱子里。代码如下:# include# include# include# inclu... 阅读全文

posted @ 2015-10-10 21:00 20143605 阅读(251) 评论(0) 推荐(0)

UVA-11903 Just Finish it up
摘要:题目大意:一个环形跑道上有n个加油站,每个加油站可加a[i]加仑油,走到下一站需要w[i]加仑油,初始油箱为空,问能否绕跑道一圈,起点任选,若有多个起点,找出编号最小的。题目分析:如果从1号加油站开始走,若跑不完一圈,意味着到了某个站p的最大油量走不到下一站,则以2~p为起点都不能跑完一圈。代码如下... 阅读全文

posted @ 2015-10-10 20:06 20143605 阅读(216) 评论(0) 推荐(0)

UVA-1152 4 Values whose Sum is 0 (二分)
摘要:题目大意:在4个都有n个元素的集合中,每个集合选出一个元素,使得4个数和为0。问有几种方案。题目分析:二分。任选两组求和,剩下两组求和,枚举第一组中每一个和sum,在第二组和中查找-sum的个数,累加起来便得答案。代码如下:# include# include# include# include# ... 阅读全文

posted @ 2015-10-10 11:55 20143605 阅读(242) 评论(0) 推荐(0)

UVA-1605 Building for UN (构造)
摘要:题目大意:n个国家的人要在一栋大厦里办公,要求任意两个国家的办公室要相邻(同层同边或邻层同面),设计一个满足要求的方案。题目分析:题目限制较少,任意构造出一个解即可。代码如下:# include# include# include# includeusing namespace std;int ma... 阅读全文

posted @ 2015-10-10 11:11 20143605 阅读(184) 评论(0) 推荐(0)

UVA-1572 Self-Assembly (图+拓扑排序)
摘要:题目大意:每条边上都有标号的正方形,两个正方形能通过相匹配的边连接起来,每种正方形都有无限多个。问能否无限延展下去。题目分析:将边视为点,正方形视为边,建立无向图,利用拓扑排序判断是图否为DAG。代码如下:# include# include# include# include# include# ... 阅读全文

posted @ 2015-10-09 21:43 20143605 阅读(459) 评论(0) 推荐(0)

UVA-12166 Equilibrium Mobile(二叉树)
摘要:题目大意:改变二叉树上的权值,使树平衡,问最少该几个值。题目分析:不会做,查的题解。有条奇妙的性质:如果将第d层权值为w的节点为基准做改动,则整棵树的总重量为w# include# include# include# includeusing namespace std;int cnt;string... 阅读全文

posted @ 2015-10-09 18:53 20143605 阅读(230) 评论(0) 推荐(0)

UVA-12118 Inspector's Dilemma (欧拉回路)
摘要:题目大意:一个有v个顶点的完全图,找一条经过m条指定边的最短路径。题目分析:当每条边仅经过一次时,路径最短。给出的边可能构成若干棵树。在一棵树中,奇点个数总为偶数,若一棵树的奇点个数为0,则这棵树可以构成欧拉回路,若不为0,则必有走不到的边(每条边仅经过一次,下同)。在一棵树中,设奇点个数为n,则走... 阅读全文

posted @ 2015-10-09 15:50 20143605 阅读(965) 评论(0) 推荐(0)

UVA-810 A Dicey Problem (BFS)
摘要:题目大意:滚骰子游戏,骰子的上面的点数跟方格中的数相同时或格子中的数是-1时能把格子滚过去,找一条从起点滚到起点的路径。题目大意:简单BFS,状态转移时细心一些即可。代码如下;# include# include# include# include# include# include# includ... 阅读全文

posted @ 2015-10-09 11:55 20143605 阅读(419) 评论(0) 推荐(0)

UVA-10410 Tree Reconstruction (树重建)
摘要:题目大意:给出对一棵树的BFS遍历序列和DFS遍历序列,求出每一个节点的子节点。题目分析:在BFS的序列中,子节点的下标一定比父节点的下标至少大1(根节点与第一个子节点除外),即pos[fa]+1# include# include# include# include# includeusing n... 阅读全文

posted @ 2015-10-07 20:50 20143605 阅读(635) 评论(0) 推荐(0)

UVA-127 "Accordian" Patience (模拟)
摘要:题目大意:一种纸牌游戏,将52张扑克牌排成一列,每次操作可将一张扑克牌移到它的前一张或前面第三张上当牌的点数或花色匹配时。每次都移动最靠左的扑克牌,并且能移动三格就移动三格。求最终扑克牌状态。题目分析:利用栈这种数据结构模拟,以为会超时,没想到AC了。代码如下:# include# include#... 阅读全文

posted @ 2015-10-07 17:02 20143605 阅读(160) 评论(0) 推荐(0)

UVA-806 Spatial Structures (四分树)
摘要:题目大意:将一块图像上的黑点在两种表示法之间转换。题目分析:递归下去。。。注意:输出时要注意细节!!!代码如下:# include# include# include# include# include# includeusing namespace std;char p[80][80];int a... 阅读全文

posted @ 2015-10-07 14:31 20143605 阅读(416) 评论(0) 推荐(0)

UVA-297 Quadtrees (四分树)
摘要:题目大意:求将两个以四分树形式给出的大方格合并后的小黑方格的个数。题目分析:比较简单的四分树。代码如下:# include# include# include# includeusing namespace std;char p[1000];int mark[35][35],ans;void dra... 阅读全文

posted @ 2015-10-07 11:40 20143605 阅读(178) 评论(0) 推荐(0)

UVA-673 Parentheses Balance(栈)
摘要:题目大意:给一个括号串,看是否匹配。题目分析:一开始用区间DP写的,超时了。。。注意:空串合法。代码如下:# include# include# include# include# includeusing namespace std;char p[130];stacks;bool judge(){... 阅读全文

posted @ 2015-10-07 09:55 20143605 阅读(128) 评论(0) 推荐(0)

UVA-536 Tree Recovery (二叉树遍历)
摘要:题目大意:给出对一棵二叉树先序遍历和中序遍历的顺序,找出后序遍历的顺序。题目分析:无非就是对字符串的输出顺序做个变化,递归就行了。代码如下:# include# include# include# include# includeusing namespace std;string p,q;int ... 阅读全文

posted @ 2015-10-06 23:49 20143605 阅读(174) 评论(0) 推荐(0)

UVA-10129 Play on Words (判断欧拉道路的存在性)
摘要:题目大意:给出一系列单词,当某个单词的首字母和前一个单词的尾字母相同,则这两个单词能链接起来。给出一系列单词,问是否能够连起来。题目分析:以单词的首尾字母为点,单词为边建立有向图,便是判断图中是否存在欧拉道路。有向图中存在欧拉路径的两个条件是:1、忽略边的方向性后,底图联通;2、奇点个数为0时、奇点... 阅读全文

posted @ 2015-10-06 20:08 20143605 阅读(252) 评论(0) 推荐(0)

UVA-10305 Ordering Tasks (拓扑排序)
摘要:题目大意:给出n个点,m条关系,按关系的从小到大排序。题目分析:拓扑排序的模板题,套模板。kahn算法:伪代码:Kahn算法:摘一段维基百科上关于Kahn算法的伪码描述: L← Empty list that will contain the sorted elementsS ← Set of al... 阅读全文

posted @ 2015-10-06 15:59 20143605 阅读(288) 评论(0) 推荐(0)

UVA-863 Not so Mobile (简单二叉树)
摘要:题目大意:给一个树状天平,判断是否平衡。树状天平是按递归给出的。题目分析:平衡的条件是子天平都平衡,并且w1*d1==w2*d2,其中w1和w2为子天平的总重量,d1和d2为力矩。代码如下:# include# include# include# includeusing namespace std... 阅读全文

posted @ 2015-10-06 11:43 20143605 阅读(188) 评论(0) 推荐(0)

UVA-12657 Boxes in a Line (双向链表)
摘要:题目大意:一个1~n的升序数字序列,有4种操作。操作1,将x放到y前面一个位置;操作2将x放到y后面的一个位置;操作3交换x和y的位置;操作4反转整个序列。求经过m次操作后的所有奇数项的和。题目分析:建立双向链表,每次操作只需修改链表中的元素指向。代码如下:# include# include# i... 阅读全文

posted @ 2015-10-06 10:29 20143605 阅读(1800) 评论(5) 推荐(0)

UVA-11988 Broken Keyboard (a.k.a. Beiju Text) (链表 或 递归)
摘要:题目大意:将一个字符串改变顺序后输出。遇到“[”就将后面内容拿到最前面输出,遇到“]”就将后面的内容拿到最后面输出。题目分析:用nxt[i]数组表示i后面的字符的下标,实际上就是以字符i为头建立链表,写法类似链式前向星。代码如下:# include# include# include# includ... 阅读全文

posted @ 2015-10-05 23:50 20143605 阅读(251) 评论(0) 推荐(0)

UVA-1604 Cubic Eight-Puzzle (双向BFS+状态压缩+限制搜索层数)
摘要:题目大意:立体的八数码问题,一次操作是滚动一次方块,问从初始状态到目标状态的最少滚动次数。题目分析:这道题已知初始状态和目标状态,且又状态数目庞大,适宜用双向BFS。每个小方块有6种状态,整个大方格有9*6^8个状态。每个小方块用一位6进制数表示即可。注意:状态转移时要谨慎,否则会出现意想不到的错误... 阅读全文

posted @ 2015-10-05 20:01 20143605 阅读(936) 评论(0) 推荐(0)