自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 POJ-1984 Navigation Nightmare

题目链接:Navigation Nightmare题目大意:按照时间顺序给一些点的相对位置。有若干询问,每个询问给出两个点的编号以及时间,若在此时间内该两点相对位置确定则输出其曼哈顿距离,否则输出-1。解题思路:很好的一道带权并查集问题,由于询问中的时间条件我纠结了很久,最后参考网上代码,按照询问的时间顺序来合并点并保存答案就行了。注意在更新相对位置的时候最好自己画一下图。代码如下:#include

2015-09-15 22:05:59 605

原创 HDU-3338 Kakuro Extension

题目链接:Kakuro Extension题目大意:黑色方块中左下角的数字代表这个方块以下的的白色方块的和必须达到的值,黑色方块中右上角的数字代表这个方块以右的白色方块的和必须达到的值。解题思路:由于行和列的限制,很容易想到网络流。将源点和所有右上角有值的方块相连,将汇点和所有左下角有值的方块相连,权值为当前值减去右(下)方白色方块的个数;将数字所作用范围的白色方块与黑色方块相连,权值为8。由于每个

2015-09-10 15:40:25 374

原创 Uva-536 Tree Recovery

题目链接:Tree Recovery题目大意:已知一棵树的先序遍历和中序遍历顺序,求它的后序遍历顺序。解题思路:关键在于找到父结点的位置,然后递归建树即可。代码如下:#include <map>#include <stack>#include <queue>#include <cstdio>#include <vector>#include <sstream>#include <cstd

2015-09-10 01:01:13 295

原创 Uva-12118 Inspector's Dilemma

题目链接:Inspector’s Dilemma题目大意:有完全图,给出E条必经的边,起点终点任选,经过每条边的代价一样,求最小代价。解题思路:这道题可以转化成添加最少的边使最后的路径成为欧拉道路的问题,对于每个连通分量,如果奇度点大于2个则需要加边,两个连通分量之间也需要加边,求联通分量里点集的度数既可以用DFS也可以用BFS。代码如下:#include <set>#include <stack

2015-09-10 00:50:35 440

原创 Uva-10410 Tree Reconstruction

题目链接:Tree Reconstruction题目大意:给定一棵树的DFS序和BFS序,求这棵树。解题思路:先跑一遍BFS,并将每个节点映射成BFS序,由于BFS的特性,其序号越大,离根结点的距离相等或更远。接着遍历DFS序,并用栈维护结点之间的关系,若当前序号比栈顶元素大,则该结点为孩子结点,否则pop掉栈顶元素继续与下一个元素比较。由于只告诉BFS和DFS序所建立的树并不唯一,所以我们强制认为

2015-09-10 00:35:15 492

原创 Uva-12166 Equilibrium Mobile

题目链接:Equilibrium Mobile题目大意:给一个树形结构的天平,求能使整个天平平衡的最少的对砝码的更换次数。解题思路:要使天平平衡最后情况一定是以某个砝码作为基准。枚举砝码,并记录不改变该砝码使天平平衡的情况下,天平的总权值。最后将所有砝码的数量减去最大次数的最终状态的值,即为最小的修改数。代码如下:#include <map>#include <set>#include <sta

2015-09-10 00:16:44 370

原创 Uva-1347 Power Calculus

题目链接:Power Calculus题目大意:给出n,求最少多少次乘除操作使xx变成xnx^n,每次操作只能取不大于自己指数的元素。解题思路:由于不知道最后的深度是多少,直接上DFS一定会超时,所以改用迭代加深搜索,在搜索过程中注意剪枝。代码如下:#include <map>#include <set>#include <queue>#include <stack>#include <cs

2015-09-09 20:31:42 902

原创 HDU-3081 Marriage Match II

题目链接:Marriage Match II题目大意:有2n个人,n个女孩,n个男孩,女孩有自己心仪的对象,在女孩中有f对朋友,朋友之间心仪的对象是可以传递的,求最多可以匹配多少次。解题思路: 这道题要用到并查集网络流和二分搜索。首先不要急于先建边,现将关系储存下来,接着用并查集处理朋友关系,然后二分搜索答案。在二分搜索的时候建图,将源点和女孩相连,权值为二分的答案(mid),将男孩和汇点相连权值为

2015-09-09 20:05:50 319

原创 Uva-10480 Sabotage

题目链接:Sabotage题目大意:求s与t点之间消除哪些边使s与t不相连且所删除的边的权值和最小。解题思路:这道题其实是求最小割的边集,由于最小割等于最大流,所以跑一遍Dinic就可以得到最小权值和,但是如何求最小割的边集呢?我们把最后的残余网络找到,会发现那些最小权值且能使s与t联通的边权已经变为了0,那么我们就可以把与s点相连且相连边的权不为零的点集找到,再把这些点相连的且边权为零的边找到,即

2015-09-09 20:03:15 340

原创 HDU-2732 Leapin's Lizards

题目链接:Leapin’s Lizards题目大意:有若干蜥蜴要逃离所给的矩阵,矩阵上有若干柱子。蜥蜴只能从有柱子的地方开始跳跃,只能跳跃到其他柱子上或界外。柱子有自己的耐久度,每跳一次耐久度就会减1,耐久度为0的时候就不能再跳了。求最后有多少蜥蜴不能逃离矩阵。解题思路:由于有耐久度的设定,这道题可以用最大流来解决。将源点和所以蜥蜴人所在的位置建边,权值为1;将互相可以抵达的柱子间建边,权值为正无穷

2015-09-09 19:59:48 385

原创 HDU-4289 Control

题目链接:Control题目大意:给出s和t点,求在图中找出最少的点集,使s和t不联通。解题思路:拆点,把每个点变成一条边,权值为此点的花费,不同点之间若相连,则权值为正无穷。最后跑一遍最大流就能得到解了。代码如下:#include <map>#include <set>#include <cmath>#include <queue>#include <stack>#include <cs

2015-09-08 00:50:42 371

原创 Uva-10817 Headmaster's Headache

题目链接:Headmaster’s Headache题目大意:有S门课,M个在岗的老师,N和应聘者,求每门课都至少有两个老师教的最少花费是多少。解题思路:课程总数小于8果断用状压DP,DP数组第一维存老师的编号,第二维存有且仅有一个老师讲的课程的集合,最后一维存至少有两个老师讲课的课程的集合。这道题推荐用记忆化搜索。代码如下:#include <map>#include <set>#includ

2015-09-07 23:24:19 383

原创 Uva-1218 Perfect Service

题目链接:Perfect Service题目大意:给一颗树,对其进行染色,使未染色的结点恰好和一个染色的结点相连,求符合题意的最少的染色数。解题思路:此题的难点在于dp数组的第二维存储的并不是此结点是否染色,而是当前节点和子结点的关系,关系分为3种: 1.子结点染色 2.父结点染色,子结点不染色 3.子结点父结点均不染色代码如下:#include <map>#include <s

2015-09-07 23:09:02 348

原创 Uva-1220 Party at Hali-Bula

题目链接:Party at Hali-Bula题目大意:给一棵树,父节点和其子结点不能同时染色,问最多可以选取多少个结点染色,如果解唯一则输出Yes否则输出No。解题思路:树形DP,dp[i][0]表示标号为i的节点不染色的最大选取值,dp[i][1]则是染色时的情况。更新的时候再判断一下唯一性: 1.dp[v][0] == dp[v][1]子节点是否染色都一样,则dp[u][0]不唯一。

2015-09-07 22:45:30 358

原创 POJ-2516 Minimum Cost

题目链接:Minimum Cost题目大意:有k种流通的物品,有n家店,m个供货商,每家店有k种物品的需求量,每个供货商也有k种物品的供应量,还有k个矩阵,第i行j列表示第j个供应商给第i个店第k种物品的费用。解题思路:此题的关键思路在于将k个物品分开,每次选取一个物品做一次费用流。源点与供应商相连,容量为供应量,费用为0;汇点与店家相连,容量为需求量,费用为0;供应商与店家根据费用矩阵相连,容量为

2015-09-07 11:36:28 449

原创 Uva-12589 Learning Vector

题目链接:Learning Vector题目大意:给N个向量,选取K个,使得这些向量与x轴和最右侧的直线围成的封闭区间面积最大。解题思路:一开始没有排序就DP没有过,后听菊苣按照斜率排序就A了。后来想了一下这样做是为了避免后效性,或者说在选N个的情况下按斜率排序才是最优解,在前提的最优解下DP才能找到最终的最优解。#include <map>#include <set>#include <cma

2015-09-06 22:09:13 457

原创 HDU-4939 Stupid Tower Defense

题目链接:Stupid Tower Defense 题目大意:一条长度为n的道路,有敌人从道路右端袭来,敌人有自己的速度,你的任务是尽可能多得使敌人受到伤害。红塔是直接每秒造成x点伤害,绿塔是经过它之后每秒造成y点伤害(可叠加),蓝塔是经过它之后每走一个单位的道路需要增加z秒(可叠加)。 解题思路:直接DP的话会超时,于是我们用一个贪心的思路来做这道题,如果在前面的道路放蓝塔或绿塔(或全部不放)

2015-09-06 21:56:12 336

原创 POJ-2195 Going Home

题目链接:Going Home 题目大意:在NxM的地图中,存在相同数量的人和房子,一个人对应一个房子,一个人到一个房子的花费为他们的曼哈顿距离,求一一配对的情况下的最小花费。 解题思路:这是一道很裸的费用流,源点和所有人相连,汇点和所有房子相连,所有人与所有房子相连,最后跑一遍费用流模板就行了。代码如下:#include <map>#include <set>#include <cmath

2015-09-06 21:41:26 322

原创 POJ-1087 A Plug for UNIX

题目链接:A Plug for UNIX 题目大意:有n个插座,m个电器,每个电器有自己的名字和插头类型,还有k种转换器,每种转换器可以有无限个,转换器可以接转换器,问最少有多少电器不能插上插座。 解题思路:源点与电器,电器与插头建边,转换器输入接口与输出插头建边,插座与汇点建边,最后跑一遍dinic就行了。代码如下:#include <map>#include <set>#include

2015-09-05 22:56:34 371

原创 Uva-11526 H(n)

题目链接:H(n) 题目大意:输入任意数字,输出H(n)的结果,H(n)函数如下long long H(int n){ long long res = 0; for( int i = 1; i <= n; i=i+1 ){ res = (res + n/i); } return res;}解题思路:由于极限数据为2e9,如果直接运算的话肯定会超时,

2015-09-05 20:53:47 416

原创 Uva-1210 Sum of Consecutive Prime Numbers

题目链接:Sum of Consecutive Prime Numbers 题目大意:输入一个数,求有多少种连续的素数和可以组成这个数。 解题思路:用筛法对素数打个表,然后用尺取法就行了。代码如下:#include <map>#include <set>#include <cmath>#include <queue>#include <stack>#include <cstdio>#

2015-09-05 16:08:56 685

原创 POJ-3281 Dining

题目链接:Dining 题目大意:N头牛,F个食物,D瓶饮料,每头牛有各自的喜好,问最多使多少头牛既吃到自己喜欢的食物又喝到自己喜欢的饮料。 解题思路:一开始想到的是二分最大匹配,但发现无法在匹配了牛和食物的情况下继续匹配牛和饮料。后来想到直接用网络流的方法,把一头牛拆成两个点,自身与自身相连容量为1就好了。代码如下:#include <map>#include <set>#include

2015-09-05 15:41:22 336

原创 UVA-10129 Play on Words

题目链接: Play on Words

2015-07-24 19:29:53 358

原创 UVA-101 The Blocks Problem

题目链接: The Blocks Problem题目大意: 有n个积木(编号0到n-1),分别在编号对应位置,有以下四种操作: 1.move a onto b // 将a和b上方的积木归位(回到对应编号位置),并将a放在b上 2.move a over b // 将a上方的积木归位,并将a放在b所在积木堆的最上方 3.pile a onto b // 将b上方的积木归位,并将a及上方

2015-07-20 23:00:32 348

原创 UVA-512 Spreadsheet Tracking

题目链接:Spreadsheet Tracking题目大意:模拟Excel,进行插入(删除)行、列以及寻找原始数据在最终表格的位置。解题思路:由于要进行插入和删除的操作,用二维数组的话实现非常麻烦,所以直接用vector套vector就方便多了,vector容器中的erase和insert方法用起来不能再爽。在插入和删除操作时注意优先操作行(列)大的。代码如下:#include <map>#inc

2015-07-20 22:33:28 588

原创 POJ-3748 位操作

题目链接:http://poj.org/problem?id=3748解题思路:一开始想到是的模拟,字符串到二进制再到十六进制,然后直接GG。看了TT的代码之后发现了新的黑科技,%x直接传入的就是整数的十六进制形式,最后左移右移一下再用%x输出就行了。代码如下:#include <cstdio>#include <cstdlib>#include <cstring>#include <iost

2015-07-17 22:38:03 373

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除