115 条题解
-
0超子 LV 9 @ 2009-08-13 12:48:24
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
├ 测试数据 11:答案正确... 0ms
├ 测试数据 12:答案正确... 0ms
├ 测试数据 13:答案正确... 0ms
├ 测试数据 14:答案正确... 0ms
├ 测试数据 15:答案正确... 0ms
├ 测试数据 16:答案正确... 0ms
├ 测试数据 17:答案正确... 0ms
├ 测试数据 18:答案正确... 0ms
├ 测试数据 19:答案正确... 0ms
├ 测试数据 20:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms庆祝实质性的一次Ac!
---|---|---|---|---|---|---|---|-晒程序---|---|---|---|---|---|---|-
program v1306;
var f:array[0..81] of string;
a:array[1..80] of integer;
x:string;
t1,t2:qword;
i,j,k,l,l1:integer;
begin
readln(x);
l:=length(x);
for i:=0 to 81 do f[i]:='';
f[1]:=x[1];
for i:=1 to l do
begin
for j:=1 to i-1 do
begin
val(copy(x,j+1,i-j),t1);
val(f[j],t2);
if t1>t2 then f[i]:=copy(x,j+1,i-j);
end;
if f[i]='' then f[i]:=f+x[i];
end;
i:=1;
repeat
a[i]:=l;
l1:=length(f[l]);
dec(l,l1);
inc(i);
until l=0;
for j:=i-1 downto 1 do
begin
write(f[a[j]]);
if j>1 then write(',');
end;
writeln;
end. -
02009-08-13 10:30:23@
[red]
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
[yellow]├ 测试数据 05:答案正确... 0ms
[blue]├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
├ 测试数据 11:答案正确... 0ms
├ 测试数据 12:答案正确... 0ms
├ 测试数据 13:答案正确... 0ms
├ 测试数据 14:答案正确... 0ms
├ 测试数据 15:答案正确... 0ms
├ 测试数据 16:答案正确... 0ms
├ 测试数据 17:答案正确... 0ms
├ 测试数据 18:答案正确... 0ms
├ 测试数据 19:答案正确... 0ms
├ 测试数据 20:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms我这题能通过主要是因为vj上这题数据比较水!
我在rq上交只有60分! -
02009-08-06 19:56:54@
You Show Me What is 'WS'.
-
02009-08-04 10:37:16@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
├ 测试数据 11:答案正确... 0ms
├ 测试数据 12:答案正确... 0ms
├ 测试数据 13:答案正确... 0ms
├ 测试数据 14:答案正确... 0ms
├ 测试数据 15:答案正确... 0ms
├ 测试数据 16:答案正确... 0ms
├ 测试数据 17:答案正确... 0ms
├ 测试数据 18:答案正确... 0ms
├ 测试数据 19:答案正确... 0ms
├ 测试数据 20:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
过了,YEAH -
02009-08-02 15:40:20@
f[i]表示前i位数添加尽量多的逗号,最后一个数的最小值(最后一个数最小既可以方便后面添加逗号,又可以使前面的数尽量大)。方程
f[i]=copy(st,j+1,i-j)(满足copy(st,j+1,i-j)>f[j],且j尽量大)。 -
02009-07-30 11:12:52@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
├ 测试数据 11:答案正确... 0ms
├ 测试数据 12:答案正确... 0ms
├ 测试数据 13:答案正确... 0ms
├ 测试数据 14:答案正确... 0ms
├ 测试数据 15:答案正确... 0ms
├ 测试数据 16:答案正确... 0ms
├ 测试数据 17:答案正确... 0ms
├ 测试数据 18:答案正确... 0ms
├ 测试数据 19:答案正确... 0ms
├ 测试数据 20:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms一直检查将近30分钟
先是没考虑怎么处理0的问题
其次是比较的问题(记得一次提交上去,全部超时!!)
但是还是不行
.....
最后才发现.....初始值没赋值 o(>﹏length(b) do b:='0'+b;
while length(b)>length(a) do a:='0'+a;
exit((a>b)or((a=b)and(c>d)));
end;procedure outit(k:longint);
begin
if k-length(s[k]) -
02009-07-17 19:24:08@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
├ 测试数据 11:答案正确... 0ms
├ 测试数据 12:答案正确... 0ms
├ 测试数据 13:答案正确... 0ms
├ 测试数据 14:答案正确... 0ms
├ 测试数据 15:答案正确... 0ms
├ 测试数据 16:答案正确... 0ms
├ 测试数据 17:答案正确... 0ms
├ 测试数据 18:答案正确... 0ms
├ 测试数据 19:答案正确... 0ms
├ 测试数据 20:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
我按单词那道题做得,竟对了 -
02009-07-12 19:30:29@
改为longint后20分…………!
-
02009-07-10 23:02:51@
//dp[i]表示前i位数最后一个逗号的位置
//dp[i]=max{k | s(dp[k]+1~k) -
02009-06-11 13:34:21@
F为前I个,分J分,最后一组为第一个数为K
-
02009-06-03 08:13:36@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
├ 测试数据 11:答案正确... 0ms
├ 测试数据 12:答案正确... 0ms
├ 测试数据 13:答案正确... 0ms
├ 测试数据 14:答案正确... 0ms
├ 测试数据 15:答案正确... 0ms
├ 测试数据 16:答案正确... 0ms
├ 测试数据 17:答案正确... 0ms
├ 测试数据 18:答案正确... 0ms
├ 测试数据 19:答案正确... 0ms
├ 测试数据 20:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms好J!
感谢数据:0010020030004
一定要输出00,1,002,003,0004
比较的时候,000>00!也就是同样的值,前导零多的也算大!
另外感谢‘badboypeter’的字符串比较过程! -
02009-05-19 21:25:37@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
├ 测试数据 11:答案正确... 0ms
├ 测试数据 12:答案正确... 0ms
├ 测试数据 13:答案正确... 0ms
├ 测试数据 14:答案正确... 0ms
├ 测试数据 15:答案正确... 0ms
├ 测试数据 16:答案正确... 0ms
├ 测试数据 17:答案正确... 0ms
├ 测试数据 18:答案正确... 0ms
├ 测试数据 19:答案正确... 0ms
├ 测试数据 20:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msDP数组f表示前i个数分成j份,最后一个序列的第一个位列最大为多少。
核心方程:
for i:=1 to l do
f:=1;
for k:=2 to l do
for i:=k to l do begin
f:=0;
for j:=i-1 downto k-1 do
if (f[j,k-1]>0)and (copy(s,f[j,k-1],j+1-f[j,k-1] 小于copy(s,j+1,i-j))
then begin
f:=j+1;
break;
end;
end; -
02009-05-09 16:41:48@
var
str:string;
f:array [0..80] of string;procedure init;
begin
readln(str);
end;function compare(aa,bb:string):boolean;
var aaa,bbb:longint;
begin
val(aa,aaa); val(bb,bbb);
if aaa>bbb then exit(true)
else exit(false);
end;procedure main;
var i,j,len,p:longint; flag1,flag:boolean; data:string;
begin
flag:=false;
data:='';
j:=1;
len:=length(str);
p:=1;
if str[1]='0' then begin inc(j);
f[1]:='0'; p:=2; end;
for i:=p to len do
begin
data:=data+str[i];
if (compare(data,f[j-1])) then begin f[j]:=data; inc(j); data:=''; end
else if i=len then flag1:=true;
end;
flag:=true;
for i:=1 to j-1 do
if flag then begin write(f[i]); flag:=false; end else
write(',',f[i]);
if flag1 then write(data);
writeln;
end;begin
init;
main;
end.哪里错了呢?应该有多种答案的!
我知道了,不能用贪心=.=
-
02009-04-26 17:31:15@
Accepted 有效得分:100 有效耗时:2057ms
用string裸加的0... -
02009-04-19 19:56:55@
全过 0ms 去0不用考虑 可以直接把每一次的值*10加上去 很简单的样子哦 一维的real 程序: 不过有点长
var
ch:char;
m,a,next:array[0..80] of longint;
f:array[0..80] of real;
tmp,n,now:longint;
ti,b:qword;
first:boolean;
procedure w(s:longint);
begin
if s=0 then exit;
w(next);
for tmp:=(next+1) to s do write(a[tmp]);
write(',');
end;
begin
while not eoln do
begin
inc(n);
read(ch);
a[n]:=ord(ch)-48;
end;
b:=1;
for now:=1 to n do
begin
first:=true;
for tmp:=now downto 1 do
begin
ti:=ti+a[tmp]*b;
b:=b*10;
if ((m[tmp]+1)>=m[now])and((tif[tmp-1]) then
begin
first:=false;
m[now]:=m[tmp-1]+1;
f[now]:=ti;
next[now]:=tmp-1;
end;
end;
ti:=0;
b:=1;
end;
w(next[n]);
for tmp:=(next[n]+1) to n do write(a[tmp]);
end. -
02009-04-17 14:28:56@
程序跑的够慢。。。。。string真慢。
编译通过...
├ 测试数据 01:答案正确... 244ms
├ 测试数据 02:答案正确... 275ms
├ 测试数据 03:答案正确... 259ms
├ 测试数据 04:答案正确... 228ms
├ 测试数据 05:答案正确... 228ms
├ 测试数据 06:答案正确... 228ms
├ 测试数据 07:答案正确... 228ms
├ 测试数据 08:答案正确... 259ms
├ 测试数据 09:答案正确... 244ms
├ 测试数据 10:答案正确... 228ms
├ 测试数据 11:答案正确... 244ms
├ 测试数据 12:答案正确... 244ms
├ 测试数据 13:答案正确... 228ms
├ 测试数据 14:答案正确... 197ms
├ 测试数据 15:答案正确... 244ms
├ 测试数据 16:答案正确... 212ms
├ 测试数据 17:答案正确... 244ms
├ 测试数据 18:答案正确... 259ms
├ 测试数据 19:答案正确... 275ms
├ 测试数据 20:答案正确... 244ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:4812ms -
02009-04-03 13:27:53@
貌似很简单啊!
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
├ 测试数据 11:答案正确... 0ms
├ 测试数据 12:答案正确... 0ms
├ 测试数据 13:答案正确... 0ms
├ 测试数据 14:答案正确... 0ms
├ 测试数据 15:答案正确... 0ms
├ 测试数据 16:答案正确... 0ms
├ 测试数据 17:答案正确... 0ms
├ 测试数据 18:答案正确... 0ms
├ 测试数据 19:答案正确... 0ms
├ 测试数据 20:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msvar opt,ans:array[0..81,0..81] of longint;
st,tmp:string;
l,i,k,j:longint;
function Max(l1,r1,l2,r2:longint):boolean;
var i:longint; t1,t2:string;
begin
t1:=copy(st,l1,r1-l1+1); t2:=copy(st,l2,r2-l2+1);
while (t1'0') and (t1[1]='0') do delete(t1,1,1);
while (t2'0') and (t2[1]='0') do delete(t2,1,1);
if length(t1)>length(t2) then exit(true) else
if length(t2)>length(t1) then exit(false) else
for i:=1 to length(t1) do
if t1[i]>t2[i] then exit(true) else
if t2[i]>t1[i] then exit(false);
exit(false);
end;
begin
readln(st); l:=length(st);
fillchar(opt,sizeof(opt),200);
for i:=1 to l do begin opt:=1; ans:=0; end;
for i:=1 to l do
for j:=1 to i do
for k:=1 to i-j do
if Max(i-j+1,i,i-j-k+1,i-j) then
if optopt[l,j] then j:=k;
k:=l;
repeat
st:=copy(tmp,k-j+1,j)+','+st; i:=ans[k,j];
k:=k-j; j:=i;
until j=0;
delete(st,length(st),1);
writeln(st);
end. -
02009-02-15 08:49:17@
数字有时候会很大,字符转数字,装数字最好用QWORD
var
a:array[1..80]of string;
p,s:string;
t1,t2:qword;
i,j,k,l,t:longint;
function notd(h:string):boolean;
var
i:longint;
begin
for i:=1 to length(h) do if h[i]=',' then exit(false);
exit(true);
end;
begin
readln(s);
a[1]:=s[1];
for i:=2 to length(s) do
begin
a[i]:=a+s[i];
for j:=i-1 downto 1 do
begin
k:=length(a[j]);
if notd(a[j]) then
begin
p:='';
for l:=1 to length(a[j]) do p:=p+a[j][l];
val(p,t1);
end
else
begin
while (a[j][k-1]',')and(k-10) do k:=k-1;
p:='';
for l:=k to length(a[j]) do p:=p+a[j][l];
val(p,t1);
end;
p:='';
for t:=j+1 to i do p:=p+s[t];
val(p,t2);
if t1 -
02009-02-06 22:07:34@
很让人费解一道题目,建议大家先仔细看题
数字比较大小,要去零 -
02009-01-31 12:39:23@
第一次 1会变成笑脸符号 '囧;
第二次 所有前导0消失...猥琐的错误
第三次 突然编译不过 囧TZ地改啊
第四次 发现题目都被我看错我真TMD有才
├ 测试数据 01:运行时错误...|错误号: 128
├ 测试数据 02:运行时错误...|错误号: 128
├ 测试数据 03:运行时错误...|错误号: 128
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:运行时错误...|错误号: 128
├ 测试数据 06:运行时错误...|错误号: 128
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:运行时错误...|错误号: 128
├ 测试数据 10:运行时错误...|错误号: 128
├ 测试数据 11:答案正确... 0ms
├ 测试数据 12:运行时错误...|错误号: 128
├ 测试数据 13:运行时错误...|错误号: 128
├ 测试数据 14:运行时错误...|错误号: 128
├ 测试数据 15:答案正确... 0ms
├ 测试数据 16:运行时错误...|错误号: 128
├ 测试数据 17:答案正确... 0ms
├ 测试数据 18:运行时错误...|错误号: 128
├ 测试数据 19:运行时错误...|错误号: 128
├ 测试数据 20:运行时错误...|错误号: 128
囧a
最后发现是因为直接给string赋字符...猥琐啊
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
├ 测试数据 11:答案正确... 0ms
├ 测试数据 12:答案正确... 0ms
├ 测试数据 13:答案正确... 0ms
├ 测试数据 14:答案正确... 0ms
├ 测试数据 15:答案正确... 0ms
├ 测试数据 16:答案正确... 0ms
├ 测试数据 17:答案正确... 0ms
├ 测试数据 18:答案正确... 0ms
├ 测试数据 19:答案正确... 0ms
├ 测试数据 20:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms#include
#include
using namespace std;
string ins,map[81],k;
int n,i,j,h,dp[81],num[81];
int work(int w){
if(w==0) return 0;
work(num[w]);
for(j=num[w]+1;j