• hdu 5641 King's Phone(暴力模拟题)


    Problem Description
    In a military parade, the King sees lots of new things, including an Andriod Phone. He becomes interested in the pattern lock screen.
    
    The pattern interface is a 3×3 square lattice, the three points in the first line are labeled as 1,2,3, the three points in the second line are labeled as 4,5,6, and the three points in the last line are labeled as 7,8,9。The password itself is a sequence, representing the points in chronological sequence, but you should follow the following rules:
    
    - The password contains at least four points.
    
    
    - Once a point has been passed through. It can't be passed through again.
    
    - The middle point on the path can't be skipped, unless it has been passed through(3427 is valid, but 3724 is invalid).
    
    His password has a length for a positive integer k(1≤k≤9), the password sequence is s1,s2...sk(0≤si<INT_MAX) , he wants to know whether the password is valid. Then the King throws the problem to you.
    Input
    The first line contains a number&nbsp;T(0<T≤100000), the number of the testcases.
    
    For each test case, there are only one line. the first first number&nbsp;k,represent the length of the password, then k numbers, separated by a space, representing the password sequence s1,s2...sk.
    Output
    Output exactly T lines. For each test case, print `valid` if the password is valid, otherwise print `invalid`
     
    Sample Input
    3
    4 1 3 6 2
    4 6 2 1 3
    4 8 1 6 7
     
    Sample Output
    invalid
    valid
    valid
    
    hint:
    For test case #1:The path $1
    ightarrow 3$ skipped the middle point $2$, so it's invalid.
    
    For test case #2:The path $1
    ightarrow 3$ doesn't skipped the middle point $2$, because the point 2 has been through, so it's valid.
    
    For test case #2:The path $8
    ightarrow 1 
    ightarrow 6 
    ightarrow 7$ doesn't have any the middle point $2$, so it's valid.
     
    Source

    一个简单的模拟题,首先判断序列长度是否合法,接着判断 sis_isi​​ 是否在 [1,9],最后扫一遍看看有没有重复以及跨过中间点的情况即可。

    复杂度:O(nT)

    AC代码:

      1 #pragma comment(linker, "/STACK:1024000000,1024000000")
      2 #include<iostream>
      3 #include<cstdio>
      4 #include<cstring>
      5 #include<cmath>
      6 #include<math.h>
      7 #include<algorithm>
      8 #include<queue>
      9 #include<set>
     10 #include<bitset>
     11 #include<map>
     12 #include<vector>
     13 #include<stdlib.h>
     14 #include <stack>
     15 using namespace std;
     16 #define PI acos(-1.0)
     17 #define max(a,b) (a) > (b) ? (a) : (b)
     18 #define min(a,b) (a) < (b) ? (a) : (b)
     19 #define ll long long
     20 #define eps 1e-10
     21 #define MOD 1000000007
     22 #define N 16
     23 #define inf 1e12
     24 int n;
     25 int a[N],vis[N];
     26 bool judge(int num1,int num2){
     27    if(vis[num2]) return false;
     28    vis[num2]=1;
     29    if(num1==1){
     30       if(num2==3 && vis[2]==0){
     31          return false;
     32       }
     33       if(num2==7 && vis[4]==0){
     34          return false;
     35       }
     36       if(num2==9 && vis[5]==0){
     37          return false;
     38       }
     39    }
     40    if(num1==2){
     41       if(num2==8 && vis[5]==0){
     42          return false;
     43       }
     44    }
     45    if(num1==3){
     46       if(num2==7 && vis[5]==0){
     47          return false;
     48       }
     49       if(num2==1 && vis[2]==0){
     50          return false;
     51       }
     52       if(num2==9 && vis[6]==0){
     53          return false;
     54       }
     55    }
     56    if(num1==4){
     57       if(num2==6 && vis[5]==0){
     58          return false;
     59       }
     60    }
     61    if(num1==6){
     62       if(num2==4 && vis[5]==0){
     63          return false;
     64       }
     65    }
     66    if(num1==7){
     67       if(num2==1 && vis[4]==0){
     68          return false;
     69       }
     70       if(num2==3 && vis[5]==0){
     71          return false;
     72       }
     73       if(num2==9 && vis[8]==0){
     74          return false;
     75       }
     76    }
     77    if(num1==8){
     78       if(num2==2 && vis[5]==0){
     79          return false;
     80       }
     81    }
     82    if(num1==9){
     83       if(num2==1 && vis[5]==0){
     84          return false;
     85       }
     86       if(num2==3 && vis[6]==0){
     87          return false;
     88       }
     89       if(num2==7 && vis[8]==0){
     90          return false;
     91       }
     92    }
     93 
     94    return true;
     95 }
     96 int main()
     97 {
     98    int t;
     99    scanf("%d",&t);
    100    while(t--){
    101       memset(vis,0,sizeof(vis));
    102       scanf("%d",&n);
    103       int flag=1;
    104       //int num_valid=0;
    105       for(int i=0;i<n;i++){
    106          scanf("%d",&a[i]);
    107          if(a[i]<1 || a[i]>9) flag=0;
    108       }
    109       if(flag==0){
    110          printf("invalid
    ");
    111          continue;
    112       }
    113       flag=1;
    114       for(int i=0;i<n;i++){
    115          if(vis[a[i]]){
    116             flag=0;
    117             break;
    118          }
    119          vis[a[i]]=1;
    120       }
    121       if(flag==0) {
    122          printf("invalid
    ");
    123          continue;
    124       }
    125       if(n<4) {
    126          printf("invalid
    ");
    127          continue;
    128       }
    129       memset(vis,0,sizeof(vis));
    130       vis[a[0]]=1;
    131       int ok=1;
    132       for(int i=0;i<n-1;i++){
    133          if(judge(a[i],a[i+1])==false){
    134             ok=0;
    135             break;
    136          }
    137       }
    138       if(ok) printf("valid
    ");
    139       else printf("invalid
    ");
    140    }
    141     return 0;
    142 }
    View Code
  • 相关阅读:
    Vue.js计算属性
    Vue.js列表渲染&关于列表元素的key&列表过滤与排序
    Maven入门_如何向JAR添加资源&标准目录布局的介绍(部分翻译)
    高性能分布式对象存储——MinIO实战操作(MinIO扩容)
    列式存储的分布式数据库——HBase(环境部署)
    列式存储的分布式数据库——HBase Shell与SQL实战操作(HBase Master高可用实现)
    【云原生】Kubernetes(k8s)最新版最完整版环境部署+master高可用实现(k8sV1.24.1+dashboard+harbor)
    大数据Hadoop之——HDFS小文件问题与处理实战操作
    大数据Hadoop之——Hadoop 3.3.4 HA(高可用)原理与实现(QJM)
    高性能分布式对象存储——MinIO(环境部署)
  • 原文地址:https://www.cnblogs.com/UniqueColor/p/5285511.html
Copyright © 2020-2023  润新知