数学—高斯消元
文章平均质量分 78
My_ACM_Dream
生活没有彩排每天都是现场直播
展开
-
poj 1222 EXTENDED LIGHTS OUT (高斯消元)
给出一个矩阵,按下某个位置会使周围反转,0变1,1变0,现在问按那些点能使矩阵全变为0. 这位大牛的题解将的很清楚 #include #include #include #include #include #include #include #include #include using namespace std; #define B(x) (1<<(x)) typedef long原创 2015-03-15 10:34:36 · 458 阅读 · 0 评论 -
uva 1358 Generator (kmp,dp(高斯消元解法))
题意: 给出一个n,表示可以从26个字母的前n个中任意选取,然后给出一个串A,问生成的串包含A长度的期望。 题解: 这题dp方程比较容易出来dp[i]表示匹配了i长度的期望。 if(s[i+1]==c) dp[i] = dp[i+1] * p; else dp[i] = dp[lost(k)] * p; 由于会形成环,所以用高斯消元搞,这题无法用double,应为容易损失精度,只能用分原创 2015-05-07 22:08:52 · 601 阅读 · 0 评论 -
hdu 5006 Resistance (高斯消元,0 0!)
题意: 一些导线连接一些点,导线的电阻只有0和1.求S和T的等效电阻。 题解: 这题给re跪了,不过思路应该不会错,注意高斯消元的姿势。首先对于0电阻的这导线显然无法直接用高斯消元,先度这些点缩点,0电阻的缩成一个点,接着就可以根绝高斯消元列方程了。555 #include #include #include #include #include #include #include #inc原创 2015-05-15 20:40:14 · 596 阅读 · 0 评论 -
高斯消元模板
mod 2 方程写法: int Gauss(int n, int m){ int r = 0, c = 0; while(r < n && c < m){ int id = r; for(int i = r + 1; i < n; i++) if(maze[i][c] > maze[id][c])原创 2015-05-05 21:32:52 · 2050 阅读 · 3 评论 -
hdu 4870 Rating (高斯消元解概率dp)
题目很简单,离散化下,然后dp方程E[i][j] = E[i][j-2]*(1-p) + E[i][j+1]*p + 1;(假设i>=j) 因为存在E[i][j-2]未能计算出来的问题,因此dp无法解决,考虑用高斯消元。 将方程变形 E[i][j] - (1-p)*E[i][j-2] - p*E[i][j+1] = 1; 然后每个状态都有对应的方程,每个方程一个表达式,用高斯消元解这些表达式原创 2015-05-06 13:38:28 · 639 阅读 · 1 评论 -
uva 11542 Square (高斯消元)
题意: 求n个数抽任意数组成的集合满足里面都是平方数的个数。 题解: 分解质因数,列方程,求自由变元个数。 #include #include #include #include #include #include #include #include #include #include #include #define B(x) (1<<(x)) using namespace std;原创 2015-05-05 21:06:02 · 490 阅读 · 0 评论 -
hdu 3976 Electric resistance (高斯消元)
题意: 给出一个电路图,两个节点之间连一个电阻,现在问1~n的等效电阻是多少。 题解: 首先考虑一个节点,物理上的常识,这个节点流入和流出的电流和是0,那么我们假设这个节点的电势为x1,那么那么这个节点可以列出方程 x1/r1+x1/r2+....x1/ri=0,然后考虑n个节点,可以列出n个这样的方程求解得出答案,对于方程我们是假设流入1的电流为1,流出n的电流肯定就是-1,那么最后的等效原创 2015-03-18 19:08:27 · 626 阅读 · 0 评论 -
uva 10828 Back to Kernighan-Ritchie (高斯消元解概率问题)
题意: 给出一个图,每个节点都连接着前驱和后继,现在问每个节点执行的期望数。 题解: 如果这题每个节点没有回头,那么用dp解妥妥的,但是有回路这样只能用高斯消元搞。对于每个节点的期望数设为xi,那么xi的期望数等于每个前驱的期望数/出度的总和。于是可以列出多个方程高斯消元求解,不过要注意有无穷的情况,应为会产生环!! #include #include #include #include原创 2015-05-05 18:59:59 · 556 阅读 · 0 评论 -
SGU 200 Cracking RSA (高斯消元)
题意: 给出n个数的集合,这n个数的因子都是前t个质数。求这个集合有多少个子集,这个子集满足元素相乘是平方数。 题解: 高斯消元。因为都是质数,那么要得到平方数那么这些集合的元素对应的因子要成对出现,不成对不可能够成完全平方数。于是每个方程代表一个因子,设xi表示集合i元素是否有,然后列出t个式子求解。最后只要求2^(自由因子个数)。 #include #include #include原创 2015-03-18 21:54:59 · 486 阅读 · 0 评论 -
poj 2065 SETI (高斯消元)
直接根据题目就可以列方程了,然后高斯消元。 #include #include #include #include #include #include #include #include #include using namespace std; #define B(x) (1<<(x)) void cmax(int& a,int b){ if(b>a)a=b; } void cmin(int&原创 2015-03-18 14:49:56 · 436 阅读 · 0 评论 -
poj 2947 Widget Factory (高斯消元)
题意: 公司被吞并,老员工几乎全部被炒鱿鱼。一共有n种不同的工具,编号1-N(代码中是0—N-1), 每种工具的加工时间为3—9天 ,但是现在老员工不在我们不知道每种工具的加工时间,庆幸的是还保留着一些对工人制造工具的记录,对于每个老员工,他的记录包括,他开始工作的时间(在某个星期的星期几),被炒鱿鱼的时间(某个星期的星期几),在第几个星期不知道.....在这段时间里,他正好加工了k件物品,给出原创 2015-03-18 12:30:06 · 525 阅读 · 0 评论 -
poj 3185 The Water Bowls (高斯消元)
高斯消元水过 #include #include #include #include #include #include #include #include #include using namespace std; #define B(x) (1<<(x)) void cmax(int& a,int b){ if(b>a)a=b; } void cmin(int& a,int b){ if(b原创 2015-03-17 23:16:29 · 476 阅读 · 0 评论 -
poj 1830 开关问题 (高斯消元)
题意: 给出一些开关互相影响的关系,问从开关的初始状态到结束状态有多少种变换的方法。 题解: 对于每个开关可能会受1....i某写开关的影响,因此对于开关i列出一个列向量,列向量每个元素只有1或0,表示某个开关是否影响这个i开关,这样就n个开关组合成一个矩阵,结束状态也是一个列向量,这样就可以用高斯消元求解解的个数。 #include #include #include #include原创 2015-03-17 18:33:43 · 756 阅读 · 0 评论 -
poj 1753 Flip Game (高斯消元)
题意: 给出一个4*4的方格,里面有黑色和白色的棋子,如果操作某个棋子,那么这个棋子以及这个棋子的四周会反转,由黑变白或由白变黑。求最小操作数,使得整个方块变成同色。 题解: 高斯消元,开关类问题,有可能有多解,所以要枚举自由变元找到最小解,分别对全变成黑色和全变成白色跑一边高斯消元,去最小值。 #include #include #include #include #include #i原创 2015-03-17 16:24:30 · 432 阅读 · 0 评论 -
poj 1681 Painter's Problem (高斯消元)
题意: 给出一个矩阵,矩阵只有黄色和白色,有一个画笔,在某个地方画就可以将这个点以及四周变成黄色。求最少要画多少笔。 题解: 高斯消元,开关类问题。判断无解条件。 #include #include #include #include #include #include #include #include #include using namespace std; #define B(x)原创 2015-03-17 13:28:01 · 469 阅读 · 0 评论 -
poj 1222 EXTENDED LIGHTS OUT (高斯消元)
题意: 给出一个5*6的矩阵,每次操作以点,可以使这个矩阵的这个点一级四周的点改变,0变1,1变0。现在问操作的方法应该是怎么样。 题解: 高斯消元,开关类问题。具体做法参见:here 我是参照kuangbin的模板搞的。 #include #include #include #include #include #include #include #include #include us原创 2015-03-17 12:58:02 · 479 阅读 · 0 评论 -
SGU 275 To xor or not to xor (高斯消元)
题意: 给出n个数,求这个n个数的某个子集,使得这个子集元素之间异或的值最大。 题解: 着很明显要在位上进行操作,我们将这些数转成二进制,然后通过各个位去或不取的情况来解决这个问题。这里用到高斯消元的一种性质,可以比较好的解决问题,想了好久也只能是意会,通过枚举每行和上面的行进行消元,然后判断这行是否有1或者整行是0,于是就可以确定这位是否有1,从高位到低位开始枚举。体会一下这高斯消元的过程原创 2015-03-19 15:31:13 · 486 阅读 · 0 评论 -
hihoCoder 1166 交换代数 (高斯消元,概率)
题意: 给出区间[1,n]的状态,有0、1.现在每次可以选择任意区间取翻转,问全部翻转成0的次数期望。总共有n(n+1)/2个区间。 题解: 这个CLJ链接将的很清楚了。 那么根据高斯消元列方程求解,因为有-2,+2,那么可以部除以2,这样就变成-1,+1. #include #include #include #include #include #include #include #i原创 2015-05-19 23:49:34 · 1114 阅读 · 0 评论