上一页 1 ··· 4 5 6 7 8 9 10 11 12 下一页
摘要: 题意:给出一些部件和他们单个在不同CPU里工作时需要的消耗值以及在两个不同CPU里工作的部件共同工作时的消耗值..问怎么分配可以使总的消耗值最少..输入: n m 表示有n个部件 m个工作连通消耗值 接下来n行每行给出 a b 表示在第一台CPU消耗a 在第二台CPU消耗b 然后m行给出a b w 表示a部件和b部件在不同的机子连通工作需要消耗w..输出: 最少总消耗思路: 最大流 = 最小割Tips: 加入边的时候应该同时加入反向边 还有因为多加了超级源点和超级汇点 所以边也增多了~ 要相应增加边的条数..Code:View Code 1 #include <st... 阅读全文
posted @ 2012-09-29 21:05 Griselda. 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 题意:给出一个图 该图的每个格子上有值当扫射一行或一列的时候 格子上的值非0的就-1输入: 给出n m 表示该图为n*m的图 接下来n*m的图写上格子的值输出: 最少扫射几次可以使所有点权变成0思路: 假使行为Ui 边为Vi 则题目可以看成求 Ui+Vj>=Wij 把边看成点 把点看成边 所以用最小点权匹配.. 因为n 和 m是不一定的~所以把该二分图补点..<所谓补点....就是....v = max(n, m)>Tips: 最小点权覆盖 = 最大边权匹配 如果要求最大点权覆盖 则把图变为负值 然后求总值的时候该res -= G[link[i]][i];Code:Vie.. 阅读全文
posted @ 2012-09-29 11:25 Griselda. 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 题意:有 n 个房子和 n 个人每个人走一个单元你就要付 1$有什么办法可以让把所有人都分派到房子里 而花费最少输入: 给出n m 表示该矩阵由n 行 m 列组成 然后给出一个n*m的图 . 表示空地 H 表示房子 m 表示人思路:二分图最佳匹配<有权还要完全匹配>Tips:建图很有趣~Code:View Code 1 #include <stdio.h> 2 #include <cstring> 3 #include <cmath> 4 #define M 110 5 #define inf 0x1f1f1f1f 6 7 struct Node 阅读全文
posted @ 2012-09-28 08:06 Griselda. 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 题意:某A有一个剑 坚韧度为m他可以用这个剑去攻打别的队伍杀掉第 i 个队伍需要消耗的坚韧度为 Ai 并可以用得到的剑去打别的队(Bi个)但是打完别的队这个剑就不能用了问怎么用最少的坚韧度击败最多的队伍给出T组样例每个样例给出n m n表示有n个队接下来n行给出Ai Bi 表示杀掉这个队需要消耗的坚韧度和杀掉这个队可以得到的剑可以杀的队伍数输出可以杀掉的最多的队和最少花费的坚韧度思路:可以想到的就是 杀掉一个bi != 0理论上就可以杀掉所有 bi != 0 的队伍×××××错的思路..把bi != 0 和 bi == 0分成两组先用把一个bi 阅读全文
posted @ 2012-09-26 19:29 Griselda. 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 题意:已知一些小孩所拥有的信息和他最多共享信息量和最少共享信息量 问其中某一个小孩最多得到的信息量给出n表示有n个小孩接下来n行有 a b c a1 a2 a3 a4 ... ai 表示该小孩有信息a条 最少共享 b 条 最多共享 c 条 其中a1 a2 a3~ai为小孩拥有信息id号给出一个m 问的是小孩m最多得到的信息量思路:鉴于这道题中信息id号从 0 ~ 200 但是每个小孩最初最多知道10条信息..所以为了防止遍历的时候太浪费时间 应该把题目id号变成连续的..然后可以用多重匹配或者最大流来做..Tips:多重匹配的建图方法:以信息为 集合X 孩子为 集合Y然后 limit 为 Y. 阅读全文
posted @ 2012-09-21 20:28 Griselda. 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 题意:给出一个不等式a1x13+ a2x23+ a3x33+ a4x43+ a5x53=0问满足方程的 x1 x2 x3 x4 x5有多少个可能取值输入a1 a2 a3 a4 a5 输出可能取值思路:如果暴力 那么就是 100^5了~肯定会超时所以..其实想要等式成立..则a3x33+ a4x43+ a5x53 = -(a1x13+ a2x23)可以先求出等式左边的值 再看看是否存在等式右边的值但是因为 x 取值为-50~50 不包括0所以如果直接用数组下标对应x^3 然后用数组记录出现次数 那是不可能的就可以用hash来完成了这道题主要是用来练习hash表的..然后还可以用离散化处理.... 阅读全文
posted @ 2012-09-19 23:59 Griselda. 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 题意:n个人说自己前面有多少人 后面有多少人求出说真话人数最多的情况每个样例有 一个 n 表示n个人接下来 n 行有a b 表示他前面的人数和后面的人数思路:如果已经知道了其中一组的人数~就往前找..找在这一组之前与这一组的话不矛盾的最多人数Tips:用dp[ i ][ j ] 表示从第 i+1 个人到第 j 个人为一组的时候前j个人中说真话最多的人用tt[ i ][ j ] 表示从第 i 个人到第 j 个人之间站了多少人用an[ i ]表示到第 i 个人前面说真话的人最多人数tt[ a ][ b ]的人数不应该多于n-(b-a+1)Code:View Code 1 #include < 阅读全文
posted @ 2012-09-18 23:54 Griselda. 阅读(516) 评论(0) 推荐(1) 编辑
摘要: 题意:给出 n 个人喜欢吃的食物和喜欢喝的饮料以及每种食物和饮料的数量如果这个人可以吃到喜欢的食物则会感到高兴问最多可以使多少人高兴给出 n f d 表示现在有 n 个人 f 种食物还有d种饮料接下去一行有 f 个数表示第 i 种食物的数量接下去一行有 d 个数表示第 i 种饮料的数量然后n行有f个数 Y表示喜欢第 i 种食物 N表示不喜欢然后n行有d个数 Y N 意思一样求出最多高兴的人数思路:建图求最大流..就是把食物当成超级源点 饮料当成超级汇点然后超级源点与每个人之间有连线 容量为食物的数量超级汇点和每个人之间也有连线 容量为饮料的数量然后根据每个人喜欢哪种食物或者是哪种饮料来连线因为 阅读全文
posted @ 2012-09-18 20:18 Griselda. 阅读(364) 评论(0) 推荐(0) 编辑
摘要: 题意:给出 n 个木板的重量值和长度 然后每个木板的PDV = 压在他上面的木板的重量值之和-该木板的长度值求所有木板中PDV值最大的最小给出一个 n 表示木板的数量接下来 n 行表示每块木板的重量值和长度值求PDV最大的最小思路:按最优方法排序 然后求最大值Tips:①如果排序为 a b 则a的PDV = sum-sb b的PDV = sum+wa-sb②如果排序为 b a 则b的PDV = sum-sa a的PDV = sum+wb-sa要想第一种方法要想最大值的PDV < 第二种方法最大值则 wa+sa < wb+sb所以排序然后找这种最优方法中的最大值Code:View C 阅读全文
posted @ 2012-09-17 20:55 Griselda. 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 题意:给出每个人适合住的星球信息和该星球能住多少人第一行给出n m 代表有 n 个人 m 个星球然后接下来n行每行m个数字 1代表适合第 i 个星球 0 代表不适合第 i 个星球最后一行m个数表示第 i 个星球最多可以住多少个人问是不是所有人都可以住到星球上思路:多重匹配Tips:多重匹配即 X 集合上的点对应 Y 集合上多个点 而 Y 集合上的点对应 X 中的一个点Code:View Code 1 #include <stdio.h> 2 #include <cstring> 3 #define clr(x) memset(x, 0, sizeof(x)) 4 con 阅读全文
posted @ 2012-09-17 20:24 Griselda. 阅读(612) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 下一页