70 条题解
-
0黄俊翔 LV 7 @ 2009-10-11 19:40:12
楼下第十二位,你搞毛啊!
-
02009-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
-
02009-09-16 18:52:42@
贾老大不是oimaster吗
-
02009-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次 -
02009-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 -
02009-08-08 12:21:00@
出了207错的看看
我的是因为除的时候出了点问题.导致有几个值突然变大 才有的 -
02009-08-07 23:09:46@
高斯消元,可是为什么两次一样的程序,
一次40(输出n个-0),另一次AC……
无语。 -
02009-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
-
02009-07-19 15:01:24@
一样的程序交第一遍竟然第一个点TLE第二遍就过了.
另外注意是比较绝对值 -
02009-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痛苦...
-
02009-07-09 15:32:41@
楼下第二位,你搞毛啊!!!!!!!!!!!!!!!!!!1
-
02009-06-17 10:31:01@
囧...原来cout.precision(0)会输出-0...
-
02009-05-14 20:37:31@
既然那么多人都写了题解了,我也就不多说了吧。
-
02009-04-29 23:02:32@
貌似就是高中数学必修三里的高斯消元
没事干了,刷掉水题 -
02009-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 -
02009-03-21 10:52:15@
终于会做了..
还是看了 OIBH-monthly 里面 wh神牛的文章学的呢. -
02009-02-05 16:29:36@
第一个和第二个点出现除0错误或者201的同志注意啦!!!!!
高斯消元每一次的当前列的第一项不能为0,否则就会有问题,但是这种情况还是有解的,
无解的情况是当前列及为消元的第一项均为0
所以每一次消元前还需要判断第一项是否为0,为0就在之后中找一个非0的交换 -
02009-01-31 12:38:15@
1.为了方便。。直接用real做,避免约分之类的东西。
2.算值记得算系数。。。
3.记得-0.0000001:0:0会输出的是-0不是0................. -
02009-01-22 10:39:31@
i,j居然打反了
-
02009-01-06 15:51:09@
为什么第二个点总是216除0错误????