随笔分类 -  枚举

摘要:题意:一个裸的枚举题,告诉你M个点,问这M个点能否覆盖其他非M点。做的时候时间复杂度计算错误。。代码如下:#include <cstdlib>#include <cstring>#include <cstdio>#include <iostream>#include <algorithm>using namespace std;int N, M;int r[15];int x[15], y[15];char mp[55][55];char tp[55][55];const int INF = 0x3f3f3f3f;bool judge 阅读全文
posted @ 2013-05-29 21:29 沐阳 阅读(237) 评论(0) 推荐(0) 编辑
摘要:这题的想法就是直接枚举1-m每一个数的数量,先给这n个数全排列,然后除以相同的数的阶乘就可以了。枚举的方法就是dfs了。这里分了两步来完成这个任务,首先找出前k个数的组合,然后再进行任意的组合。代码如下:#include <cstdlib>#include <cstdio>#include <cstring>#include <iostream>using namespace std;// 对于一个给定的m面色子,我们抛掷n次,前k大的数相加为p // 错误的思路为枚举最大的k个数,然后再将剩下的n-k个小于// 前k个数中最小的数进行排列组合/ 阅读全文
posted @ 2012-12-09 20:39 沐阳 阅读(264) 评论(0) 推荐(0) 编辑
摘要:题意:给定一个完全图,现在要求将这个图划分成两个部分,求两个部分的点做笛卡尔积之后的点对的距离和最大值是多少。解法一:由于给定的点最多只有20个,所以直接2^N*O(n)的时间复杂度枚举即可。解法二:采用随机化算法,枚举某一个点,将这个点所属于的集合进行翻滚。代码如下:#include <cstdlib>#include <cstring>#include <cstdio>#include <iostream>using namespace std;int N, G[25][25];int cal(int x) { int A[25], B[25 阅读全文
posted @ 2012-11-19 21:09 沐阳 阅读(289) 评论(0) 推荐(0) 编辑
摘要:题意:给定一个N(1-200),求一个不超过100位的十进制的数,且这个数字只由0和1组成,要求输出一个这样的数。解法:直接用long long递归处理即可。代码如下:#include <iostream>#include <cstdlib>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <string>#include <map>#include <queue>#includ 阅读全文
posted @ 2012-10-19 22:19 沐阳 阅读(239) 评论(0) 推荐(0) 编辑
摘要:直接枚举等号所在位置,然后左右两边用两个MAP来记录组成和的个数,然后运用乘法原理得到答案。代码如下:#include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>#include<queue>#include<set>#include<map>#include<cstring>#include<vector>#include<string>#define 阅读全文
posted @ 2012-09-22 21:07 沐阳 阅读(357) 评论(0) 推荐(0) 编辑
摘要:第二次来做这一题,由于题目中给定了一个等级限制M,所以可以通过枚举第一个点所在的位置求解.思路很清晰.for (int i = 0; i <= M; ++i) 这个i来表示第一个点的等级在M长度区间内的偏移量.然后再在区间内建边,floyd即可.代码如下:#include <cstdlib>#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>#define INF 0x3f3f3f3fusing namespace std;int M 阅读全文
posted @ 2012-09-20 16:32 沐阳 阅读(288) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示