HDU 5641 King's Phone 模拟
King's Phone
题目连接:
http://acm.hdu.edu.cn/showproblem.php?pid=5641
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 T(0<T≤100000), the number of the testcases.
For each test case, there are only one line. the first first number 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\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.
Hint
题意
手机锁屏
3*3的格子,需要满足下列四个条件:
1.至少4位密码
2.数字没有重复出现
3.经过的位置之间的数字不能跳过,除非之前经过过。
给你一个串序列,问你是否合法。
题解:
模拟题。
有坑,注意每个数是[0,inf)的……
至少四位数。
注意这些,然后瞎写写就好了。
代码
#include<stdio.h>
#include<algorithm>
#include<iostream>
#include<math.h>
#include<cstring>
using namespace std;
int a[30];
int vis[30];
int check(int x , int y){
if( x > y ) swap( x , y );
if( x == 1 && y == 3) return 2;
else if( x == 1 && y == 7) return 4;
else if( x == 1 && y == 9) return 5;
else if( x == 2 && y == 8) return 5;
else if( x == 3 && y == 9) return 6;
else if( x == 3 && y == 7) return 5;
else if( x == 4 && y == 6) return 5;
else if( x == 7 && y == 9) return 8;
return -1;
}
void solve()
{
int flag = 0;
int n;scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
if(n<4||n>9)
{
printf("invalid\n");
return;
}
for(int i=1;i<=n;i++)
if(a[i]<=0||a[i]>9)
{
printf("invalid\n");
return;
}
memset(vis,0,sizeof(vis));
for(int i=1;i<=n;i++)
{
if(vis[a[i]])
{
printf("invalid\n");
return;
}
vis[a[i]]++;
}
memset(vis,0,sizeof(vis));
for(int i=1;i<n;i++)
{
vis[a[i]]=1;
int p = check(a[i],a[i+1]);
if(p!=-1&&vis[p]==0)
{
printf("invalid\n");
return;
}
}
printf("valid\n");
return;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)solve();
return 0;
}
HDU 5641 King's Phone 模拟的更多相关文章
- hdu 5641 King's Phone(暴力模拟题)
Problem Description In a military parade, the King sees lots of new things, including an Andriod Pho ...
- HDU 5641 King's Phone【模拟】
题意: 给定一串密码, 判断是否合法. 长度不小于4 不能重复经过任何点 不能跳过中间点,除非中间点已经经过一次. 分析: 3*3直接记录出可能出现在两点之间的点,直接模拟就好. 注意审题,别漏了判断 ...
- hdu 5641 King's Phone
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5641 题目类型:水题 题目思路:将点x到点y所需要跨过的点存入mark[x][y]中(无需跨过其它点存 ...
- hdu 5641 BestCoder Round #75
King's Phone Accepts: 310 Submissions: 2980 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...
- HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011亚洲北京赛区网络赛)
HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011 亚洲北京赛区网络赛题目) Eliminate Witches! Time Limit: 2000/1000 ...
- hdu 5640 King's Cake(模拟)
Problem Description It is the king's birthday before the military parade . The ministers prepared ...
- HDU 5640 King's Cake【模拟】
题意: 给定长方形,每次从中切去一个最大的正方形,问最终可以得到多少正方形. 分析: 过程类似求gcd,每次减去最小的边即可. 代码: #include <cstdio> #include ...
- POJ 3344 & HDU 2414 Chessboard Dance(模拟)
题目链接: PKU:http://poj.org/problem? id=3344 HDU:http://acm.hdu.edu.cn/showproblem.php?pid=2414 Descrip ...
- HDU 5948 Thickest Burger 【模拟】 (2016ACM/ICPC亚洲区沈阳站)
Thickest Burger Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
随机推荐
- http介绍
1.http特点: 1>简单快捷: 2>灵活: 3>支持客户端.服务器结构: 4>无连接----无连接的含义是限制每次连接只处理一个请求: 5>无状态----无状态是指协 ...
- 高通msm mdm 总结
1. svn 获取工程代码命令:svn co svn+ssh://10.20.30.18/svn-repos/msm8916/branches/LA1.1-CS-r113502.2 2. 如何确定那些 ...
- 安装ssh-keygen
转载自:http://www.daoan.com/forums/index.php?forumid=5&mods=topicdisplay&postid=4 sudo apt-get ...
- java的loadrunner脚本案例
/* * LoadRunner Java script. (Build: 670) * * ״̬£º²¢·¢²âÊÔͨ¹ý * ²âÊÔÈË£ºÕÔС±ò * ÈÕÆÚ£º2013-09-2 ...
- idea关于断点的补充
黑背景版: 先编译好要调试的程序.1.设置断点
- 学习笔记----float后不与前面元素同行解决办法。
<li>文本<span> 16-08-17</span></li> 当非float的元素和float的元素在一起的时候(如上代码), 如果非float元 ...
- Reverse Nodes in k-Group——简单的指针问题
Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. If ...
- STL中stack/queue/map以及Boost unordered_map 的使用方法
一.stackstack 模板类的定义在<stack>头文件中.stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要的,在不指定容器类型时,默认的容器类型 ...
- GUC-3 模拟CAS算法
/* * 模拟 CAS 算法 */ public class TestCompareAndSwap { public static void main(String[] args) { final C ...
- 解析Excel
package com.jpcar.utils; import java.io.File; import java.io.FileInputStream; import java.io.IOExcep ...