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
- 
  0@ 2009-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|
 || ||
- 
  0@ 2009-06-25 17:41:21var 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.
- 
  0@ 2009-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.
- 
  0@ 2009-03-07 13:37:19当i 
- 
  0@ 2009-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提交 讨论 题解 
- 
  0@ 2009-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
- 
  0@ 2009-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
- 
  0@ 2009-02-02 22:33:22我和你一样 
 我一开始写成裸搜了
- 
  0@ 2009-01-30 17:09:27终于明白为什么是i-m-1而非i-m,想了一下午- - 
- 
  0@ 2009-01-16 20:07:09var 
 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.
- 
  0@ 2009-05-15 14:34:45f代表到n个的时候,有j个核弹的情况数 
 分两种情况:加一个核弹,或不加
 所以:
 f:=f+{f}(0
- 
  0@ 2008-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水水水 。。 
- 
  0@ 2008-11-10 16:52:59program 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
- 
  0@ 2008-11-10 16:40:08int64....愤懑 
- 
  0@ 2008-10-31 08:12:34又一道DP啊……居然还要用INT64……我晕,调试了好久,没想到问题在这里……& 
- 
  0@ 2008-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
- 
  0@ 2008-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
- 
  0@ 2008-10-19 09:53:23不懂得可以去看MAIGO大牛的TJU题解 
- 
  0@ 2008-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)就可以了