163 条题解
-
0csf LV 8 @ 2009-10-12 13:24:42
...
-
02009-10-06 14:07:49@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
沙茶题,鉴定完毕,垃圾数据........ -
02009-10-05 20:52:49@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms强烈怀疑数据弱得可怜
题目说N到40 我看连10都不到!!!
var n,k,i,j,t:integer;
s:string;
f:array[1..40,0..6]of longint;function change(x,y:integer):longint;
var i,j:integer;
begin
val(copy(s,x,y-x+1),change);
end;begin
readln(n,k);
read(s);for i:=1 to n do
f:=change(1,i);for i:=2 to n do
for j:=1 to k do
if j+1f then
f:=f[t,j-1]*change(t+1,i);write(f[n,k]);
end. -
02009-10-02 10:37:39@
秒杀 农夫山泉哦
#include
#include
int n,k;
double f[41][7];
char ch[50];
int num[50];
void fun(int,int);
main()
{
scanf ("%d %d\n",&n,&k);
gets(ch);
int len,i;
len=strlen(ch);
for (i=0;i=1)
{
s=0;
for (l=i;l>=1;l--)
{
p=num[l];
for (m=i-l+1;m>1;m--)
p*=10;
s+=p;
}
f[i][j]=s;
return;
}
if (f[i][j]!=0)
return;
for (ii=i-1;ii>=j;ii--)
{
fun(ii,j-1);
s=0;
for (l=i;l>ii;l--)
{
p=num[l];
for (m=i-l+1;m>1;m--)
p*=10;
s+=p;
}
if (f[i][j] -
02009-09-24 11:12:42@
不用高精可以吗?好水的题啊~~~~~~
-
02009-09-19 17:32:00@
蛮简单的!
-
02009-09-17 22:13:33@
编译通过...
├ 测试数据 01:答案正确... 166ms
├ 测试数据 02:答案正确... 588ms
├ 测试数据 03:答案正确... 416ms
├ 测试数据 04:答案正确... 791ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:1961ms我的脑残随机算法
随机产生80万个方案
太脑残了
比正常算法的程序还长很多 -
02009-09-17 21:55:11@
很简单的DP
f表示前i个数用j个乘号的最大值
f=max(f[k,j-1]+a[k+1,i]);
注意j>=i exit(0);
j=0 exit(a);---|---|---|---|---|---|---|---|---|--晒程序---|---|---|---|---|---|---|---|---|---|-
program p1347;
var
i,j,n,k:longint;
f:array[0..50,0..7]of longint;
a:array[0..50,0..50]of longint;
s:string;
function main(i,j:longint):longint;
var
k:longint;
begin
main:=0;
if j>=i then exit(0);
if j=0 then exit(a[1,i]);
if f-1 then exit(f);
for k:=1 to i do
if main(k,j-1)*a[k+1,i]>main then
main:=main(k,j-1)*a[k+1,i];
f:=main;
end;
begin
readln(n,k);
readln(s);
for i:=1 to n do
for j:=1 to n-i+1 do
val(copy(s,i,j),a);
for i:=0 to n do
for j:=0 to k do
f:=-1;
writeln(main(n,k));
end. -
02009-09-17 18:31:48@
居然不用高精都AC了。。
var l,k,i,j,c,code:longint; max,x:qword;
s,s1:string;
f:array[0..41,1..7]of qword;
begin
readln(l,k);
readln(s);
for i:=1 to k+1 do
for j:=i to l-k+i-1 do
begin
if i=1
then begin
s1:=' ';
s1:=copy(s,1,j);
val(s1,x,code);
f[j,i]:=x;
end
else begin
max:=0;
for c:=j-1 downto 1 do
begin
s1:=' ';
s1:=copy(s,c+1,j-c);
val(s1,x,code);
max:=f[c,i-1]*x;
if max>f[j,i] then f[j,i]:=max;
end;
end;
end;
writeln(f[l,k+1]);
end. -
02009-09-11 15:19:07@
怎么感觉是3维动归的说...
-
02009-09-08 19:37:14@
哎 我大概只有这种水题可以不看题解一次AC了
-
02009-09-06 21:55:19@
发关键代码:
int gnum(int begin,int end)
{
if(num[begin][end]==0)
{
for(int i = begin;i b?a:b;}
int dfs(int ind,int k)
{
if(k == 0) f[ind][k] = gnum(ind,N-1);
if(f[ind][k]==0)
for(int j = ind;j < N-1;++j)
f[ind][k] = max(f[ind][k],gnum(ind,j)*dfs(j+1,k-1));
return f[ind][k];
}
int main()//f[i][k] = max(num[i][j-1]*f[j][k-1]) (i N >> K >> strnum;
cout -
02009-08-28 21:00:27@
不懂啊
-
02009-08-28 07:30:53@
var
n,k,i,j,l:longint;
f:array[0..50,0..50] of longint;
s:string;
function try(i,j:longint):longint;
var l,sum:longint;
begin
sum:=0;
for l:=i to j do
sum:=sum*10+ord(s[l])-48 ;
try:=sum;
end;
begin
readln(n,k);
readln(s);
for i:=1 to n do f[0,i]:=try(1,i);
for i:=1 to k do
for j:=i+1 to n do
for l:= i to j-1 do
if f*try(l+1,j)>f
then f:=try(l+1,j)*f;
writeln(f[k,n]);
end. -
02009-08-23 17:08:30@
居然没有考虑到0T_T
-
02009-08-21 17:26:22@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0mscopy用错,改了快一个钟头…………
-
02009-08-20 11:44:14@
■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■
-
02009-08-20 00:13:53@
郁闷,数组下标开反了,超过范围不算越界么,怎么没有216错误?
不知道访问到哪里的内存了,查了半天……
高精乘法+高精大小比较 不过数据好弱……用不到高精。
-
02009-08-17 07:40:24@
var
n,k,i,j,s,l:longint;
f:array[0..50,0..50] of longint;
g:string;
function nub(i,j:longint):longint;
var ii,ss:integer;
begin
ss:=0;
for ii:=i to j do
ss:=ss*10+ord(g[ii])-48;
nub:=ss;
end;
begin
readln(n,k);
readln(g);
for i:=1 to n-k do f[0,i]:=nub(1,i);
for s:=1 to k do
for j:=s+1 to n-(k-s) do
for l:=s to j-1 do
if f -
02009-08-15 09:58:48@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
var f:array[0..6,0..40]of longint;
i,j,k,kk,n:longint;
s:array[0..300]of char;
function b(x,y:longint):longint;
var str:string;
i,ll,code:longint;
begin
str:='';
for i:=x to y do
begin
str:=str+s[i];
end;
val(str,ll,code);
b:=ll;
end;
function max(x,y:longint):longint;
begin
if x>y then max:=x else max:=y;
end;
beginread(n,k);
readln;
for i:=1 to n do
read(s[i]);
for i:=1 to n do
f[0,i]:=b(1,i);
readln;
for i:=1 to k do
for j:=i+1 to n do
for kk:=i to j do
f:=max(f,f*b(kk+1,j));
writeln(f[k,n]);
end.纪念~~~~