求编码这个你应该会的吧
就每个扫过来就行了 n^2的
然后就是解码
我现在只能想到一个比较简单的方法但是可以过
先建一个m个boolean值的数组
全true
然后从最后一个值开始往回推
这个值假如是k 则这个数就是在那个boolean值数组里还是true的值的第k+1个
然后把这个数对应的boolean赋为false
就这样就可以求出来了
附上一小段代码以作解释
var
f:array[1..1000] of boolean;
begin
init;
for i:=m downto 1 do
begin
s:=1;
while b[i]>=0 do
begin
if f[s] then dec(b[i]);
inc(s);
end;
ans[i]:=s-1;
f[s-1]:=false;
end;
这是某年NOIP的题,你可以搜搜看。貌似是96年的。