115 条题解
-
0破晓Daybreak LV 8 @ 2009-07-11 12:14:02
f[i]为i个坑总数。
f[i]总共可能的数目为:
f[i]=2*f 即新加一个坑可放或不放(2)*原先i-1坑的个数。这其中会爆炸的数目为:
总共i个坑(已加上新加的一个坑),【从后往前】m个坑必须放(会爆炸),【从后往前】第m+1个坑必须不放(放了i-1个坑就爆炸了),剩下的i-m-1个坑不爆炸的情况:如此绕口的情况其实就是f(最后m+i个坑已经确定了只有一种情况,只考虑前i-m-1个不爆炸的情况)。故放i个坑不爆炸的情况为2*f-f;
(转移方程f[i]=2*f-f)边界条件:
f[0]=1;
f=1(i=m时)即i个坑放i个爆炸时爆炸的情况为1。因为i-m-1=-1 -
02009-06-29 13:44:21@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
A是A了,但是动态转移方程还是没懂。。。
我要努力学习,成为真正的大
(__)
/oo\___|\__|_
\ / ---\
\/ / \ \
\|__|\_|/ *
|| YY|
|| || -
02009-06-25 17:41:21@
var f:array[0..100,0..100] of QWORD;
i,j,n,m:integer;
begin
readln(n,m);
f[1,0]:=1;
f[1,1]:=1;
for i:= 2 to n+1 do
begin
for j:= 0 to m-1 do
f:=f+f;
for j:= 1 to m-1 do
f:=f;
end;
writeln(f[n+1,0]);
end. -
02009-03-18 17:50:27@
为什么那么多?
var f:array [-5..50] Of extended;
n,m,i:integer;
begin
readln(n,m);
f[-1]:=1;f[0]:=1;
for i:=1 to n do f[i]:=2*f-f;
writeln(f[n]:0:0);
end. -
02009-03-07 13:37:19@
当i
-
02009-02-22 10:26:41@
初始化写囧了……
{————————————————————————————}
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msvar
n,m,i,j:integer;
f:array[0..51]of int64;
begin
fillchar(f,sizeof(f),0);
read(n,m);
if m=1 then begin write(1); halt; end;
if m>n then begin write(1 shl n); halt; end;
case m of
2:begin
f[2]:=3;
f[3]:=5;
end;
3:begin
f[3]:=7;
f[4]:=13;
f[5]:=24;
end;
4:begin
f[4]:=15;
f[5]:=29;
f[6]:=56;
f[7]:=108;
end;
5:begin
f[5]:=31;
f[6]:=61;
f[7]:=120;
f[8]:=236;
f[9]:=464;
end;
end;
for i:=2*m to n do
for j:=1 to m do
f[i]:=f+f[i];
writeln(f[n]);
end.Flag Accepted
题号 P1232
类型(?) 其它
通过 1018人
提交 1902次
通过率 54%
难度 2提交 讨论 题解
-
02009-02-11 23:12:30@
#include
using namespace std;main()
{
int n,m;
cin>>n>>m;
long long f[52];
memset(f,0,sizeof(f));
f[0]=1;
for (int i=1;i=i-m;j--)
if (j -
02009-02-11 09:11:19@
#include
using namespace std;
int main()
{
long long n,m;
cin>>n>>m;long long k,i,j;
long long f[100000];f[0]=1;
for(i=1;i -
02009-02-02 22:33:22@
我和你一样
我一开始写成裸搜了 -
02009-01-30 17:09:27@
终于明白为什么是i-m-1而非i-m,想了一下午- -
-
02009-01-16 20:07:09@
var
n,m,k,i,j:longint;
f:array[0..1000000]of qword;
begin
read(n,m);
f[0]:=1;
for i:=1 to n do
begin
if im then f[i]:=2*f-f;
end;
write(f[n]);
end. -
02009-05-15 14:34:45@
f代表到n个的时候,有j个核弹的情况数
分两种情况:加一个核弹,或不加
所以:
f:=f+{f}(0 -
02008-11-10 17:04:59@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms水水水 。。
-
02008-11-10 16:52:59@
program p1232;
var n,m,i,j,k:longint;
data:array[1..50,0..5] of qword;
sum:qword;
begin
readln(n,m);
fillchar(data,sizeof(data),0);
data[1,0]:=1;
data[1,1]:=1;
for i:=2 to n do
for j:=0 to m-1 do
begin
if j=0
then begin
for k:=0 to m-1 do
data:=data+data;
continue;
end;
data:=data;
end;
sum:=0;
for i:=0 to m-1 do
sum:=sum+data[n,i];
writeln(sum);
end.ssxiaobb
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02008-11-10 16:40:08@
int64....愤懑
-
02008-10-31 08:12:34@
又一道DP啊……居然还要用INT64……我晕,调试了好久,没想到问题在这里……&
-
02008-10-27 18:01:15@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms数组的类型一定要是int64,我用的longint和integer都错了
if i -
02008-10-22 12:17:43@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms我的方法很奇特
F表示枚举到第i个坑,并且包括这个坑之前共有k个连续的有物品的坑的方案数
答案是Sigmaf(f[n,k]) 0 -
02008-10-19 09:53:23@
不懂得可以去看MAIGO大牛的TJU题解
-
02008-10-15 20:46:42@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-Accepted 有效得分:100 有效耗时:0ms
强烈要求将此题类型改为 动规,,,O(2*n*m)就可以了