zoukankan      html  css  js  c++  java
  • HD200703

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    int n,startx,starty,finx,finy,f[35][35],a[2005],b[2005],c[2005],d[2005],v[2005],dis[35][35];
    int main()
    {
        int i,j,k=1;
        scanf("%d%d%d%d%d",&n,&startx,&starty,&finx,&finy);
        memset(dis,88,sizeof(dis));
        dis[startx][starty]=0;
        int l=n*n;
        for(i=1;i<=n;i++)
            for(j=1;j<=n;j++)
                scanf("%d",&f[i][j]);
        for(i=1;i<=n;i++)
        {
            for(j=1;j<=n;j++)
            {
                if(i==n)
                {
                    if(j==n) break;
                    a[k]=i;
                    b[k]=j;
                    c[k]=i;
                    d[k]=j+1;
                    v[k++]=f[i][j+1];
                }
                else
                {
                    if(j==n)
                    {
                        a[k]=i;
                        b[k]=j;
                        c[k]=i+1;
                        d[k]=j;
                        v[k++]=f[i+1][j];
                        continue;
                    }
                    else
                    {
                        a[k]=i;
                        b[k]=j;
                        c[k]=i;
                        d[k]=j+1;
                        v[k++]=f[i][j+1];
                        a[k]=i;
                        b[k]=j;
                        c[k]=i+1;
                        d[k]=j;
                        v[k++]=f[i+1][j];
                        continue;
                    }
                }
            }
        }
        k--;
        for(i=k+1;i<=k*2;i++)
        {
            a[i]=c[i-k];
            b[i]=d[i-k];
            c[i]=a[i-k];
            d[i]=b[i-k];
            v[i]=f[c[i]][d[i]];
        }
        k*=2;
        //for(i=1;i<=k;i++) printf("%d %d %d %d %d
    ",a[i],b[i],c[i],d[i],v[i]); printf("%d",k);
        for(i=1;i<l;i++)
        {
            int check=0;
            for(j=1;j<=k;j++)
            {
                if(dis[c[j]][d[j]]>dis[a[j]][b[j]]+v[j])
                {
                    dis[c[j]][d[j]]=dis[a[j]][b[j]]+v[j];
                    check=1;
                }
            }
            if(check==0) break;
        }
        /*
        for(i=1;i<=n;i++)
        {
            for(j=1;j<=n;j++)
                printf("%d ",dis[i][j]);
            printf("
    ");
        }
        */
        printf("%d",dis[finx][finy]+f[startx][starty]);
        return 0;
    }
    HD200703排雷
    难度级别:B;            运行时间限制:1000ms; 运行空间限制:51200KB; 代码长度限制:2000000B
    试题描述
    一片战场被划分为N行N列小区域,敌我双方各占据其中一个小区域。
    根据侦察,敌人派出工兵潜入各区域(包括我方和敌方所在区域)布设了地雷。
    现我方侦察兵已经掌握了各片区域的地雷数量。为偷袭敌人,需要寻找一条从我方区域通向敌方区域并且地雷总数最少的路径,执行偷袭任务时,此路净上的地雷都需要排除。
    请你编一个名为MIN的程序,计算出偷袭路径最少需要排雷多少个。
    说明:排雷总数包括我方和敌方所在区域的地雷数。偷袭路径是由一个个区域连接而成,每个区域只能通向上、下、左、右的4个相邻区域。
    输入
    输入第一行只有一个数N,表示每行每列区域个数。1<N<30。 第二行两个数表示我方区域所在的行和列。第三行两个数表示敌方区域所在的行和列。这四个数均为不超过N的正整数。 接下去的N行中,每行有N个数,表示整个战场的地雷分布。每个区域的地雷数均是小于10000的非负整数。
    输出
    输出中只有一个数,即最小排雷数。
    输入示例
    4 2 1 3 3 1 1 1 1 2 9 8 3 8 9 4 2 1 2 3 4
    输出示例
    15

     为什么WA!!!

  • 相关阅读:
    Key-Value Memory Network
    Deep Mask Memory Network with Semantic Dependency and Context Moment for Aspect Level Sentiment Clas
    Deep Memory Network在Aspect Based Sentiment方向上的应用
    Deep Memory Network 深度记忆网络
    Self Attention 自注意力机制
    Attention基本公式及其变种
    *端策略优化算法(PPO)
    Policy Gradient 算法
    一本通 农场派对
    A
  • 原文地址:https://www.cnblogs.com/llllllpppppp/p/7718464.html
Copyright © 2011-2022 走看看