NC16735(网格图 )

感受

思路






#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
const int mod = 1e9 + 7;
struct node{
    int dfn;
    int val;
}f[2][205][205][5];
int dx[] = {-1, 1, 0, 0, 0};
int dy[] = {0, 0, -1, 1, 0};
int n, m, t, x1, yy, d, x2, y2;
int my_abs(int x){
    return x < 0 ? -x : x;
}
bool check(int x, int y){
    return my_abs(x - x1) <= d && my_abs(y - yy) <= d;
}
void solve(int oo, int x, int y, int k, int dfn, int o, int lx, int ly, int lk){
    if(f[oo][x][y][k].dfn == dfn){
        f[oo][x][y][k].val += f[o][lx][ly][lk].val;
        f[oo][x][y][k].val %= mod;
    }
    else{
        f[oo][x][y][k].dfn = dfn;
        f[oo][x][y][k].val = f[o][lx][ly][lk].val;
    }
}
int main(){
    scanf("%d%d%d%d%d%d%d%d", &n, &m, &t, &x1, &yy, &d, &x2, &y2);
    f[0][1][1][4] = (node){0, 1};
    int o = 0;
    for(int i = 0; i < t; i++, o ^= 1){
        for(int x = 1; x <= n; x++){
            for(int y = 1; y <= m; y++){
                for(int k = 0; k <= 4; k++){
                    int nx, ny, oo = o ^ 1;
                    if(k != 4 && check(x, y)){
                        if(f[o][x][y][k].dfn == i){
                            solve(oo, x, y, 4, i + 1, o, x, y, k);
                            nx = x + dx[k]; ny = y + dy[k];
                            solve(oo, nx, ny, k, i + 1, o, x, y, k);
                        }
                    }
                    else{
                        if(f[o][x][y][k].dfn == i){
                            for(int dir = 0; dir <= 4; dir++){
                                nx = x + dx[dir]; ny = y + dy[dir];
                                solve(oo, nx, ny, dir, i + 1, o, x, y, k);
                            }
                        }

                    }
                }
            }
        }
    }
    int ans = 0;
    for(int i = 0; i <= 4; i++){
        if(f[o][x2][y2][i].dfn == t){
            ans += f[o][x2][y2][i].val; ans %= mod;
        }
    }
    printf("%d\n", ans);
    return 0;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
12-12 18:59
真的没找到工作感觉要死了,上班之后真的死了。&nbsp;每天都在熬日子,从起床就开始下班倒计时,下班以后超市买趟菜回家做饭洗碗就快十点,洗澡洗漱十一点,然后舍不得睡就熬夜,第二天继续熬,熬到周末浅浅活两天,每个月的奔头也就是发工资的时候,但后来发完工资就要交房租,每个月零零碎碎根本存不下什么钱。&nbsp;回家以后累到连短视频都不想刷,更别提看书了。一遍又一遍从以前喜欢的番和剧里寻求安全感。&nbsp;如果我读书的时候知道我的未来是这样的,可能根本撑不过高考。&nbsp;已经认清了上班不能追求意义,追求价值感,但上班起码也不能对我造成伤害吧?精神和身体双重摧残,赚的钱还不够去医院看病的。&nbsp;既不喜欢现状,又不敢在现在的环境下辞职。我就...
程序员辰星:985本硕,大厂工作6年了,从微信到360到蚂蚁,履历还算不错的情况下,还是每天在焦虑,农村出来,一拖四,没办法,睁眼就是想办法挣钱,每天早8晚11,除了上班,还在精进技术(也许只是给自己心里安慰),以及尝试带徒找工作,价格拉到教初中生价格了,还被认为在割韭菜,难绷😕。欣慰的家里氛围不错,父母在身边,今年添了一个乖女儿,每次下班看到她的笑容觉得都值了。偶尔看看大冰老师的书和直播,会发现比我们难的人太多太多了,努力活着的同时想想幸福的时刻,比如你做饭的过程,享受美食的快乐。最后,找个爱你的女朋友,结婚生子,辅育下一代,这是中国人最朴实的幸福。 不扯了,换尿不湿去了
点赞 评论 收藏
分享
挣K存W养DOG:入职送金条全球游,路过缅甸停一下🐔
点赞 评论 收藏
分享
牛客101244697号:这个衣服和发型不去投偶像练习生?
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务