2018/7/31-zznu-oj-问题 F: 手机密码--【裸dfs+for循环即可!——据说三个小时内只有两个人读完了题意并轻松AC了】
问题 F: 手机密码
时间限制: 1 Sec 内存限制: 128 MB
提交: 41 解决: 23
[提交] [状态] [讨论版] [命题人:admin]
题目描述 手机安全问题是大家经常关心的一个问题。
在生物解锁没有出现之前,人们通常有两种方式设置手机密码:九宫格密码和数字密码。
我们先来简化一下这两种密码的格式:
对于九宫格密码:
.至少连接4个以上不同的圆点。
.只能连接相邻(八方向)的圆点,且每个圆点只能通过一次。
.密码的长度定义为经过的圆点数。
对于数字密码:
.至少含有四个数字。
.密码长度定义为字符数。
现在,我们来尝试用枚举来破解这两种密码,当然我们可以提前获知一些消息:
.你可以通过观察对方解锁手机所用的时长,大致推断出对方的密码长度,
.在通常情况下,我们可以很轻松的得到密码第一位的信息,因为它最常被触碰比较油腻。而后,你来计算一下,对于这两种密码,最差我们需要枚举多少次,才能解开这组密码。 输入 出入包含四个整数n,a,x,y,
正整数n代表密码长度,
整数a代表数字密码的一位,
正整数(x,y),代表九宫格密码第一个经过的圆点的坐标
输入已EOF结束 输出 输出包含两个正整数,分别代表最差尝试几次可以破解九宫格密码,和数字密码 样例输入 样例输出 提示 九宫格密码的左上角坐标为(,)
思路:
有点长的题目,裸DFS,暴力一遍OK!
题解代码:
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<string>
#include<vector>
#include<algorithm>
#define ll long long
using namespace std;
#define N 10000
#define ll long long
int mp[][];//(1,1)--(3,3)
int ans1;
int dir[][]={ {,},{,},{,-},{-,},{,-},
{,},{-,},{-,-} };
int vis[][];
int n;
void dfs(int x,int y,int step){
if(step==n)
{
ans1++;return ;
}
for(int i=;i<=;i++){
int dx,dy;
dx=x+dir[i][];
dy=y+dir[i][];
if(dx>=&&dy>=&&dx<=&&dy<=&&!vis[dx][dy]){
vis[dx][dy]=;
dfs(dx,dy,step+);
vis[dx][dy]=;
}
} }
int main()
{
int beg,x,y;
while(scanf("%d%d%d%d",&n,&beg,&x,&y)!=EOF){
ans1=;
ll ans2=;
memset(vis,,sizeof(vis)); vis[x][y]=;
dfs(x,y,); for(int i=;i<=n;i++)
ans2*=; printf("%d %lld\n",ans1,ans2);
} return ;
}
题意不可怕,可怕的是盲目追榜单233~~
2018/7/31-zznu-oj-问题 F: 手机密码--【裸dfs+for循环即可!——据说三个小时内只有两个人读完了题意并轻松AC了】的更多相关文章
- 九度OJ 1079:手机键盘 (翻译)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2279 解决:1233 题目描述: 按照手机键盘输入字母的方式,计算所花费的时间 如:a,b,c都在"1"键上,输入a只 ...
- iOS 添加手机密码、指纹进行安全验证
为APP添加安全验证 1.导入头文件 #import <LocalAuthentication/LocalAuthentication.h> 2.添加手机密码验证 //创建安全验证对象 L ...
- 洛谷 U6850 手机密码
U6850 手机密码 题目背景 小明的手机上设了一个由四个数字组成的密码,但是小明自己的记性不好,但又不想把密码直接记在纸上,于是便想了一个方法. 题目描述 小明有四行数字,每行数字都有n[i](&l ...
- codeforces div2_603 F. Economic Difficulties(树dfs预处理+dp)
题目连接:http://codeforces.com/contest/1263/problem/F 题意:有n个设备,上和下分别连接着一颗树,上下两棵树每棵树的叶子节点连接一个设备,两棵树的根节点都是 ...
- 2018/03/31 每日一个Linux命令 之 date
date 命令主要用于查看和修改时间和时区 -- 这里主要学习基本的查看和设置时间和时区的方法. 直接显示日期 date '+%D' 效果 vagrant@hong:~$ date '+%D' 03/ ...
- 2018 Multi-University Training Contest 3 Problem F. Grab The Tree 【YY+BFS】
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6324 Problem F. Grab The Tree Time Limit: 2000/1000 MS ...
- 2018.12.31 bzoj4001: [TJOI2015]概率论(生成函数)
传送门 生成函数好题. 题意简述:求nnn个点的树的叶子数期望值. 思路: 考虑fnf_nfn表示nnn个节点的树的数量. 所以有递推式f0=1,fn=∑i=0n−1fifn−1−i(n>0) ...
- 2018.12.31 NOIP训练 偶数个5(简单数论)
传送门 对于出题人zxyoizxyoizxyoi先%\%%为敬题目需要龟速乘差评. 题意简述:5e55e55e5组数据,给出n,请你求出所有n位数中有偶数个5的有多少,n≤1e18n\le1e18n≤ ...
- 2018.12.31 bzoj3771: Triple(生成函数+fft+容斥原理)
传送门 生成函数经典题. 题意简述:给出nnn个数,可以从中选1/2/31/2/31/2/3个,问所有可能的和对应的方案数. 思路: 令A(x),B(x),C(x)A(x),B(x),C(x)A(x) ...
随机推荐
- 酒店移动端入住离店日期选择demo(转)
原作者:http://blog.csdn.net/cj14227/article/details/65629737 效果图: demo 代码: <!DOCTYPE html> <ht ...
- rewrite重写基础实列
nginx 重写 rewrite 基础及实例 nginx rewrite 正则表达式匹配 大小写匹配 ~ 为区分大小写匹配 ~* 为不区分大小写匹配 !~和!~*分别为区分大小写不匹配及不区分大小写不 ...
- Asp.Net Core中的角色
在前面介绍中我们知道了Asp.Net Core Identity中创建用户使用到的类UserManager<IdentityUser>,同样的,创建角色我们需要使用RoleManager& ...
- 迷惑性很强的crontab
提到定时任务,我们通常会想起linux的crontab,可以说服务器端大部分定时任务都是由它完成的.这东西固然耗用,但是坑也不少. 这不,昨天我在部署一个备份任务的时候,就不幸踩坑了.差点酿成 ...
- Java 面试 - 打印九九乘法口诀表
在Java面试过程中, 面试者经常会被要求手写代码或上机操作.一般来说,手写代码或上机操作,主要还是考察面试者的分析问题和解决问题的能力.打印九九乘法口诀无疑是非常基础的,那么如何实现呢?首先我们先来 ...
- Python 日志文件处理
今天想把 Python 项目中的日志 保存到文件中. 找到了方法.非常简单 https://www.cnblogs.com/nancyzhu/p/8551506.html 1. logging.bas ...
- [转帖]超能课堂(199) 接口渐趋统一,USB4又如何能引领变革?
https://www.expreview.com/70414.html 接口协议真复杂.. 9月3日,USB IF正式公布了USB4(你没看错,就是USB4,没有空格)的技术规格.USB-IF表示, ...
- 多线程-Task、await/async
Task创建无返回值 Task是.netframwork4.0重新分装的多线程类.原因以前的多线程(thread threadpool)不好用.(.net framwork也是的发展的,现在的EF,刚 ...
- C/C++内存知识(一)
一.C/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)- 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈. 2.堆区(heap)- 由程序 ...
- MongoDB 聚合函数及排序
聚合函数 最大值 $max db.mycol.aggregate([{$group : {_id : "$by_user", num_max : {$max: "$li ...