上一页 1 2 3 4 5 6 7 8 ··· 20 下一页
  2012年9月5日
摘要: 题意:给出一个图,无重边,边权为电阻大小,求1~n的等效电阻。要知道等效电阻,很显然要知道电流和电势差。电阻必然是确定的,那么电势差会随流过电流的大小变化,为了方便,不妨设流入1节点的电流为1,n节点的电势为0。每个节点的电势视为未知数,那么根据KCL,流入节点的电流必然等于流出节点的电流,列出n个方程。结果就是电势差/I。 1 #include<cstdio> 2 #include<cstring> 3 #include<cmath> 4 #include<algorithm> 5 #define EPS 1e-8 6 #define MAXN 阅读全文
posted @ 2012-09-05 12:33 DrunBee 阅读(346) 评论(0) 推荐(0) 编辑
  2012年9月4日
摘要: 列出同余方程,高斯消元。无穷解的同时,可能出现无解,所以先判无穷解,再判无解。最后枚举答案,还可能无解。 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #define MAXN 330 5 using namespace std; 6 int n, m; 7 int g[MAXN][MAXN], x[MAXN]; 8 int Day(char str[]) { 9 if (strcmp(str, "MON") == 0) 10 return 1; 11 if 阅读全文
posted @ 2012-09-04 22:52 DrunBee 阅读(383) 评论(0) 推荐(0) 编辑
摘要: 题意:给出n维的n+1个坐标,求一个坐标,使得n+1到该坐标的距离相等。距离定义为{(x1, x2 ... xN)| ∑(xi-Xi)^2 = R^2 (i=1,2,...,N) }首先,列出n+1个方程,显然二次项系数都为1,所以可以先把二次项消去,得到n个n元一次方程。然后,开始高斯消元。由于java在n=50时,很久都出不了答案,c++又会爆longlong,所以我们可以选择模P。ax=b的解等于ax=b(mod P)的解(x<P),这个很好证明。所以在模P下,加减乘除都很容易搞定。除法用乘以逆元,乘法用二分加法,拓展欧几里德部分的乘法是不会溢出的。为了方便处理,把输入所有的值加上 阅读全文
posted @ 2012-09-04 15:18 DrunBee 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 题意:直接拿样例,37 abc。a~z表示1~26,*表示0。x0*1^0+x1*1^1+x2*1^2=1(mod 37)x0*2^0+x1*2^1+x2*2^2=2(mod 37)x0*3^0+x1*3^1+x2*3^2=3(mod 37)高斯消元,除法x等于乘以x对p的逆元。 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #define MAXN 110 5 using namespace std; 6 char str[MAXN]; 7 int n, p; 8 int g[ 阅读全文
posted @ 2012-09-04 12:30 DrunBee 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 题意:给出n个未知数的方程组,求未知数。不是正数的用分数表示。赤裸裸的Java暴力,消元的时候用乘法相消,避免除法。 1 import java.util.*; 2 import java.math.*; 3 4 public class Main { 5 public static BigInteger g[][] = new BigInteger[110][110]; 6 7 public static boolean Gauss(int n) { 8 BigInteger tmp, a, b; 9 int i, j, k;10 ... 阅读全文
posted @ 2012-09-04 00:22 DrunBee 阅读(424) 评论(0) 推荐(0) 编辑
  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 阅读(361) 评论(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 阅读(1403) 评论(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 阅读(452) 评论(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 阅读(241) 评论(0) 推荐(0) 编辑
  2012年9月2日
摘要: 题意:n盏灯,m个开关,每个开关控制一些灯。给出n个灯的状态,询问开关的方案数,使得达到给出的状态。灯的状态是由控制它的所有开关的状态异或而来,所以每个开关不是0,就是1。高斯消元后,等式左边系数全为0,等式右边系数不为0,显然无解。否则答案就是2^(自由元的个数)。 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #define MAXN 60 5 typedef long long LL; 6 using namespace std; 7 int g[MAXN][MAXN], 阅读全文
posted @ 2012-09-02 22:42 DrunBee 阅读(201) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 20 下一页