上一页 1 ··· 5 6 7 8 9 10 11 12 下一页
摘要: 题意:已知s.b原来有多少钱 in以及知道 m 个去他想去的城市工作需要用多少钱以及能挣到多少钱 然后知道他从 a 城市到 b 城市得花多少钱.. 问他能不能去完他想去的城市??给出一个 T 表示样例个数接下来每个样例给出一个 n m in表示有 n 个点 m 个想去的地方接下来 m 行..每行给出 a b w 代表 a 城市和 b 城市之间路费为 w然后有一个 h 表示他想去的城市个数接下来 h 行..给出 a c d 代表在a城市需要花d元 能够挣 c 元思路:状态压缩DP..求出城市间最短距离初始状态是如果从第一个城市到第 i 个城市的路费+花费 >= 0 就让这个dp[ 1< 阅读全文
posted @ 2012-09-16 06:32 Griselda. 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 题意:给了一个T 代表有 T 组数据每组数据给出 n 个点和 m 条边然后接下来 n 行..x, y 表示每个点的坐标然后 m 行..a b w 表示 a 点和 b 点之间有权值 w..求最大流..思路:主要是最大流的方法..最大流ISAP,邻接表+GAP+当前弧优化Tips:理解用法..Code:View Code 1 #include <stdio.h> 2 #include <cstring> 3 #include <iostream> 4 using namespace std; 5 #define clr(x) memset(x, 0xff, si 阅读全文
posted @ 2012-09-15 21:33 Griselda. 阅读(529) 评论(0) 推荐(0) 编辑
摘要: 题意:给出 n 个数..用a, b表示 n 次更新一段区间[a, b]..求更新完 n 次后这 n 个数的值..思路:正常做法是 从 a 到 b 每个数+1不正常做法是 用树状数组 在a的地方+1 在b的地方-1 然后求某个数 k 的值的时候就求从1~k的和..Tips:树状数组的应用..Code:View Code 1 #include <iostream> 2 #include <cstring> 3 #include <stdio.h> 4 using namespace std; 5 6 int n; // n是边界 7 int c[100001]; 阅读全文
posted @ 2012-09-15 12:36 Griselda. 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 题意:一个船队 VS 一只章鱼给出 n 个定点<章鱼头+章鱼手> 再给出 p 个可移动点<船长+船员>..对于 n 个定点 给出坐标 x y对于 p 个可移动点 给出坐标 x y 和速度 v先输入 T 组样例..对于定点 n 第一个给出章鱼头坐标 接下来n-1行是每只章鱼手的坐标对于移动点 p 第一个给出船长的信息 接下来p-1行是每个船员的信息思路:二分图匹配..所谓最快时间内让船长击打到章鱼头 就是找出某个船员到章鱼手的最长时间所以二分查找每个船员到对应章鱼手的花费时间..如果以这个时间作为最长时间..那么就把比船员-章鱼手花费它时间少的连线..求最大匹配..匹配结 阅读全文
posted @ 2012-09-14 12:29 Griselda. 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 题意:格子上知道一些固定点的位置然后每一行,每一列都有一个枪,行上的枪可以扫射一行列上的枪可以扫射一列问最少需要多少枪能覆盖格子上那些点思路:最小点覆盖=最大匹配所以以x轴为一个点集 y轴为另一个点集建图然后求最大匹配就好..Tips:nothing..Code:View Code 1 #include <stdio.h> 2 #include <cstring> 3 #define clr(x) memset(x, 0, sizeof(x)) 4 const int INF = 0x1f1f1f1f; 5 bool grid[510][510]; 6 7 struct 阅读全文
posted @ 2012-09-14 12:07 Griselda. 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 题意:给出了男女之间的暧昧关系..求解有多少人之间是没有暧昧关系的..先给n表示有n个同学然后同学a:(暧昧关系人数m) 暧昧关系同学1 暧昧关系同学2 暧昧同学3 ...思路:求出最大独立集..Tips:有向图:最大独立集 = n-最大匹配无向图:最大独立集 = n-最大匹配/2Code:View Code 1 #include <stdio.h> 2 #include <cstring> 3 #define clr(x) memset(x, 0, sizeof(x)) 4 const int INF = 0x1f1f1f1f; 5 6 struct Edge 7 { 阅读全文
posted @ 2012-09-13 08:33 Griselda. 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 题意:给出 n m 代表第一棵树有 n 个节点 第二棵树有 m 个节点然后接下来 n+m 行给出 a b 表示第 i 个节点的左孩子是 a 右孩子是 b问这两棵树中有多少棵子树是相同的..eg:View Code Sample Input22 2-1 2-1 -12 -1-1 -15 52 34 5-1 -1-1 -1-1 -12 34 5-1 -1-1 -1-1 -1Sample Output111HintThe two trees in the first sample look like this.思路:根据输入的信息建树..用 deg 数组记录这棵树的第 i 个节点有多少棵子树..用 阅读全文
posted @ 2012-09-11 17:16 Griselda. 阅读(1069) 评论(0) 推荐(1) 编辑
摘要: 题意:给出Q的街道和M个任务然后给出i*j的矩阵..表示第i个街道到第j个街道的距离 其中-1表示不可到达然后接下来M行有 p t d 表示 任务在p街道 开始时间是t 完成工作花费时间是d问最少派出多少人可以完成M个任务思路:用floyd求出街道之间的最短距离根据两个任务距离花费时间+完成工作花费时间+工作开始时间<=第二个工作开始时间确定两个任务是否可以由一个人完成..然后得到一个二分图..然后用n-最大匹配 求出最短路径匹配Tips:※ 因为建图是从0开始建的..而输入给的街道是从1开始算的..所以不对..※ floyd求最短路时候直接在G的基础上算就好了~不用另开一个dis..! 阅读全文
posted @ 2012-09-10 21:21 Griselda. 阅读(643) 评论(0) 推荐(0) 编辑
摘要: 题意:给出了一个n代表有n个数然后给出n个数让你排序~实现n个数由小到大排..思路:就是排序~但是排序有很多种方法~【转】内排序比较Tips:数据结构那本书有讲~其中暂时知道的最快的排序方法是 基数排序..时间复杂度是O(n)..但是这道题主要是用来练习堆排序的..Code:?? 阅读全文
posted @ 2012-09-10 19:51 Griselda. 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 题意:有童鞋A 和 童鞋BA想用手里的牌尽量多地覆盖掉B手中的牌..给出了T表示有T组样例..每组样例给出一个n 表示A和B手中都有n张牌接下来2*n行 有h w 分别代表A手中n张牌的高和宽 以及 B手中n张牌的高和宽问A手中的牌最多能覆盖B多少张牌思路:对一个坐标排序假设是x坐标然后扫描维护一个y坐标然后每次取的是堆里面最大的Tips:set里的一个函数..在短时间内找到 b的w 中满足小于a的w的值~iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值>= key的第一个元素。iterator upper_bou 阅读全文
posted @ 2012-09-09 09:34 Griselda. 阅读(298) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 下一页