【codeforces 19/10/26 div2】E.Rock In Push


 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 using namespace std;
 5 
 6 #define mfor(i,a,b) for(register int i=(a);i<=(b);i++)
 7 #define mrep(i,a,b) for(register int i=(a);i>=(b);i--)
 8 typedef long long int LL;
 9 
10 const int maxn = 2010;
11 const int mod = 1e9 + 7;
12 char a[maxn][maxn];
13 LL sumd[maxn][maxn];
14 LL sumr[maxn][maxn];
15 LL f[maxn][maxn][2];    //第三维0向右,1向下
16 int n, m;
17 
18 int main()
19 {
20     cin >> n >> m;
21     mfor(i, 1, n)
22     {
23         //scanf_s("%s", a[i] + 1, maxn);
24         scanf(" %s", a[i] + 1);
25     }
26     if (n == m && n == 1)
27     {
28         if (a[1][1] == '.')
29         {
30             cout << 1;
31             return 0;
32         }
33     }
34     mrep(i, n, 1)
35     {
36         mrep(j, m, 1)
37         {
38             sumd[i][j] = sumd[i][j + 1] + (a[i][j] == 'R' ? 1 : 0);
39             sumr[i][j] = sumr[i + 1][j] + (a[i][j] == 'R' ? 1 : 0);
40         }
41     }
42     mfor(i, 1, n - 1)
43     {
44         if (!sumr[i][m]) f[i][m][0] = 1;
45     }
46     mfor(i, 1, m - 1)
47     {
48         if (!sumd[n][i]) f[n][i][1] = 1;
49     }
50     mrep(i, n - 1, 1)
51     {
52         mrep(j, m - 1, 1)
53         {
54             (f[i][j][0] += f[i + 1][j][1]) %= mod;
55             (f[i][j][1] += f[i][j + 1][0]) %= mod;
56             if (a[i + 1][j] == 'R') (f[i][j][0] += f[i + 1][j][0] - f[n - sumr[i + 1][j] + 1][j][1] + mod) %= mod;
57             else (f[i][j][0] += f[i + 1][j][0]) %= mod;
58             if (a[i][j + 1] == 'R') (f[i][j][1] += f[i][j + 1][1] - f[i][m - sumd[i][j + 1] + 1][0] + mod) %= mod;
59             else (f[i][j][1] += f[i][j + 1][1]) %= mod;
60         }
61     }
62     cout << (f[1][1][0] + f[1][1][1]) % mod;
63 }
View Code

优质内容筛选与推荐>>
1、[Angular] N things you might don't know about Angular Route
2、课后作业-阅读任务-阅读笔记-3
3、总结#2----一类贪心问题
4、ClassTag 、Manifest、ClassManifest、TypeTag代码实战及其在Spark中的应用源码解析之Scala学习笔记-37
5、spring AOP使用中Error creating bean with name ‘…’defined in class path resource..问题及其解决方法


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn