2012年5月11日
摘要: POJ_2947 将M条信息翻译成同余方程组后用高斯消元求解就可以了。#include<stdio.h>#include<string.h>#include<iostream>#define MAXD 310using namespace std;int N, M, mat[MAXD][MAXD], ans[MAXD], h[MAXD];char a[5], b[5], day[][5] = {"MON", "TUE", "WED", "THU", "FRI" 阅读全文
posted @ 2012-05-11 23:08 Staginner 阅读(243) 评论(0) 推荐(0) 编辑
摘要: URAL_1042 由于题目中说明了每个工人不能被其他工人取代,也就是说如果矩阵的列向量是线性无关的,于是增广矩阵的秩一定是N,所以不会有无解的情况,并且解是唯一的,所以直接用高斯消元求解即可。#include<stdio.h>#include<string.h>#include<iostream>#define MAXD 260using namespace std;int N, mat[MAXD][MAXD], ans[MAXD];void init(){ int i, j, k; memset(mat, 0, sizeof(mat)); for(i = 阅读全文
posted @ 2012-05-11 17:30 Staginner 阅读(306) 评论(0) 推荐(0) 编辑
摘要: POJ_1830 可以用高斯消元求矩阵的秩,这样就知道了有x个变元,而这些变元可以取任意值,对于每种情况,其他元会有唯一的解,所以一共就有2^x种方案。#include<stdio.h>#include<string.h>#include<iostream>#define MAXD 35using namespace std;int N, mat[MAXD][MAXD];void init(){ int i, j, k; memset(mat, 0, sizeof(mat)); scanf("%d", &N); for(i = 0 阅读全文
posted @ 2012-05-11 16:03 Staginner 阅读(307) 评论(0) 推荐(0) 编辑
摘要: POJ_1222 第一次接触高斯消元的题目,基本算是仿写出来的。由于题目没有说无解,也没有用special judge,所以应该按有唯一解的情况去做就可以了。 当然这个题目也可以用枚举第一行的操作+搜索的办法去解,一些思路可以参考我的POJ_1753的解题报告:http://www.cnblogs.com/staginner/archive/2011/10/29/2228784.html。#include<stdio.h>#include<string.h>#include<iostream>#define MAXD 35using namespace st 阅读全文
posted @ 2012-05-11 14:30 Staginner 阅读(255) 评论(0) 推荐(0) 编辑
摘要: UESTC_1558 如果这个题目不考虑t而是改成问最少的转换次数,那么我们只要每次让它转换得越大越好,因此就可以将所有的exchange按r进行排序,每一次在一定的范围内选出v最大的exchange即可(这一点可以用堆来实现)。 而现在是需要考虑t的,显然就不能直接贪心了,于是我们不妨往dp的角度上想一下。如果dp的话,那么就涉及到一个顺序的问题,按我们上面的思路将r排序后进行dp是否可行呢?是可以的,不妨假设y.r>=x.r且 y能够更新x,而由于y.r>=x.r,那么更新y的那个点就一定也可以更新x,而这样是比用y去更新x更优的。因此,如果我们将exchange按r排序后,后 阅读全文
posted @ 2012-05-11 11:10 Staginner 阅读(278) 评论(0) 推荐(0) 编辑