社区讨论

帮忙看下哪里错了

P1005[NOIP 2007 提高组] 矩阵取数游戏参与者 5已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@mi4f67ce
此快照首次捕获于
2025/11/18 18:17
4 个月前
此快照最后确认于
2025/11/18 18:17
4 个月前
查看原帖
CPP
var
 n,i,j,ans,k,l,x,y,m:longint;
 a:array[1..90,1..90] of longint;
 b:array[1..90] of int64;
 c:array[1..90] of int64;
procedure sort(l,r:longint);
var i,j,mid,temp:longint;
begin
i:=l;j:=r; mid:=a[x,random(r-l+1)+l];
repeat
while a[x,i]< mid do inc (i);
while a[x,i]>mid do dec(j);
if not(i>j) then
begin
temp:=a[x,i]; a[x,i]:=a[x,j]; a[x,j]:=temp;
inc(i); dec(j);
end;
until i>j ;
if i<r then sort(i,r);
if j>l then sort(l,j);
end;
begin
  readln(n,m);
 for i:=1 to n do
 begin  for j:=1 to m do read(a[i,j]);
 readln;
  end;
  for x:=1 to n do sort(a[x,1],a[x,m]);
fillchar(b,sizeof(b),0);
c[1]:=2;
for i:=2 to m do  c[i]:=c[i-1]*2;
for i:=1 to n do begin
for j:=1 to m do
 b[i]:=b[i]+a[i,j]*c[j];
end;
for i:=1 to n do ans:=ans+b[i];
writeln(ans);
end.
(我想了想,一共n行,每行之间互不影响。所以我的思路就是:每一行排个序,从最小的数*2,次小的数*4。。。。。一直到最大的数*2的m次幂。然后把每行的都加起来,最后for i:=1 to n do 把每行的和加起来就好。但是结果一直是错的,那位神牛帮忙看下哪里错了。谢谢!!!!!)

回复

4 条回复,欢迎继续交流。

正在加载回复...