问题标题: 1650怎么超时了,怎么用动态规划

0
0
已解决
陆麟瑞
陆麟瑞
资深天翼
资深天翼

var
s:ansistring;
i,j,ans:longint;
a:array[0..500000]of longint;
begin
readln(s);
for i:=1 to length(s) do
if(s[i]='G') then a[i]:=a[i-1]+1
else a[i]:=a[i-1]-1;
i:=2;
repeat
    for j:=1 to length(s)-i+1 do
    if(a[j+i-1]-a[j-1]=0)and(i>ans) then
    begin
        ans:=i;
    end;
    i:=i+2;
until i>length(s);
writeln(ans);
end.

http://judge.codingtang.com/problem/1650/


0
0
0
0
张睿杰
张睿杰
初级天翼
初级天翼

 

要在C++代码中表示一个数字,直接书写数字即可,如:123、34.23、-34.34等。由于电脑并非以数字为基础而导致了前面数字的分类,为了在代码中表现出来,C++提供了一系列的后缀进行表示,如下:

  u或U 表示数字是无符号整型数,如:123u,但并不说明是长整型还是短整型 

  l或L 表示数字是长整型数,如:123l;而123ul就是无符号长整型数;而34.4l就是长双精度浮点数,等效于双精度浮点数 

  i64或I64 表示数字是长长整型数,其是为64位操作系统定义的,长度比长整型数长。如:43i64 

  f或F 表示数字是单精度浮点数,如:12.3f 

  e或E 表示数字的次幂,如:34.4e-2就是0.344;0.2544e3f表示一个单精度浮点数,值为254.4 

  当什么后缀都没写时,则根据有无小数点及位数来决定其具体类型,如:123表示的是有符号整型数,而12341434则是有符号长整型数;而34.43表示双精度浮点数。 

  为什么要搞这么多事出来,还分什么有符号无符号之类的?这全是因为电脑并非基于数字的,而是基于状态的,详情在下篇中将详细说明。

  作为科学计算,可能经常会碰到使用非十进制数字,如16进制、8进制等,C++也为此提供了一些前缀以进行支持。

  在数字前面加上0x或0X表示这个数字是16进制表示的,如:0xF3Fa、0x11cF。而在前面加一个0则表示这个数字是用8进制表示的,如:0347,变为十进制数就为231。但16进制和8进制都不能用于表示浮点数,只能表示整型数,即0x34.343是错误的。

0
0
王星河
王星河
资深光能
资深光能

@陆麟瑞 

 树状数组不行吗?

0
陆麟瑞
陆麟瑞
资深天翼
资深天翼

我是蒟蒻啊,不会用线段数组啊

0
0
0
陆麟瑞
陆麟瑞
资深天翼
资深天翼

前缀和怎么写 @王星河

0
0
我要回答