2012年9月3日
摘要:
题意:给出一个h*w的矩阵,每个值等于与它哈密顿距离不超过d的平均值,求原矩阵。构造方程组,高斯消元,注意行/列,消元要取最大的。 1 #include<cstdio> 2 #include<cstring> 3 #include<cmath> 4 #include<algorithm> 5 #define MAXN 110 6 using namespace std; 7 double a[MAXN][MAXN], g[MAXN][MAXN], x[MAXN]; 8 int pos[MAXN][MAXN]; 9 int n, m, d, cnt 阅读全文
posted @ 2012-09-03 23:01
DrunBee
阅读(368)
评论(0)
推荐(0)
摘要:
题意:有n个数,至少取一个异或可以得到一些值,询问这些值中第k小是多少。用高斯消元搞基。将n个数拆成二进制,转化为非线性相关。因此,这n个数都要尽可能小,且不能相互表示。不能相互表示,用高斯消元。尽可能小,则要从高位开始消去。 1 #include<cstdio> 2 #include<algorithm> 3 #define MAXN 10010 4 typedef long long LL; 5 using namespace std; 6 int n; 7 LL a[MAXN]; 8 void Gauss() { 9 int i, j, k, t;10 k = 0 阅读全文
posted @ 2012-09-03 21:42
DrunBee
阅读(1420)
评论(0)
推荐(0)
摘要:
题意:从n个数中,选择一些数,使得异或最大。将这些数转化为2进制。构造等式Ax=B,A是每个数字取或者不取,B不妨都设为1。为了使得异或最大,那么最高位尽可能为1。因此,从最高位开始尽可能使得等式成立,即当前处理第i个等式,则0~i-1个等式对第i个等式消元。若当前等式有解,ans|=1<<(60-i)。 1 #include<cstdio> 2 #include<cstring> 3 #define MAXN 110 4 typedef long long LL; 5 int n, g[MAXN][MAXN]; 6 void Gauss() { 7 LL 阅读全文
posted @ 2012-09-03 14:33
DrunBee
阅读(462)
评论(0)
推荐(0)
摘要:
题意:有20个数字,0或1。如果改变一个数的状态,它左右两边的两个数的状态也会变反。问从目标状态到全0,至少需要多少次操作。显然,问题可以从目标状态到全0 转化为 全0到目标状态。于是可以列出方程组,每行一个数的状态。为了知道操作次数,那么就要知道未知数为1有多少个,所以就要解方程组,解方程组就不得不枚举自由元了。 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #define MAXN 20 5 #define MAXM 25 6 #define oo 0x7FFFFFFF 7 阅读全文
posted @ 2012-09-03 09:38
DrunBee
阅读(248)
评论(0)
推荐(0)
浙公网安备 33010602011771号