70 条题解

  • 0
    @ 2009-10-11 19:40:12

    楼下第十二位,你搞毛啊!

  • 0
    @ 2009-09-17 16:53:07

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    直接用double都可以过-_-ddd

  • 0
    @ 2009-09-16 18:52:42

    贾老大不是oimaster吗

  • 0
    @ 2009-09-15 18:09:11

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    这题太无聊了 我用的是《算法导论》上的标程

    LUP求线形方程组

    却因没用ROUND函数被WA掉了

    交了N次

  • 0
    @ 2009-08-15 20:18:28

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    裸的高斯消元...

    注意不要用:0:0要用round

  • 0
    @ 2009-08-08 12:21:00

    出了207错的看看

    我的是因为除的时候出了点问题.导致有几个值突然变大 才有的

  • 0
    @ 2009-08-07 23:09:46

    高斯消元,可是为什么两次一样的程序,

    一次40(输出n个-0),另一次AC……

    无语。

  • 0
    @ 2009-11-06 20:32:24

    对于线性方程组:

    A11*X1+A12*X2+....A1n*Xn=B1

    A21*X1+A22*X2+....A2n*Xn=B2

    ...........................

    An1*X1+An2*X2+....Ann*Xn=Bn

    要想解它,我们有如下方法:

    1.建立增广矩阵,即将Aij和Bi放入矩阵中.

    2.消元:

    进行第K步消元的时候,选取主元素为Akk,现在我们要将Aik(i>k)全部消掉.怎么消呢?显然将每一行乘一个数,然后再用主行(即Ak)去减就行.具体方法如下:设Mi为第I行要乘的数(i>k),则Mi=Akk/Aik(Aik=0则这行不用乘),然后Aij(i>k且j>k)=Akj-Aij*Mi,Bi(i>k)=Bk-Bi*Mi.要注意到,当Mi的分子很小的时候,会存在很大的精度问题,怎么解决呢?找出Aik(i>k)中绝对值最大的那个(若绝对值最大为0,则主元素变换为Akk+1,继续消元),将它所在行与第K行交换,把它当成新的主行消元即可.

    3.找答案:

    消元后,增广矩阵会变成如下形状:

    A11 A12 ......A1n=B1

    A22.......A2n=B2

    A33....A3N=B3

    .......

    Ann=Bn

    此时很显然可以看出Xn=Bn/Ann,将其回代上去即可得到解.

    上面讨论了对于有且仅有一个解的情况,下面讨论其他情况:

    当消元过程中出现无法选出主元素时,观察是否存在行Bi!=0(i>当前行),有则无解,否则无数解.

    具体实现时可以递归,然后回家时赋值.

    接下来继续讨论如何解决XOR方程.

    Xor方程形如这样:

    A11*X1xorA12*X2xor....A1n*Xn=B1

    A21*X1xorA22*X2xor....A2n*Xn=B2

    ...........................

    An1*X1xorAn2*X2xor....Ann*Xn=Bn

    其中aij和bi都为0或1.则答案xi也为0或1.

    解法可以参照加法方程,不同的时:进行第K步消元的时候,选取主元素为Akk,现在我们要将Aik(i>k)全部消掉.具体方法如下:对于Aij(i>k且j>k)=Akj xor aij,Bi(i>k)=Bk xor Bi.

    返回时利用定理:a xor b=c则a=c xor b;且xor满足结合律.

    无解无数解做法同.

    输出实数时候输出round(1e-6+a*10^k)/10^k:0:k

  • 0
    @ 2009-07-19 15:01:24

    一样的程序交第一遍竟然第一个点TLE第二遍就过了.

    另外注意是比较绝对值

  • 0
    @ 2009-07-12 15:50:17

    编译通过...

    ├ 测试数据 01:运行时错误...| 错误号: 200 | 被零除

    ├ 测试数据 02:运行时错误...| 错误号: 200 | 被零除

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:运行时错误...| 错误号: 200 | 被零除

    ├ 测试数据 05:运行时错误...| 错误号: 200 | 被零除

    ├ 测试数据 06:运行时错误...| 错误号: 200 | 被零除

    ├ 测试数据 07:运行时错误...| 错误号: 200 | 被零除

    ├ 测试数据 08:运行时错误...| 错误号: 200 | 被零除

    ├ 测试数据 09:运行时错误...| 错误号: 200 | 被零除

    ├ 测试数据 10:运行时错误...| 错误号: 200 | 被零除

    ---|---|---|---|---|---|---|---|-

    Unaccepted 有效得分:10 有效耗时:0ms

    痛苦...

  • 0
    @ 2009-07-09 15:32:41

    楼下第二位,你搞毛啊!!!!!!!!!!!!!!!!!!1

  • 0
    @ 2009-06-17 10:31:01

    囧...原来cout.precision(0)会输出-0...

  • 0
    @ 2009-05-14 20:37:31

    既然那么多人都写了题解了,我也就不多说了吧。

  • 0
    @ 2009-04-29 23:02:32

    貌似就是高中数学必修三里的高斯消元

    没事干了,刷掉水题

  • 0
    @ 2009-04-16 18:53:10

    为了防止出现200除0,取高斯消元每一次的当前列的第一项中绝对值最大的和它进行交换,如下::

    function mix(k:integer):integer;

    var i:integer;min:double;

    begin

    min:=f[k,k];mix:=k;

    for i:=k+1 to n do

    if min

  • 0
    @ 2009-03-21 10:52:15

    终于会做了..

    还是看了 OIBH-monthly 里面 wh神牛的文章学的呢.

  • 0
    @ 2009-02-05 16:29:36

    第一个和第二个点出现除0错误或者201的同志注意啦!!!!!

    高斯消元每一次的当前列的第一项不能为0,否则就会有问题,但是这种情况还是有解的,

    无解的情况是当前列及为消元的第一项均为0

    所以每一次消元前还需要判断第一项是否为0,为0就在之后中找一个非0的交换

  • 0
    @ 2009-01-31 12:38:15

    1.为了方便。。直接用real做,避免约分之类的东西。

    2.算值记得算系数。。。

    3.记得-0.0000001:0:0会输出的是-0不是0.................

  • 0
    @ 2009-01-22 10:39:31

    i,j居然打反了

  • 0
    @ 2009-01-06 15:51:09

    为什么第二个点总是216除0错误????

信息

ID
1052
难度
7
分类
线性代数 | 高斯消元 点击显示
标签
(无)
递交数
2409
已通过
551
通过率
23%
被复制
9
上传者