自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

@you!

天道酬勤

  • 博客(38)
  • 资源 (2)
  • 收藏
  • 关注

原创 Crazy Circuits (hdu 3157 流量有上下限的最小流)

题意:有两个正负极n个节点和m个元件,每个元件告诉端点是接在哪个节点上的,并且每个元件有工作的最小电流限制,问使所有元件工作的满足条件的最小电流是多少。思路:题目中已经有了源点S和汇点T,再添加附加源点SS和汇点TT,原图中的边的容量为INF(因为没有上限),若in[i]>0则SS向i连边容量为in[i],若in[i]<0则i向TT连边容量为-in[i],跑一次最大流,然后T向S连容量为INF的边,再跑一次最大流,判断SS的出边是否满流,若不满流则无解,否则有解输出边(T,S)的流量。另外这类题看这里详

2015-08-26 16:58:15 1198

原创 Instrction Arrangement (hdu 4109 差分约束)

题意:安排n个任务在CPU上工作,告诉m个限制,u,v,z表示v必须在u指令之后执行,并且u和v之间要间隔z秒,问把所有的任务完成最少时间为多少。思路:差分约束系统,由题意:dist[v]-dist[u]>=z,变形得:dist[u]<=dist[v]-z,根据这个建图v->u权为-z,源点到i权为0,i到汇点权为-1,然后求最短路,答案为 -dist[n+1].

2015-08-25 23:17:12 1056

原创 Columbus’s bargain (hdu 3268 最短路)

题意:n个物品,每个物品价值为pi,可以用一个玻璃珠和pi-1个金币换的,也可以由其他便宜的物品加上一定量的金币换得,相同价格的物品可以互换。问每个物品通过这样交换若干次后最少要花的金币数是多少。并且有多少物品的actual price等于其他两个物品actual price之和,注意每个物品如果有多个组合形式也只算作一种。

2015-08-25 22:51:59 741

原创 There is a war (hdu 2435 最小割+枚举)

题意:n个国家,m条有向边,国家1要去攻打国家n,n想切断1到n的道路来防御,切断每条道路有一定费用,国家1有一个NB魔法,可以建一条新边或者加固一条已有的边,这条边不能被n破坏,现在求 最大化n国花费之和的最小值。思路:可知就是求最小割边集,先建图,跑一遍最大流得ans,然后从S集到T集枚举割边使容量为INF,在残留网络中再跑网络流并记录最大值Max,那么最后答案就是ans+Max。在枚举的时候也可以直接重新建图,这样应该好理解一些。

2015-08-25 21:31:14 645

原创 A Dicey Problem (Uva 810 & poj 1872 bfs)

题意:n*m的地图,每个格子上有数字,骰子起始在(sx,sy),并告诉骰子上面的数字和正对你的数字,现在骰子在图上滚动,骰子能滚动当且仅当要滚到的格子上的数与滚之前骰子上面一面的数字相同或者为-1,问骰子是否能够滚一圈回到原点,输出路径,每9个一行。思路:骰子两个面就可以确定状态,开一个四维数组标记状态。注意以下代码死活在poj交C++过不了,G++可过,Uva也可过。写得很难看。。

2015-08-19 16:43:37 667

原创 Bloxorz I (poj 3322 水bfs)

题意就不具体说了,去这里玩一下就知道了戳我玩游戏,还是很好玩的~思路:Move函数写得很蛋疼,我是硬来的,一定要细心。

2015-08-19 09:46:31 1151

原创 Travelling Salesman Problem (hdu 5402 模拟)

题意:n*m的格子,每个格子上有权值,求从(1,1)走到(n,m)所经过的格子权值之和最大为多少,并输出路径。思路:直接贴上题解,但是想的和它一样,就是bug得蛋疼。首先如果nn为奇数或者mm为奇数,那么显然可以遍历整个棋盘。如果n,mn,m都为偶数,那么讲棋盘黑白染色,假设(1,1)(1,1)和(n,m)(n,m)都为黑色,那么这条路径中黑格个数比白格个数多11,而棋盘中黑白格子个数相同,所以必然有一个白格不会被经过,所以选择白格中权值最小的不经过。构造方法是这样,首先RRRRDLLLLD这样

2015-08-18 19:27:29 692

原创 Finding Nemo (poj 2049 超级蛋疼的bfs)

题意:二位坐标内告诉一些墙和门,儿子被困在里面,父亲在(0,0)处出发去救儿子,要求穿过的门数最少,输出最少门数。思路:我是把它转化成了平常的二维地图,先从(0,0)dfs走遍迷宫外的所有能到达的点并标记,然后从儿子所在地出发bfs,step记录穿过了多少扇门,当走到迷宫外遇到dfs访问过的点就表示出来了。今天做的几个poj上的题怎么都这么蛋疼,实在无语了,实际测试数据有大于199的!!!具体去看discuss吧,我也是看了里面的才过。。。

2015-08-17 21:25:36 843

原创 The Rotation Game (poj 2286 搜索IDA*)

题意:如图24个位置上有数字1~3,可以进行移动,每次对一条7个数进行平移,问怎样移动使得中心的8个方格为相同的数字,输出方案和最后中心的数字。思路:IDA*,有八个操作,主要是这个移动操作不好弄,开一个辅助数组记录移动的位置关系。每移动一次中心改变一个数,以此构造h()。

2015-08-17 19:17:59 842

原创 Pushing Boxes (poj 1475 嵌套bfs)

题意:推箱子游戏,把箱子B推到T,人初始在S,输出推箱子次数最少的方案。一开始把题目看错,以为是总步数最小,写完交了果断WA,看了discuss才知道。思路:对箱子bfs,箱子移动一步再对人相应的bfs。实在无力吐槽,方向数组顺序必须是北南西东,调了一个下午,坑爹啊!!

2015-08-17 16:28:22 1243

原创 Colour Hash (Uva 704 双向bfs)

题意:如上图,给出一个初始状态,问在16步之内能否转到终态,输出路径。思路:16太大,像这样知道初态和终态的可以使用双向bfs求解。

2015-08-16 19:18:29 727

原创 Ignatius and the Princess I (hdu 1026 优先队列+bfs+输出路径)

题意:给出n*m的地图,求从(0,0)走到(n-1,m-1)最短时间,方格上的数字表示杀怪所要的时间。思路:优先队列+bfs,输出路径的时候用一个path数组记录,path[i][j]=d表示(i,j)位置是由d方向过来的。

2015-08-16 19:09:00 969

原创 Shredding Company (hdu 1539 dfs)

题意:给一串数把他拆成若干份,使他们的和小于等于给定的goal,并且尽可能接近goal。思路:dfs暴力枚举,注意可能不止6位。

2015-08-16 19:02:54 1500

原创 The New Villa (Uva 321 bfs)

题意:有r个房间,一个人开始在1号房间并且1号房间灯亮着其他熄灭,现在要去r号房间,告诉d对房间之间有门,s个开关,每个房间i内开关控制的不是本房间的灯,而是另外一个房间j的灯,人每次可以开或关自己房间的开关,或移动到亮着的房间,不是亮着的不能进去,问最终到r号房间最少需要几个步骤,输出步骤。到r号房间后r号房间亮着其他熄灭。思路:把r个房间灯的状态用01串表示,1表示亮着,0表示熄灭,人当前在的房间为2,这样初始状态为2000000,终态为0000002,map判重,bfs即可。

2015-08-16 09:50:49 831

原创 Fill (Uva 10603 bfs 倒水问题)

题意:三个杯子容量分别为a,b,c,现在c是满的,a和b是空的,两个杯子 i 向 j 倒水,要么 i 倒完了 j 还没满,要么 j 满了 i 还有剩余,问达到某个杯子水量为d时总共倒得最小水量是多少?如果不能达到d,找一个小于d并且离d最近的一个解。思路:倒水问题,但题目要求的是总的到水量,所以在bfs时到达过的状态还要检查更新,可能当前我确实到达d了用了sum水量,但可能后面还有比sum更小的解。网上有很多代码都是错误的,很多就是错在这里。

2015-08-13 09:24:12 958

原创 Seven Puzzle (Aizu 0121 反向搜索bfs)

这段时间要转向搜索了,图论先缓一缓,但也不能完全放了,得带着刷图论。把峰峰博客上的搜索刷一遍。这一题具体看:点击打开链接

2015-08-12 19:00:50 830

原创 Segment Game (hdu 5372 树状数组+离散化)

题意:两种操作,添加线段和删除线段,第i次添加时告诉线段起点并且要添加长度为i的线段,删除第i次添加的线段,问每次添加后有多少线段是落在当前要画的线段内部的。思路:因为每次画的线段的长度是递增的,所以当前画的线段不可能被其他线段包含,那么统计小于左端点的点的个数x和小于等于右端点的点的个数y,ans=y-x。分别用树状数组维护,没写过树状数组了,都忘了,又复习了一下。

2015-08-12 10:57:14 729

原创 Mahjong tree (hdu 5379 dfs)

题意:一颗n个节点n-1条边的树,现在要给每个节点标号(1~n),要求:(1)每一层的兄弟节点的标号要是连续的(2)每一颗子树的所有节点标号是连续的。问有多少种标号方案。思路:对于每一层顶多只能存在2个非叶子节点,否则无解;对于每一层有x个叶子节点,y个非叶子节点,那么ans=(ans * x!)%mod,另外如果y!=0,还得ans=2*ans%mod。

2015-08-11 21:20:03 786

原创 E. President and Roads (CF Round #Pi (Div. 2)) 优先队列的Dij+Tarjan找桥

题意:n个点m条有向边,总统从起点s到终点t走最短路,问哪些边是一定会走的(输出YES),哪些边通过减少距离可以使它一定被经过(输出减少的距离),否则输出NO。思路:正反两遍求最短路,然后根据dist把那些最短路上的边重新建图,注意是无向图,然后用Tarjan求割边,最后每条边判断输出。居然卡SPFA,改成Dij就过了,以后就用Dij吧,恩。。

2015-08-11 10:20:45 814

原创 Get Luffy Out (poj 2723 二分+2-SAT)

题意:有N对钥匙,M扇门,每对钥匙要是用了其中一个另外一个就会马上消失,每扇门上有两把锁,只要打开其中一把锁门就打开了。开门顺序是输入的顺序,问最多能开几扇门。思路:因为是按遇到门的顺序开门,很自然想到二分门的数量mid,然后用2-SAT判断mid时候符合条件。对于每对钥匙a1和a2,a1->~a2(选了a1就不能选a2),a2->a1(选了a2就不能选a1),对于每扇门b1和b2,b1 OR b2=1,~b1->b2, ~b2->b1.

2015-08-10 21:47:47 874

原创 Map Labeler (poj 2296 二分+2-SAT)

题意:平面上有n个点,每个点画一个正方形并且该点要落在正方形上边或者下边的中间,问满足条件的最大正方形的边长是多少。思路:二分边长mid,建图用2-SAT作为判断条件。i表示画在上面,~i表示画在下面if|xi-xj|>=mid continue;else if |yi-yj|>=2*mid continue;else if |yi-yj|==0 then i->~j,~i->j,j->~i,~j->i;else if |yi-yj|>0 then ~i->i,j->~j;else |yi-y

2015-08-10 19:51:01 755

原创 Wedding (poj 3648 2-SAT 输出任意一组解)

题意:题目太绕了=-=有一对新人结婚,很多对夫妇参加婚礼,共n对。现在安排所有人坐在一张桌子两边,且(1)每对夫妇不能坐在同一侧(2)n对夫妇中有通奸关系(包括男男,男女,女女),有通奸关系的不能坐在新娘的对面。问是否存在可行的安排方案,若存在输出与新娘同侧的人。思路:注意新郎必须在另一边,所以就要加一条新娘到新郎的边以满足情况。

2015-08-10 16:57:34 947

原创 Katu Puzzle (poj 3678 2-SAT)

题意:n个点给出m个关系(AND,OR,XOR),问是否存在解。思路:2-SAT建图a AND b = 1: ~x->x,~y->y (两个数必须全为1)a AND b = 0: y->~x,x->~y (两个数至少有一个为0)a OR b = 1:~x->y,~y->x (两个数至少有一个为1)a OR b = 0: x->~x,y->~y (两个数必须全为0)a XOR b = 1:x->~y,y->~x,~y->x,~x->y (两个数必须不同)a XOR b = 0:x->y,y->x

2015-08-10 15:24:24 638

原创 Ikki's Story IV - Panda's Trick (poj 3207 2-SAT)

题意:有n个点在一个圆上,标号0~n-1,有m条线段告诉两个端点的标号,每条线段可以在画在圆内也可以画在圆外,问这m条线段能否不向交。思路:2-SAT模板题,把每条线段当做节点,每条线有两种状态(圆内和圆外,两者只能取其一),建图后求强连通,看 i 和 i‘ 是否在同一个连通分量,若在则无解,否则有解。参考:由对称性解2-SAT问题 还有 kuangbin神牛的总结点击打开链接

2015-08-10 13:39:47 739

原创 Cake (hdu 5355 构造+dfs)

题意:有n个蛋糕,大小分别为1~n,问是否可以将它们平分为m份,输出方案。思路:不能直接从后往前贪心,具体看这位大神博客,很详细点击打开链接 另外不知道4*m是怎么得到的不清楚,望知道的可以解答一下~

2015-08-09 20:35:27 836

原创 In Touch (hdu 5361 优先队列的Dij + 并查集优化)

题意:有n个点站成一排,相邻距离为1,每个点 i 可以联系上距离自己 x 的点并且花费Ci,其中Li<=x<=Ri,从点1开始,求联系到每个点的最少费用。思路:边太多,不可能建完边后再求最短路,感觉有点像隐式图,然后就是巧妙用到Dijstra,需要注意到的就是,这里是每个点有权值而不是边,那么dist[i]表示从1到 i 的花费再加上点 i 的花费,这样每个点就只会被更新一次,更新后在以后就不会再次被更新了,这里用到并查集把已经更新的点得father指向还没被更新的点。

2015-08-09 15:27:42 924

原创 Chapaev and Potatoes (URAL 1809 暴力)

题意:四个土豆在20*20的方格上,告诉起始位置,要求改变某些土豆的位置使得每个土豆只有一个土豆与他在同一行或同一列,要求改变的次数尽量小。

2015-08-09 15:12:00 685

原创 Pilot Work Experience (URAL 1888 并查集+floyd)

题意: 有n个航班,p个飞行员,每个航班要两个机长一起飞,一个机长一个副机长,现在每个机长的有一个经验值,并且正机长比副机长的经验值大1,现在不知道每个机长的经验值,只知道每个航班是那两个机长飞的,要求给每个机长规定一个经验值,并且尽量要最小值与最大值之差最大,输出任意一组解,若不存在解输出-1.思路:在训练赛过程中我的思路是最短路,如果存在可行解并且图是联通的,那么差值的最大值为最短路中的最大值,这个就很好处理了,求一遍floyd再求出mp[i][j]的最大值并记录下起点和终点,起点处的经验值为1,那其

2015-08-08 20:40:24 1036

原创 Desert King (poj 2728 最优比率生成树 0-1分数规划)

题意:将n个村庄连在一起,告诉每个村庄的三维坐标,村庄之间的距离为水平方向上的距离,花费为垂直方向上的高度差,求把村庄连接起来的最小的花费与长度之比为多少。思路:经典的01分数规划问题,参考这位大神的讲解应该就能明白了:http://www.cnblogs.com/Fatedayt/archive/2012/03/05/2380888.html

2015-08-08 14:47:55 762

原创 MZL's City (hdu 5352 最小费用流 ||二分图匹配)

题意:有n个城市m年前被地震摧毁,道路也被破坏了,m年间进行了一些城市和道路的重建,有三种操作:(1)1 u表示重建u或者与u直接相连或间接相连的城市;(2)2 u v表示在城市u和v之间建一条道路;(3)3表示发生地震破坏了哪些道路。每年最多重建K个城市,城市一旦重建就不会再被地震摧毁,问这m年后总共重建的城市数目最大为多少,并按照字典序输出每年建造的城市数目。思路:起初只知道要倒着来,具体怎么弄没想出来,看了题解是用二分图匹配,这是我第一次遇到把操作当做节点的,太弱,还是题目做少了=-=。但感

2015-08-07 10:34:40 905

原创 Hawk-and-Chicken (hdu 3639 强连通缩点+反向建图DFS)

题意:n个人投票,告诉投票关系问哪些人的票数最多,票可以传递,比如A投给B,B得一票,B又投给C,那么C得两票。思路:先强连通缩点,在同一个连通分量里的传递出去的票数为连通分量内点的个数-1(自己不算),缩点后重新建图,这个时候需要反向建图,这样入度为零的点票数才可能最大,可以dfs解决,求最大值。

2015-08-05 14:53:36 1120

原创 Arbitrage (Uva 104 dp+floyd)

这一题不是很会,参考了别人的,以后多来看看。参考:http://www.cnblogs.com/scau20110726/archive/2012/12/26/2834674.html写的很好。

2015-08-04 21:32:11 442

原创 Numbering Paths (Uva 125 floyd+dp思想)

题意:给出一张图,求每两个点之间的不同路径的条数,按照矩阵输出,若i到j有无数条则mp[i][j]=-1.思路:关键是怎样判断无数条,考虑:若一个点经过一条路可以回来,即mp[i][i]>0,那么它就构成了一个环,我可以在这一无限的绕圈,知道这个了就好办了。另外一条路径经过这个点的话也是无数条。

2015-08-04 21:27:47 551

原创 CVS (URAL 1992 可持久化的链表)

题意:开始有1个克隆人,现在有5种操作,learn ci pi指让ci克隆人学会技能pi,rollback ci指删除ci克隆人学会的最近一个技能并记下删除记录,relearn ci指让ci克隆人重新学习之前删除的技能,clone ci指再克隆一个ci,check ci指输出ci克隆人当前最近学的技能。思路:关键是在clone的时候需要有好的方法,如果直接重新复制那肯定复杂度太大会T,然后就上网学习了一下别人链表的做法,这里我用的链式向前星。head所维护的链表用来记录克隆人已经学会的技能,head2用来

2015-08-03 21:36:27 1204

原创 Illegal spices (URAL 1995 YY构造)

题意:n个袋子,现在扔掉n-k个最后留下k个,怎么扔?首先第一个必须要扔;然后对于后面的第i个,统计前i-1个中比第i个重量轻的个数cnt,若cnt所占的比例即cnt/(i-1)>=p则这个袋子不扔。现在告诉起始有n个袋子最后剩下k个,让你构造n个袋子的重量使得总重量最小。思路:首先第一个肯定是1,而后对于第i个,想让cnt/(i-1)尽量大就要想办法让cnt尽量大,那么就可以让前n-k个全为1,这是最优的,后面再依据前面的选数。

2015-08-03 19:09:54 577

原创 The King’s Problem (hdu 3861 强连通缩点+最小路径覆盖)

题意:n个城市m条有向边,把这些城市分成若干个州,分的原则是(1)u和v可以互相到达的话他们两个必须在同一个州(2)同一个州里任意两个城市u和v要满足u可以到达v或者v可以到达u。问州的最小个数是多少。思路:先用Tarjan算法进行缩点,在缩点后的图上进行二分图匹配,最后求得最小路径覆盖=强连通个数-最大匹配数。可以看一下:http://blog.csdn.net/hellobabygogo3/article/details/7900812http://www.cnblogs.com/ka20081

2015-08-02 11:02:54 1004

原创 Rings'n'Ropes (Uva 10985 floyd+枚举)

题意:n个环m条绳子,问挑两个环拉直后最多有多少条绳子绷直。主要思想就是暴力枚举。

2015-08-01 11:01:11 415

原创 Crimewave (Uva 563 最大流拆点)

题意:b个银行被抢,罪犯制定逃跑路线,要求路上上的点和边不重合,问是否存在可行方案。图的边界就是表示逃出去了。思路:拆点,容量为1,每个点向四周相邻的点连边,容量为1,判断是否满流。

2015-08-01 09:28:42 721

数据结构课程设计通讯录管理系统

实验要求: 1、设计合适的数据结构存储朋友、分组信息,将以上文件内容导入其中(如果你觉得以上文件中的信息不合适,可以自行处理,删除某列、增加属性、规范化数据均可,如果你认为有必要,甚至去掉“编号”都可以)。 2、进行插入、删除、修改和查询操作。 考查点: 插入时注意编号的处理,可以不填吗?是否重复?是否可以自动编号?其他数据是否可以不填或乱填?如何控制? 删除时一要防止误操作,二要考虑分组信息的删除,如何处理? 修改时同样要考虑各数据项的性质。 查询操作包括按姓名查找、按拼音查找、按电话查找等。 3、为了便于查询,可以考虑采用索引表、散列,参考教材第一章绪论中的第一个例子:书目检索问题,也可以考虑将课堂所学的第9章查找、第10章排序加入到系统中。 4、综合查询 综合查询要求可以实现多条件查询,例如查询所有在北京的高中同学、在武汉的男性朋友等, 类似于筛选,越灵活越好,发挥你们的想象,自行设计。 5、最后把系统中的数据(包括主文件和索引表等)保存回相应的文件中。

2015-09-11

数值计算实验代码

包含了数值计算课程内的部分算法的源代码,包括Crout分解,Doolittle分解,Lagrange插值法,Newton插值法,Romberg算法,二分,复化梯形积分法,顺序高斯消元,列选主元高斯消元,全选主元高斯消元,数据拟合的最小二乘法,正定矩阵分解。

2015-09-11

空空如也

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

TA关注的人

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