265 条题解
-
0午后奶茶 LV 8 @ 2009-10-29 19:35:18
暴力
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
广东实验中学观光团到此一游 -
02009-10-28 01:35:36@
很险就要超时了,不知牛们怎么优化,竟然能秒杀,望能不吝指教,多谢……
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 150ms
├ 测试数据 09:答案正确... 586ms
├ 测试数据 10:答案正确... 602ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:1338msvar
a:array[1..100,0..100]of longint;
f:array[1..100,0..10000]of longint;
i,j,k,l,n,num,num1:longint;
b:boolean;begin
fillchar(a,sizeof(a),0);
fillchar(f,sizeof(f),0);
readln(n);
num1:=maxint;
for i:=1 to n do
begin
j:=0;
num:=0;
a:=0;
f:=1;
while a-1 do
begin
inc(j);
read(a);
num:=num+a;
end;
a:=0;
dec(j);
num:=num+1;
a:=num;
if num=a) and (f[i,l-a]=1) then f:=1;
end;for i:=num1 downto 0 do
begin
b:=true;
for j:=1 to n do
if f[j,i]=0 then begin b:=false; break; end;
if b then begin writeln(i); halt; end;
end;
writeln('0');
end.
writeln(k);
end. -
02009-10-26 14:03:48@
谁给我个详细的题解??
-
02009-10-24 11:33:40@
#include
int main()
{
int a,b; scanf( 0;
} -
02009-10-22 19:09:41@
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 9ms
├ 测试数据 09:答案正确... 290ms
├ 测试数据 10:答案正确... 259msac两次,速度还是非常慢。。
-
02009-10-07 18:02:48@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 25ms
├ 测试数据 10:答案正确... 25ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:50ms
何以秒杀!唯有puppy! -
02009-10-04 12:17:02@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 9ms
├ 测试数据 09:答案正确... 150ms
├ 测试数据 10:答案正确... 165ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:324ms很稀有的发一个C++程序哈:
#include
using namespace std;
bool f[20000];
long g[20000];
long x,h,maxl,k,i,j,n;
int main()
{
cin>>n;
memset(f,0,sizeof(f));
f[0]=true;
for(k=1;k>x;
while(x!=-1)
{
h+=x;
for(i=h;i>=0;--i)
{
if(f[i] && !f)
{
f=true;
++g;
}
}
cin>>x;
}
for(i=h;i>=1;--i) f[i]=false;
if(h>maxl) maxl=h;
}
for(i=maxl;i>=1;--i)
{
if(g[i]==n)
{
cout -
02009-10-04 00:30:55@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 259ms
├ 测试数据 10:答案正确... 259ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:518ms稍稍改进 还是没能AC
-
02009-10-03 22:44:50@
我弱弱的问
for i:=min downto 1 do
if g[i]=n then
begin writeln(i);halt;end;
writeln(0);
这个改成
for i:=min downto 0 do
if g[i]=n then
begin writeln(i);halt;end;
怎么有一个超时啊 -
02009-09-24 18:13:14@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 88ms
├ 测试数据 10:答案正确... 103ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:191ms比较朴素,没啥优化……
-
02009-09-22 12:15:36@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:001010101ms -
02009-09-20 18:26:35@
program p1059;
var
f:array[0..20000] of boolean;
g:array[0..20000] of integer;
s,p,n,i,j,min:integer;
begin
read(n);
fillchar(g,sizeof(g),0);
fillchar(f,sizeof(f),false);
min:=32145;
for i:=1 to n do
begin
s:=0; f[0]:=true;
read(p);
while p-1 do
begin
///// for j:=s downto 0 do////十分重要,如果将downto改成to那么就错了
if f[j] and (not(f[j+p])) then begin f[j+p]:=true; inc(g[j+p]); end;
s:=s+p; read(p);
end;
if s -
02009-09-19 22:26:19@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msvar f,g:array[0..20000] of integer;
i,j,n,s,h,min:longint;
begin
fillchar(f,sizeof(f),0);
fillchar(g,sizeof(g),0);
readln(n);f[0]:=1;
min:=maxlongint;
for i:=1 to n do
begin
h:=0;read(s);
while s-1 do
begin
for j:=h downto 0 do
if (f[j]=1) and (f[j+s]=0) then
begin f[j+s]:=1;inc(g[j+s]);end;
inc(h,s);read(s);
end;
for j:=1 to h do f[j]:=0;
if h -
02009-09-17 20:01:32@
100个背包...
-
02009-09-16 23:21:58@
求解秒杀算法
-
02009-09-16 23:19:09@
用背包做
-
02009-09-15 22:31:24@
...不一定都从底部抽,N次20分
-
02009-09-12 16:54:49@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 56ms
├ 测试数据 09:答案正确... 338ms
├ 测试数据 10:答案正确... 338ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:732ms终于过了,好险啊………………
-
02009-09-12 16:41:58@
奇迹。。。。。。。。。。。。。。。。。。。
一个菜鸟居然秒杀了 积木城堡。。。。。。- -||(或许是我RP爆发了。。)
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msprogram jimu;
var a:array[1..10000000]of longint;
f,c:array[1..10001]of longint;
n,q,i,x,k,k1:longint;
begin
read(n);
for q:=1 to n do
begin
k:=0;
read(x);
fillchar(f,sizeof(f),0);
while x-1 do
begin
k1:=k;
for i:=1 to k do
if (f[a[i]+x]=0) then
begin
f[a[i]+x]:=1;
inc(k1);
a[k1]:=a[i]+x;
end;
if f[x]=0 then
begin
inc(k1);
a[k1]:=x;
f[x]:=1;
end;
k:=k1;
read(x);
end;
for i:=1 to k do
inc(c[a[i]]);
end;
for i:=10000 downto 1 do
if c[i]=n then
begin
writeln(i);
exit;
end;
writeln(0);
end. -
02009-09-06 16:52:08@
直接100个背包会超时
有一个小窍门是
定义一个 min 记录最矮的塔是多高
每一个背包只要做到f[min]就行了