zoukankan      html  css  js  c++  java
  • 2019河北省大学生程序设计竞赛 L .smart robot

    https://ac.nowcoder.com/acm/contest/903/L

    题意就是给你n*n的数字矩阵,然后在矩阵格子里走,一个格子可以重复走,然后走过的格子里的数可以连接起来,问最小的无法得到的数是多少? 

    首先,假设1到k位数都满足条件的话,那么就有必有10^k-1<=n^2*4^(k-1),然后由不等式10^k-1>n^2*4^(k-1) 可以得到地图为n*n  时不合法数的最大位数,将n=50代入,就可以知道为8,所以最多只用dfs7层就ok了,这样复杂度最坏是2500*4^7(4e7)保证了不会t。

    #include<bits/stdc++.h>
    using namespace std;
    #define fuck(x) cout<<#x<<"     "<<x<<endl;
    set<int>st;
    set<int,int>::iterator it;
    int cnt,n,num[55][55],d[4][2]={1,0,-1,0,0,1,0,-1};
    void dfs(int x,int y,int val,int tim)
    {
        if(tim==cnt)
        {
            st.insert(val);
            return ;
        }
        int nx,ny;
        for(int i=0;i<4;i++)
        {
            nx=x+d[i][0];
            ny=y+d[i][1];
            if(nx>=1&&nx<=n&&ny>=1&&ny<=n)
                dfs(nx,ny,val*10+num[nx][ny],tim+1);
        }
    }
    
    int main()
    {
        int now;
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                scanf("%d",&(num[i][j]));
        for(cnt=0;cnt<=7;cnt++)
        {
            st.clear();
            for(int i=1;i<=n;i++)
                for(int j=1;j<=n;j++)
                    if(cnt==0)
                        dfs(i,j,num[i][j],0);
                    else
                        if(num[i][j])
                            dfs(i,j,num[i][j],0);
            if(cnt==0)
                now=0;
            else
                now=pow(10,cnt);
            for(it=st.begin();it!=st.end();it++)
                if(*it==now)
                    now++;
                else
                {
                    break;
                }
            if(now!=pow(10,cnt+1))
            {
                printf("%d
    ",now);
                return 0;
            }
        }
        return 0;
    }
    
  • 相关阅读:
    C#读取数据库字节流生成图片
    twitter通过oAuth验证获取json数据
    C#读写txt文件
    asp.net分页方法
    sql分页代码
    acm寒假特辑 1月19日 CodeForces
    acm寒假特辑 1月25日 CodeForces
    snow miku 日记
    错排问题(个人总结/复习用)
    acm寒假特辑 2月2日 HDU
  • 原文地址:https://www.cnblogs.com/eason9906/p/11754760.html
Copyright © 2011-2022 走看看