zoukankan      html  css  js  c++  java
  • Codeforces Round #517 (Div. 2, based on Technocup 2019 Elimination Round 2) D. Minimum path

    http://codeforces.com/contest/1072/problem/D

    bfs

    走1步的最佳状态 -> 走2步的最佳状态 -> ……

      1 #include <bits/stdc++.h>
      2 using namespace std;
      3 #define ll long long
      4 #define minv 1e-6
      5 #define inf 1e9
      6 #define pi 3.1415926536
      7 #define nl 2.7182818284
      8 const ll mod=1e9+7;//998244353
      9 const int maxn=2e3+10;
     10 
     11 struct node
     12 {
     13     int x,y;
     14 }q[maxn*2][maxn];
     15 
     16 int ci[maxn][maxn],g[maxn*2];
     17 char ch[maxn][maxn],s[maxn][maxn],str[maxn*2];
     18 
     19 int main()
     20 {
     21     int n,maxci,x,y,c,xx,yy,u,v,i,ii,j;
     22     scanf("%d%d",&n,&maxci);
     23     for (i=1;i<=n;i++)
     24         scanf("%s",s[i]+1);
     25     for (i=1;i<=n;i++)
     26         for (j=1;j<=n;j++)
     27             ch[i][j]='z'+1;
     28 
     29     g[0]=1,q[0][1].x=1,q[0][1].y=1;
     30     if (maxci==0 && s[1][1]!='a')
     31     {
     32         ci[1][1]=0;
     33         ch[1][1]=s[1][1];
     34     }
     35     else
     36     {
     37         ci[1][1]=maxci-(s[1][1]!='a');
     38         ch[1][1]='a';
     39     }
     40     printf("%c",ch[1][1]);
     41 
     42     for (i=1;i<=n+n-2;i++)
     43     {
     44         ii=i-1;
     45         for (j=1;j<=g[ii];j++)
     46         {
     47             x=q[ii][j].x;
     48             y=q[ii][j].y;
     49             c=ci[x][y];
     50             if (x!=n)
     51             {
     52                 xx=x+1;
     53                 yy=y;
     54 
     55                 if (c==0 && s[xx][yy]!='a')
     56                 {
     57                     u=0;
     58                     v=s[xx][yy];
     59                 }
     60                 else
     61                 {
     62                     u=c-(s[xx][yy]!='a');
     63                     v='a';
     64                 }
     65 
     66                 if (v<ch[xx][yy] || (v==ch[xx][yy] && u>ci[xx][yy]))
     67                     ci[xx][yy]=u,ch[xx][yy]=v;
     68             }
     69 
     70             if (y!=n)
     71             {
     72                 xx=x;
     73                 yy=y+1;
     74 
     75                 if (c==0 && s[xx][yy]!='a')
     76                 {
     77                     u=0;
     78                     v=s[xx][yy];
     79                 }
     80                 else
     81                 {
     82                     u=c-(s[xx][yy]!='a');
     83                     v='a';
     84                 }
     85 
     86                 if (v<ch[xx][yy] || (v==ch[xx][yy] && u>ci[xx][yy]))
     87                     ci[xx][yy]=u,ch[xx][yy]=v;
     88             }
     89         }
     90 
     91         v='z';
     92         for (x=1;x<=n;x++)
     93         {
     94             y=i+2-x;
     95             if (y>=1 && y<=n && ch[x][y]!='z'+1)
     96             {
     97                 if (ch[x][y]<v)
     98                 {
     99                     v=ch[x][y];
    100                     g[i]=1;
    101                     q[i][1].x=x,q[i][1].y=y;
    102                 }
    103                 else if (ch[x][y]==v)
    104                 {
    105                     g[i]++;
    106                     q[i][g[i]].x=x,q[i][g[i]].y=y;
    107                 }
    108             }
    109         }
    110         printf("%c",v);
    111     }
    112     return 0;
    113 }
  • 相关阅读:
    模拟器 waiting for debugger
    2020年春节抢票神器
    spyder crashed during last session
    D盘 自动创建 保存的图片 本机照片
    北邮 自考 数据结构 考核指导
    对无相关性的样本特征进行onehot编码
    opencv的Kmeans聚类算法应用
    adaboost详解
    ROC与AUC曲线绘制
    K近邻算法核心函数详解
  • 原文地址:https://www.cnblogs.com/cmyg/p/9829783.html
Copyright © 2011-2022 走看看