• BZOJ1566 [NOI2009]管道取珠


    这是一道思维复杂度很高的DP题

    看题目,为什么是取两次序列一样呢?YY一下,其实等价于两个人一起取,最后序列一样。

    然后就水了:

    令f[i, j, k]表示取到第i个珠子,第一个人在1号管道取了j个珠子,第二个人在1号管道取了k个珠子时,他们取出的序列相等的方案数

    于是真水了!!!(方程请自行脑补或看程序呗)

    然后我那坑爹的编程能力,1个小时啊大爷的。。。

     1 /**************************************************************
     2     Problem: 1566
     3     User: rausen
     4     Language: Pascal
     5     Result: Accepted
     6     Time:11920 ms
     7     Memory:3592 kb
     8 ****************************************************************/
     9  
    10 const prime = 1024523;
    11  
    12 var
    13   s1, s2 : array[0..600] of char;
    14   m, n, i, j, k, j1, k1 : longint;
    15   p, q : longint;
    16   f : array[0..1, 0..600, 0..600] of longint;
    17  
    18 procedure reverse;
    19 var
    20   s : ansistring;
    21   i : longint;
    22  
    23 begin
    24   readln(s);
    25   for i := 1 to m do
    26     s1[m - i + 1] := s[i];
    27   readln(s);
    28   for i := 1 to n do
    29     s2[n - i + 1] := s[i];
    30 end;
    31  
    32 begin
    33   readln(m, n);
    34   reverse;
    35   f[0, 1, 1] := 1;
    36   for i := 1 to m + n + 1 do begin
    37     p := i mod 2;
    38     q := p xor 1;
    39     fillchar(f[p], sizeof(f[p]), 0);
    40     for j := 1 to m + 1 do
    41       for k := 1 to m + 1 do
    42         while f[q, j, k] >= prime do
    43           dec(f[q, j, k], prime);
    44     for j := 1 to m + 1 do
    45       for k := 1 to m + 1 do begin
    46         j1 := i - j + 1;
    47         k1 := i - k + 1;
    48         if (j1 > 0) and (k1 > 0) and (j1 <= n + 1) and (k1 <= n + 1) then begin
    49           if s1[j] = s1[k] then inc(f[p, j + 1, k + 1], f[q, j, k]);
    50           if s1[j] = s2[k1] then inc(f[p, j + 1, k], f[q, j ,k]);
    51           if s2[j1] = s1[k] then inc(f[p, j, k + 1], f[q, j ,k]);
    52           if s2[j1] = s2[k1] then inc(f[p, j, k], f[q, j, k]);
    53         end;
    54       end;
    55   end;
    56   writeln(f[q, m + 1, m + 1]);
    57 end.
    View Code

    (p.s. 上面↑是以前打的,所以还是Pascal写的)

    By Xs酱~ 转载请说明 博客地址:http://www.cnblogs.com/rausen
  • 相关阅读:
    【转】IDEA2019.1.3版本破解
    Docker部署Vue
    Docker使用
    MySql触发器
    JVM 理论基础目录(待更新,系列完全写完后会统一整理好)
    JVM 5 JAVA 垃圾回收机制
    JVM 运行时数据区:程序计数器、Java 虚拟机栈和本地方法栈,方法区、堆以及直接内存
    JVM 整体流程介绍
    JVM 入门指南
    Linux 常用命令(根据自己的理解随时更新)
  • 原文地址:https://www.cnblogs.com/rausen/p/4027484.html
Copyright © 2020-2023  润新知