上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 32 下一页
摘要: 最小费用最大流2010的国赛题,题意很易懂不解释了。分析部分参考了别人博客:一般的最小费用最大流是给出每个单位流量的费用,计算费用的时候是单位费用*流量,但是这里是单位费用*流量*流量,并不能单纯地计算,要巧妙地拆容量,每条边的原容量为cap,拆成cap条,每条容量都是1,第一次取这条路时是单位费用a,第二次是3*a,依次为5*a,7*a,9*a,这样你会发现,这条路走容量2的话刚好是4a,3为9a,4为16a,5为25a,接下来做一最小费用最大流即可另外注意一点,题中说明边数最大为5000,而每条边的容量最大为5,所以在开数组的时候应该开到 2*5*50000,原来的一条边要拆成cap条边, 阅读全文
posted @ 2013-03-15 18:53 Titanium 阅读(544) 评论(0) 推荐(0) 编辑
摘要: 树状数组经典入门题,只要搜索数星星就能在各个OJ找到这个题目,不过不同OJ的输入和输出可能不同,但是题意是一样的,就是统计每个星星的等级入门题详细说一下。首先对输入的星星进行排序,先按x坐标升序排序,x坐标相同的按y坐标升序排序,这样做是后面能使用树状数组的根本保证。由于这题,输入数据中就已经保证了是按y坐标升序输入若y坐标相同则按x坐标升序输入,所以不需要排序,注意,两种排序方法是一样的。下面就按本题的来讲树状数组中是由原数组变化得到的,a是原数组,c是树状数组,并且数组是从下标1开始的,为什么从1开始是因为位运算和二进制的一些问题。在这里我们已经知道0<=x,y<=32000, 阅读全文
posted @ 2013-03-15 13:59 Titanium 阅读(504) 评论(0) 推荐(0) 编辑
摘要: 题目来源大部分是天津大学周伟的那篇论文《状态压缩》论文中主要介绍了几种模型,1.棋盘模型,2.覆盖模型,3.状态压缩在图论中的应用在看完论文后再做题更有好处这里给出的代码并不是最优的,事实上有些题目用状态压缩来做,时间上并不是很快,很多代码能完爆本菜的代码(不断更新)SGU 223 Little Kings棋盘类状态压缩poj 1185 炮兵布阵棋盘类状态压缩poj 2441 Arrange the Bulls图论上的状态压缩,本身是个匹配问题poj 2411 Mondriaan's Dream覆盖类状态压缩uva 11008 Antimatter Ray Clearcutting我做 阅读全文
posted @ 2013-03-14 22:24 Titanium 阅读(463) 评论(1) 推荐(0) 编辑
摘要: 状态压缩DP经典覆盖问题,输入n和m表示一个n*m的矩形,用1*2的方块进行覆盖,不能重叠,不能越出矩形边界,问完全覆盖完整个矩形有多少种不同的方案其中n和m均为奇数的话,矩形面积就是奇数,可知是不可能完全覆盖的。接着我们来看n*m为偶数的情况DP前先处理一下,交换n和m使n较大m较小,这样能减少状态数另外数据中是有重复的,所以开辟一个ans数组来记录每组数据的结果,如果遇到相同的数据则不要计算直接输出答案不用这个ans数组的话也不会超时,这个代码是跑出了950ms,加了这个记录答案的数组时间变为600ms接着就看注释部分的讲解即可/*最上面的为第1行,最下面为第n行从上到下按行DP其中一行的 阅读全文
posted @ 2013-03-14 22:08 Titanium 阅读(3984) 评论(0) 推荐(2) 编辑
摘要: 状态压缩DP多数也把这题分类在图论中,算是状态压缩在图论中的一个应用题意:有n只牛和m个场,下面n行给出每只牛喜欢去的场的个数,再给出每个场的编号(而且每只牛只能去他们喜欢的场)。然后要你安排好这些牛去他们喜欢的场,一个场只能有一只牛,问有多少种分配方案状态压缩,定义一个m位长的二进制数,从右到左依次代表第1,第2,第3个场,1表示这个场已经被占用,0表示没有。最后我们是要把n个牛都安排进去,那么这个二进制数将有n个1,这些就是我们要的目标状态。显然我们是按照牛的个数进行DP,先放第1只牛,再放第2只……最后放第n只。所以状态转移可以表示为 s'--->s , 其中s‘有k-1个 阅读全文
posted @ 2013-03-13 18:55 Titanium 阅读(333) 评论(0) 推荐(0) 编辑
摘要: 并查集选拔赛的题目。题意:如图所示是一些六边形的单元,一开始初始化所有的单元都是海洋,然后给你一个序列,就是一个单元坐标的序列。如果这个单元是个海洋,看能不能把它变成陆地,能变成陆地的条件是,如果它周围(也就是和它直接相连的那六个单元)已经是陆地,加入这块会使总陆地面积变大,但是面积有个限制值s,一块陆地的总面积不能超过s,如果加入这块不超过限制那么就加入,并且这个块海洋变成了陆地,如果超过了限制值那么这块单元要忽略,依然是海洋。如果是这块单元已经是陆地了,那么直接跳过。一整块陆地的总面积就是它拥有的单元数要你输出最后有多少块大陆地,每一块的面积是多少,面积按升序输出这里要注意,好像(1,1) 阅读全文
posted @ 2013-03-12 17:14 Titanium 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 暴力题选拔赛的题目当时想歪了也不敢下手做题意:三国杀,我方和敌方都有n人,会给出我方武将的全部名字。然后下面n行,第i行先输入一个m,后面跟着m个名字,表示敌方第i个武将能克制我方的这m个武将,没有列出名字的武将则会克制敌方的第i个武将。两方对战,一方武将死了下一位补上,直到一方武将全部死亡则该方输掉了游戏。问你是否能构建出一种无敌的出场方式,无论敌方怎么派出武将,我方都必将取得胜利,如果不能输出No,能的话,输出Yes,另外如果有多种无敌序列,要按名字字典序输出(是指单个单个名字比较,而不是把全部名字压成一个字符串再比较)由于数据规模很小n最大为6,所以其实是个水题,只要暴力枚举两方的全排列 阅读全文
posted @ 2013-03-11 14:51 Titanium 阅读(477) 评论(0) 推荐(0) 编辑
摘要: 动态规划(递推)选拔赛的题目,也是2012国赛的题目。题意:给n个节点,构建一棵树,使到同一层的节点所拥有的子节点数相等,问能构建出多少个这句话,“使到同一层的节点所拥有的子节点数相等”,并没有把话说得很白,但是细想就可以发现,这句话是等同于说,这棵树是对称,而且非常对称,甚至可以想象到,以树根为轴,把树劈成两份,两边是对称的,取其中一边,再以树根劈开,两边还是对称的(这样强的对称性才满足题目说的那句话)所以基于这点,我们可以想到,除开树根外,下面的子树(可能一棵子树,或者两棵,多棵),一定要完全相同的,为什么?哪怕每棵子树是对称的,但是子树与子树之间不同,那么都挂在树根上的时候,是不能满足 阅读全文
posted @ 2013-03-10 21:26 Titanium 阅读(827) 评论(0) 推荐(0) 编辑
摘要: 动态规划去年选拔赛的一个题目,题意就是给一个序列,要找出一个子序列,一增一减(第偶数个元素要比它前面的元素小,第奇数个元素要比它前面的元素大)算是比较基础的DP,属于"第i个元素与它前面i-1的元素形成的一种关系,最后变为前i个元素的信息"dp[i]表示加入第i个数字,与前i-1个数字能形成的最大长度,因此面对两个两个问题,第i个元素会不会加入到最终的最长子序列中,要加的话怎么加先看方程 dp[i]=max{ dp[j] } + 1; 若dp[j]为奇数,若想加入第i个元素,那么第i个元素将会是子序列中的第偶数个元素,那么还要满足a[i]<a[j]若dp[j]为偶数, 阅读全文
posted @ 2013-03-10 10:49 Titanium 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 最短路径选拔赛的题目,当时一看就觉得做过类似的,马上写了个DP,怎么都WA,一直WA到结束。后来才想起来是个图论,求最短路题意:给一个矩阵,T表示树,.表示沙,#表示路,都是可以走的,而且他们各自带有一个值,vt,vs,vp,走到这个点要算上他们带的值,@表示石头不能走。再给你起点的行列和终点的行列(行列都是从0开始标记的),每次你都可以往上下左右四个方向走,重复走回同一个点也行,问你从起点走到终点的花费最少,(其中,起点带的那个值不用算上)首先读入原始的矩阵,把他们的值都记好,石头不能走,可以把它的值赋值为无穷,也可标记为-1,等下不需要用到它(代码中是标记为-1)然后按行从左到右给所有点标 阅读全文
posted @ 2013-03-09 21:18 Titanium 阅读(312) 评论(0) 推荐(0) 编辑
上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 32 下一页