73 条题解
-
0qinhang3 LV 9 @ 2009-10-31 19:11:12
program vijos_p1058;
var
s,ss:ansistring;
n,ni,l,il,k,ik,a,b,c:longint;
begin
assign(input,'p1058.txt'); reset(input);
readln(n,k);
str(n,ss);
l:=length(ss);
for ni:=1 to n do
begin
str(ni,ss);
if length(ss) -
02009-10-30 23:24:29@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02009-10-26 23:14:44@
水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水
题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题 -
02009-10-12 13:23:27@
AC!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!A啦!!!!!!!
program p1058;
var s:string;
n,k,i,j,temp,a,b,c,no:integer;
w,pos:array[1..100000] of integer;
begin
readln(n,k);
temp:=0;
for i:=1 to n do
w[i]:=i;
for i:=1 to k do
begin
readln(a,b,c);
temp:=b-a+1;
for j:=1 to temp do
pos[j]:=w[j+a-1];
{for no:=1 to temp do
begin
writeln(pos[no]);
writeln;
end;}
for j:=b+1 to n do
w[j-temp]:=w[j];
for j:=(n-temp) downto (c+1) do
w[j+temp]:=w[j];
for j:=1 to temp do
w[c+j]:=pos[j];
end;
for i:=1 to 10 do
writeln(w[i]);
end. -
02009-09-09 23:20:17@
懒了、、没办法
-
02009-09-05 19:51:46@
program p1058;
var a,b,c:array[1..100000] of longint;
x,w,n,i,j,m,k,p,q:longint;
begin
readln(n,k);
for i:=1 to n do a[i]:=i;
for i:=1 to k do
begin
readln(p,q,m);
for j:=1 to p-1 do b[j]:=a[j];
w:=j;
for j:=q+1 to n do
begin
inc(w);
b[w]:=a[j];
end;
x:=0;
for j:=p to q do
begin
inc(x);
c[x]:=a[j];
end;
for j:=1 to m do a[j]:=b[j];
x:=1;
for j:=m+1 to m+q-p+1 do
begin
a[j]:=c[x];
inc(x);
end;
w:=m+1;
for j:=m+q-p+2 to n do
begin a[j]:=b[w]; inc(w); end;
end;
for i:=1 to 10 do writeln(a[i]);
end.直接模拟一个不对
-
02009-08-29 16:42:14@
膜拜O(10*k) 的大牛们!
方法大致是这样的,因为只要输出前十位。
所以我们单独考虑这十位。对于每个操作我们逆序向前查找,比如说某位i,我们对操作进行判断,计算出操作之前这个数是由哪里转移过来的,反复进行k次,便得解。
那么关键问题就是怎么判断了,我们需要分类讨论。
其中有三种情况会造成该位数字的移动,具体大家就自己想啦。
-
02009-08-19 20:59:17@
Accepted 有效得分:100 有效耗时:0ms
类型是:模拟,很明显应该用Splay -
02009-08-19 10:16:15@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 150ms
├ 测试数据 07:答案正确... 197ms
├ 测试数据 08:答案正确... 822ms
├ 测试数据 09:答案正确... 838ms
├ 测试数据 10:答案正确... 681ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:2688ms直接模拟还真慢。39行代码
-
02009-08-17 16:35:26@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 103ms
├ 测试数据 07:答案正确... 243ms
├ 测试数据 08:答案正确... 696ms
├ 测试数据 09:答案正确... 696ms
├ 测试数据 10:答案正确... 836ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:2574ms
模拟!
写的有点懒!
就是这个结果! -
02009-08-14 18:09:18@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms感谢各位大牛,o(10*k)真的很强大
-
02009-08-12 10:50:50@
如对本题有疑问可以参看我的题解:http://xujieqi.blog.hexun.com/35722312_d.html
-
02009-08-08 10:49:32@
用SplayAC了,程序也就140行左右……
-
02009-08-06 10:41:03@
var
tmp,f:array[0..100000]of longint;
long,n,k,i,ii,a,c,b:longint;
procedure make1;
var i:longint;
begin
tmp:=f;
for i:=1 to a-c-1 do f[c+long+i]:=tmp[c+i];
for i:=1 to long do f[c+i]:=tmp[a+i-1];
end;
procedure make3;
var i:longint;
begin
tmp:=f;
for i:=1 to c-a+1 do f[a+i-1]:=tmp;
for i:=1 to long do f[c+i]:=tmp[a+i-1];
end;
begin
readln(n,k);
for i:=1 to n do f[i]:=i;
for ii:=1 to k do
begin
readln(a,b,c);
long:=b-a+1;
if c+long=b then make3;
if(ca)then make3;
end;
for i:=1 to 10 do writeln(f[i]);
end. -
02009-08-01 22:19:33@
为什么我用链表会存取非法呢?
-
02009-07-23 13:25:11@
其实链表模拟完全可以
-
02009-07-20 17:57:48@
好像全是倒推的啊.我来个模拟法的程序.
var tmp,f:array[0..100000]of longint;
long,n,k,i,ii,a,c,b:longint;
procedure make1;
var i:longint;
begin
tmp:=f;
for i:=1 to a-c-1 do f[c+long+i]:=tmp[c+i];
for i:=1 to long do f[c+i]:=tmp[a+i-1];
end;
procedure make3;
var i:longint;
begin
tmp:=f;
for i:=1 to c-a+1 do f[a+i-1]:=tmp;
for i:=1 to long do f[c+i]:=tmp[a+i-1];
end;
begin
readln(n,k);
for i:=1 to n do f[i]:=i;
for ii:=1 to k do
begin
readln(a,b,c);
long:=b-a+1;
if c+long=b then make3;
if(ca)then make3;
end;
for i:=1 to 10 do writeln(f[i]);
end. -
02009-07-13 14:06:27@
今天没事干么,写了一个Splay来AC此题……
然后在6k上秒闪了……Orz -
02009-05-15 23:49:27@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 9ms
├ 测试数据 07:答案正确... 72ms
├ 测试数据 08:答案正确... 338ms
├ 测试数据 09:答案正确... 353ms
├ 测试数据 10:答案正确... 369ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:1141ms -
02009-02-26 23:05:24@
Just so so.