其他分享
首页 > 其他分享> > [补]2019nowcoder牛客第一场E、I

[补]2019nowcoder牛客第一场E、I

作者:互联网

红小豆发现第一场的可以挂出来了owo

 

E  ABBA

  当时读题之后想得很复杂,什么B前面得有n个A,A前面得有m个B,然后就睡着了(x

  补题的时候感觉确实是这么个思路,参考了官方题解楼的众位大佬写的题解,比较容易理解的思路大概是这样:

    如果当前B的数量没有比A多m个,那么仍可以继续放B;

    如果当前A的数量没有比B多n个,那么仍可以继续放A,并且与上述情况不互斥

  需要注意的地方是,如果用每次都用memset清空dp数组就会tle,只能是用多少清空多少(多次加入debuglist豪华套餐)。转移的时候要用到上一位的情况,就整个数组挪一位。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
typedef long long ll;
const int mod = 1e9 + 7;
int d[2005][2005];
int n, m;

int main()
{
    while (cin >> n >> m) {
        for (int i = 1; i <= n + m + 1; i++)
            for (int j = 1; j <= n + m + 1; j++)
                d[i][j] = 0;
        d[1][1] = 1;
        for (int i = 1; i <= n + m+1; i++)
            for (int j = 1; j <= n + m+1; j++) {
                if (j - i <= m)d[i][j] = (d[i][j] + d[i][j - 1]) % mod;
                if (i - j <= n)d[i][j] = (d[i][j] + d[i - 1][j]) % mod;
            }
        cout << d[n + m + 1][n + m + 1] << endl;
    }

    return 0;
}
E ABBA

 

I  Points Division

  参考于此:https://blog.csdn.net/u013534123/article/details/96465704

  正在魔改,研究为什么不能(能)从右上往左下扫点,尚无合理结果。。。

标签:2019nowcoder,ABBA,int,题解,long,牛客,第一场,2005,include
来源: https://www.cnblogs.com/non-/p/11254475.html