Loading

摘要: n,m分别为两边的点数,E为边数。 int e[maxn][maxn]; int n, m; int vis[maxn], match[maxn]; bool dfs(int x) { for (int i = 1; i <= m; i++) { if (e[x][i]) { if (vis[i]) 阅读全文
posted @ 2020-07-17 14:00 MQFLLY 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 判断所给的图是否是二分图,如果是,输出各自的点。 用染色法 DFS一遍即可 O(N + M) vector<int> col[2]; vector<int> e[maxn]; int vis[maxn]; bool dfs(int v, int color) { vis[v] = color; co 阅读全文
posted @ 2020-07-17 11:33 MQFLLY 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 给定20个桶的状态,可以翻转桶把相邻的状态变换。问最少的变换次数。 此类问题通常有以下解决方案 1.暴力枚举 2.高斯消元 + 暴力枚举 3.找规律性质 这题和上一题POJ1830 很相似,可以用高斯消元异或方程组枚举自由元做。 但是比较麻烦; 注意到每个桶至多翻转一次。 从右往左的第一个1必然要通 阅读全文
posted @ 2020-07-17 10:46 MQFLLY 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 设xixi表示第ii个开关的操作情况,那么xi=1xi=1为按了这个开关,否则xi=0xi=0表示这个开关并没有按下去,那么我们接着统计ai,jai,j表示第i个开关和第j个开关的联系情况,ai,j=1ai,j=1表示按下j会影响i的状态,否则就是不会影响,即ai,j=0ai,j=0,特殊地一个点就 阅读全文
posted @ 2020-07-17 09:07 MQFLLY 阅读(117) 评论(0) 推荐(0) 编辑
摘要: double a[maxn][maxn]; int n; void Gauss() { for (int i = 1; i <= n; i++) { int Max = i; for (int j = i + 1; j <= n; j++) { if (fabs(a[j][i]) > fabs(a[ 阅读全文
posted @ 2020-07-17 09:03 MQFLLY 阅读(151) 评论(0) 推荐(0) 编辑