zoukankan      html  css  js  c++  java
  • JNday6-am

    T1 book
    模拟。。。。。
    10块的只能用5块的找, 20块的能用10块用十块。

    T2
    当时做的时候貌似读错题目了,当时好像很多人都
    读错了,然后就GG了,这道题的本质是括号匹配
    我们可以贪心的进行从后向前如果这个括号没有
    指定成右括号而且他是左括号合法,则标记为左
    括号 否则为右括号。跑完之后看看是否合法

    T3
    这道题的话,当时并没有足够的时间写,这道题的本质
    有一棵树,每个节点有一个括号,问从起点到终点
    是否存在一个合法的括号匹配
    Floyed
    F[i][j][k]表示从i到j能否以k的方式到达。
    K = 括号完全匹配 或者 缺少一个右括号

    T1 买书

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cmath>
    #include <cstring>
    #include <string>
    
    using namespace std;
    
    int m5, m10, m20, n, money;
    
    inline int read()
    {
        int x = 0; char c = getchar();
        while(c < '0' || c > '9') c = getchar();
        while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
        return x;
    }
    
    inline void print()
    {
        printf("NO
    ");
        exit(0);
    }
    
    int main()
    {
        freopen("book.in", "r", stdin);
        freopen("book.out", "w", stdout);
        n = read();
        for(int i = 1; i <= n; i ++)
        {
            money = read();
            if(money == 5) m5 ++;
            if(money == 10)
            {
                if(m5 >= 1) m5 --, m10 ++;
                else print();
            }
            if(money == 20)
            {
                if(m5 >= 1 && m10 >= 1) m5 --, m10--;
                else 
                    if(m5 >= 3) m5 -= 3;
                    else print();
            }
        }
        printf("YES
    ");
        return 0;
    }
    /*
    4
    5 5 10 20
    */

    T2写代码

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <cstdlib>
    using namespace std;
    const int maxn = 1000007;
    int p = 0; 
    int z[maxn],a[maxn],n,m;
    int main()
    {
      freopen("program.in","r",stdin);
      freopen("program.out","w",stdout);
      scanf("%d",&n);
      for (int i = 1; i<=n;i++)
        scanf("%d",&a[i]);
      scanf("%d",&m);
      int x;
      for (int i = 1; i<=m;i++)
      {
        scanf("%d",&x);
        if (a[x]>0) a[x] = -a[x];
      }
      for (int x = n; x>=1;x--)
      {
        if (a[x]>0) {
          if (z[p] == -a[x]) p--; 
            else { a[x] = -a[x]; p++; z[p]= a[x];}
        } else
        {
          p++;
          z[p]=a[x];
        }   
      }
      if (p==0) 
      {
        for (int i = 1; i<=n;i++)
        {
           if (a[i]>0) printf("+%d ",a[i]);
             else printf("%d ",a[i]);
            }
        }
        else printf("NO
    ");
      return 0;
    }

    T3迷宫

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <cstdlib>
    using namespace std;
    int n,m;
    int g[105][105][40],q[105*105*40][3],t,x,y,z;
    int main()
    {
      freopen("maze.in","r",stdin);
      freopen("maze.out","w",stdout);
      scanf("%d%d",&n,&m);
      memset(g,0,sizeof(g));
      t = 0;
      for (int i = 1; i<=m;i++)
      {
        scanf("%d%d%d",&x,&y,&z);
        if (z!=0) { if (z<0) z = abs(z); else z+=10; g[x][y][z] = 1; g[y][x][z] = 1;}
          else { g[x][y][z] = 1; g[y][x][z] = 1; t++; q[t][0] = x; q[t][1] = y; q[t][2] = 0; t++; q[t][0] = y; q[t][1] = x; q[t][2] = 0;}
      }
      for (int i =1; i<=n;i++) {g[i][i][0] = 1; t++; q[t][0] = i; q[t][1] = i; q[t][2] = 0;}
      for (int s = 1; s<=t;s++)
      {
         int x = q[s][0]; 
         int y = q[s][1];
         int status = q[s][2];
         if (status!=0)
         {
           for (int i = 1; i<=n;i++)
             if (g[i][x][status-10] == 1)
             {
                if (g[i][y][0] ==0)
                {
                    g[i][y][0] = 1;
                    t++;
                    q[t][0] = i; q[t][1] = y; q[t][2] = 0;
                            }
             }
             }
             else
             {
               for (int i =1; i<=n;i++)
               {
                 if (g[i][x][0] ==1 && g[i][y][0] == 0)
                 {
                    g[i][y][0] =1;
                    t++;
                    q[t][0]= i;
                    q[t][1] = y;
                    q[t][2]= 0;
                 }
                 if (g[y][i][0] == 1 && g[x][i][0] ==0)
                 {
                   g[x][i][0] = 1;
                   t++;
                   q[t][0] = x;
                   q[t][1] = i;
                   q[t][2]= 0;
                 }
                 for (int j = 1; j<=10; j ++)
                 {
                   if (g[y][i][j] == 1 && g[x][i][j+20] == 0)
                   {
                     g[x][i][j+20] = 1;
                     t++;
                     q[t][0] = x;
                     q[t][1] = i;
                     q[t][2] = j+20;
                         }
                     }
               }
             } 
      }
      int tt = 0; 
      scanf("%d",&tt);
      for (;tt;tt--)
      {
        scanf("%d%d",&x,&y);
        if (g[x][y][0] ==1) printf("YES
    "); else printf("NO
    ");
      } 
    }
  • 相关阅读:
    rancher2.x添加node的坑。
    k8s相关端口表-以及周边工具
    基于Helm和Operator的K8S应用管理的分享
    iptables -F 与 -X 区别
    ansible批量免秘登录
    keepalived工作原理和配置说明
    k8s使用nfs动态存储(已测试成功)
    ansible-playbook快速入门填坑
    Service Account和其secrets 作用和场景,看了不亏。。
    kubectl管理多个k8s集群
  • 原文地址:https://www.cnblogs.com/lyqlyq/p/7774500.html
Copyright © 2011-2022 走看看