HDU 5641

King‘s Phone

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 916    Accepted Submission(s): 261

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 \times 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\le k\le 9)$, the password sequence is $s_1,s_2...s_k(0\le s_{i} < 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 \le 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 $s_1,s_2...s_k$.

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\rightarrow 3$ skipped the middle point $2$, so it‘s invalid.

For test case #2:The path $1\rightarrow 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\rightarrow 1 \rightarrow 6 \rightarrow 7$ doesn‘t have any the middle point $2$, so it‘s valid.

Source

BestCoder Round #75

挂终测了  继续掉分 一回解  orzzzz 最近 太忙

题意: 给你一段序列 问是否为合法的解锁序列(模拟手机手势解锁)

满足条件 1.至少4个数字 数量为[4,9]  2.不能重复 3.不能跳跃 4.数字的范围为[1,9]

还有记得每次的初始化

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<map>
 5 #include<queue>
 6 #include<stack>
 7 #include<set>
 8 using namespace std;
 9 int t;
10 int a[10];
11 int mp[10][10];
12 map<int,int> mpp;
13 int jishu=0;
14 void init()
15 {
16     mp[1][3]=1;
17     mp[1][7]=1;
18     mp[1][9]=1;
19     mp[2][8]=1;
20     mp[3][1]=1;
21     mp[3][9]=1;
22     mp[3][7]=1;
23     mp[4][6]=1;
24     mp[6][4]=1;
25     mp[7][1]=1;
26     mp[7][9]=1;
27     mp[7][3]=1;
28     mp[8][2]=1;
29     mp[9][3]=1;
30     mp[9][7]=1;
31     mp[9][1]=1;
32 }
33 int main()
34 {
35     scanf("%d",&t);
36
37     init();
38     for(int i=1;i<=t;i++)
39     {
40          scanf("%d",&jishu);
41          memset(a,0,sizeof(a));
42          int maxn=0;
43          int flag=1;
44          for(int j=1;j<=jishu;j++)
45             {
46                 scanf("%d",&a[j]);
47                 if(a[j]>maxn)
48                     maxn=a[j];
49                 if(a[j]<=0)
50                     flag=0;
51             }
52         mpp.clear();
53         if(jishu<4||jishu>9||maxn>9||flag==0)
54             printf("invalid\n");
55         else
56         {   int re=0;
57             mpp[a[1]]=1;
58             for(int j=1;j<jishu;j++)
59             {
60                 if(mpp[a[j+1]]==0)
61                {
62                  if(mp[a[j]][a[j+1]]==0)
63                     re++;
64                 else
65                 {
66                     if(mpp[(a[j]+a[j+1])/2])
67                         re++;
68                 }
69                }
70                 mpp[a[j+1]]=1;
71
72             }
73             if(re==jishu-1)
74                 printf("valid\n");
75             else
76                 printf("invalid\n");
77         }
78     }
79     return 0;
80 }

时间: 2024-10-12 17:26:18

HDU 5641的相关文章

hdu 5641 King&#39;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

HDU 6203 ping ping ping [LCA,贪心,DFS序,BIT(树状数组)]

题目链接:[http://acm.hdu.edu.cn/showproblem.php?pid=6203] 题意 :给出一棵树,如果(a,b)路径上有坏点,那么(a,b)之间不联通,给出一些不联通的点对,然后判断最少有多少个坏点. 题解 :求每个点对的LCA,然后根据LCA的深度排序.从LCA最深的点对开始,如果a或者b点已经有点被标记了,那么continue,否者标记(a,b)LCA的子树每个顶点加1. #include<Bits/stdc++.h> using namespace std;

HDU 5542 The Battle of Chibi dp+树状数组

题目:http://acm.hdu.edu.cn/showproblem.php?pid=5542 题意:给你n个数,求其中上升子序列长度为m的个数 可以考虑用dp[i][j]表示以a[i]结尾的长度为j的上升子序列有多少 裸的dp是o(n2m) 所以需要优化 我们可以发现dp的第3维是找比它小的数,那么就可以用树状数组来找 这样就可以降低复杂度 #include<iostream> #include<cstdio> #include<cstring> #include

hdu 1207 汉诺塔II (DP+递推)

汉诺塔II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4529    Accepted Submission(s): 2231 Problem Description 经典的汉诺塔问题经常作为一个递归的经典例题存在.可能有人并不知道汉诺塔问题的典故.汉诺塔来源于印度传说的一个故事,上帝创造世界时作了三根金刚石柱子,在一根柱子上从下往

[hdu 2102]bfs+注意INF

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2102 感觉这个题非常水,结果一直WA,最后发现居然是0x3f3f3f3f不够大导致的--把INF改成INF+INF就过了. #include<bits/stdc++.h> using namespace std; bool vis[2][15][15]; char s[2][15][15]; const int INF=0x3f3f3f3f; const int fx[]={0,0,1,-1};

HDU 3555 Bomb (数位DP)

数位dp,主要用来解决统计满足某类特殊关系或有某些特点的区间内的数的个数,它是按位来进行计数统计的,可以保存子状态,速度较快.数位dp做多了后,套路基本上都差不多,关键把要保存的状态给抽象出来,保存下来. 简介: 顾名思义,所谓的数位DP就是按照数字的个,十,百,千--位数进行的DP.数位DP的题目有着非常明显的性质: 询问[l,r]的区间内,有多少的数字满足某个性质 做法根据前缀和的思想,求出[0,l-1]和[0,r]中满足性质的数的个数,然后相减即可. 算法核心: 关于数位DP,貌似写法还是

HDU 5917 Instability ramsey定理

http://acm.hdu.edu.cn/showproblem.php?pid=5917 即世界上任意6个人中,总有3个人相互认识,或互相皆不认识. 所以子集 >= 6的一定是合法的. 然后总的子集数目是2^n,减去不合法的,暴力枚举即可. 选了1个肯定不合法,2个也是,3个的话C(n, 3)枚举判断,C(n, 4), C(n, 5) #include <bits/stdc++.h> #define IOS ios::sync_with_stdio(false) using name

hdu 6166 Senior Pan

地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=6166 题目: Senior Pan Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 245    Accepted Submission(s): 71 Problem Description Senior Pan fails i

2017中国大学生程序设计竞赛 - 网络选拔赛 HDU 6155 Subsequence Count 矩阵快速幂

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6155 题意: 题解来自:http://www.cnblogs.com/iRedBean/p/7398272.html 先考虑dp求01串的不同子序列的个数. dp[i][j]表示用前i个字符组成的以j为结尾的01串个数. 如果第i个字符为0,则dp[i][0] = dp[i-1][1] + dp[i-1][0] + 1,dp[i][1] = dp[i-1][1] 如果第i个字符为1,则dp[i][1