• 【自编题】震惊!某菜鸡竟公然出题黑自己!


    有巨佬有兴趣做一下吗?非常水的题。

    手残的stg之路(gzz.cpp/pas)

    题目背景

    有一天,菜鸡手残zx在玩绀珠传E。当她打到123的4符:梦符「刈安色的迷梦」时,由于她太手残,怎么转圈也扭不过去。无奈之下,她放了一个b。但是从这之后她好像被123缠上了,连数学考试都考了123分。为了避免被zn骂,也为了不再被123纠缠下去,她立志要扭过这张符,用实力证明自己!

    ……

    ……

    ……

    ……

    但是作为天下第一手残,她发现自己真的没法凭借自己的力量扭过去。于是她打算用计算机编程解决此问题。

    题目描述

    设这张符卡的弹幕被分成m×n的区域,每个区域有它的弹幕数量aij,自机所在的初始区域是(x,y)。手残zx只能控制自机向上下左右四个方向移动,且每次只能移动到比当前所在区域弹幕数量小的区域。已知自机从一个区域移动到另一个区域需要时间t。zx当然希望自己能扭越长时间越好。请输出她能扭的最长时间tmax。特别地,如果zx连1秒的时间都扭不下去,请输出“B”告诉她这里必须放b。

    输入文件(gzz.in)

    第一行五个数,分别是m,n,x,y,t

    第2到n+1行,每行m个数,表示aij

    输出文件(gzz.out)

    一个数tmax,表示zx最多能扭的时间。如果tmax=0,输出“B”。

    样例输入

    5 5 3 3 1

    1 2 3 4 5

    16 17 18 19 6

    15 24 25 20 7

    14 23 22 21 8

    13 12 11 10 9

    样例输出

    24

    数据范围

    对于100%的数据,1<= m,n,x,y <= 100,0 <= aij <= 10000,1<= t <= 1000

    啊啊这道题我也不太清楚我能不能过(这丫的不是你自己出的题吗

    我用的记忆化搜索dp。代码:

     1 #include<cstdio>
     2 #define zx author
     3 using namespace std;
     4 int m,n;
     5 int a[105][105];
     6 int f[105][105];
     7 int maxn(int a,int b)
     8 {
     9     if(a > b)    return a;
    10     else    return b;
    11 }
    12 int js(int x,int y)
    13 {
    14     if(f[x][y] != 0)    return f[x][y];
    15     int ans = 0;
    16     if(x + 1 <= m && a[x][y] > a[x + 1][y])    ans = maxn(ans,js(x + 1,y) + 1);
    17     if(y + 1 <= n && a[x][y] > a[x][y + 1])    ans = maxn(ans,js(x,y + 1) + 1);
    18     if(x - 1 > 0 && a[x][y] > a[x - 1][y])    ans = maxn(ans,js(x - 1,y) + 1);
    19     if(y - 1 > 0 && a[x][y] > a[x][y - 1])    ans = maxn(ans,js(x,y - 1) + 1);
    20     return f[x][y] = ans;
    21 }
    22 int main()
    23 {
    24     freopen("gzz.in","r",stdin);
    25     freopen("gzz.out","w",stdout);
    26     int x,y;
    27     int t;
    28     scanf("%d%d%d%d%d",&m,&n,&x,&y,&t);
    29     for(int i = 1;i <= m;i++){
    30         for(int j = 1;j <= n;j++){
    31             scanf("%d",&a[i][j]);
    32         }
    33     }
    34     for(int i = 1;i <= m;i++){
    35         for(int j = 1;j <= n;j++){
    36             js(i,j);
    37         }
    38     }
    39     if(js(x,y) == 0)    printf("B");
    40     else    printf("%d",js(x,y) * t);
    41     return 0;
    42 }

    自己出的题自己竟然不能确定,我真是太菜了

  • 相关阅读:
    Android自启动
    Eclipse导出Javadoc文件
    MAC 下Java Android 环境配置
    MAC 下如何切换Android模拟器的横竖屏
    程序员 需要掌握得600个英语单词
    网络编程 套接字socket 及 粘包
    网络编程 文件传输 基于UDP的socket serversocket
    网络编程 之 网络协议
    面向对象之:反射, 双下方法
    面向对象之 类的成员与异常处理
  • 原文地址:https://www.cnblogs.com/aristocrat/p/8909019.html
Copyright © 2020-2023  润新知