SDUT 3571 Password 暴力搜索
这个题如果裸搜肯定超时了
但是我们可以枚举,用初始串的哪一位数字去填目标串的那一位数字
这样就是暴力6!,复杂度很低,然后需要解决过程中经过的点的问题,
因为是从左向右走,所以记录当前光标,
和当前达到的最右端
所以复杂度是O(T*36*(6!)),2000w的复杂度
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <vector>
#include <cmath>
#include <queue>
#include <map>
#include <string>
using namespace std;
typedef long long LL;
const int N=1e6+;
const int INF=0x3f3f3f3f;
int vis[N][][];
int f[]= {,,,,,};
int left(int x,int p)
{
int k1=x/f[p]%;
int k2=x/f[p-]%;
return x+(k2-k1)*f[p]+(k1-k2)*f[p-];
}
int right(int x,int p)
{
return left(x,p+);
}
int judge(int x,int y,int l,int r)
{
int ret=;
for(int i=l; i<=r; ++i)
ret+=abs((x/f[i]%)-(y/f[i]%));
return ret;
}
struct Node
{
int x,p,mx,step;
Node() {}
Node(int a,int b,int c,int d)
{
x=a;
p=b;
mx=c;
step=d;
}
};
queue<Node>q;
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int s,t;
scanf("%d%d",&s,&t);
q.push(Node(s,,,));
vis[s][][]=++T;
int ans=INF;
while(!q.empty())
{
Node u=q.front();
q.pop();
if(u.step>=ans)continue;
if(u.p>)
{
Node v=u;++v.step;
--v.p;
if(vis[v.x][v.p][v.mx]!=T)
{
vis[v.x][v.p][v.mx]=T;
q.push(v);
}
}
if(u.p<)
{
Node v=u;
++v.p;++v.step;
v.mx=max(v.mx,v.p);
if(vis[v.x][v.p][v.mx]!=T)
{
vis[v.x][v.p][v.mx]=T;
if(judge(v.x,t,v.mx+,)==)
ans=min(ans,judge(v.x,t,,v.mx)+v.step);
q.push(v);
}
}
if(u.p>)
{
Node v=u;++v.step;
v.x=left(v.x,v.p);
if(vis[v.x][v.p][v.mx]!=T)
{
vis[v.x][v.p][v.mx]=T;
if(judge(v.x,t,v.mx+,)==)
ans=min(ans,judge(v.x,t,,v.mx)+v.step);
q.push(v);
}
}
if(u.p<)
{
Node v=u;++v.step;
v.x=right(v.x,v.p);
v.mx=max(v.mx,v.p+);
if(vis[v.x][v.p][v.mx]!=T)
{
vis[v.x][v.p][v.mx]=T;
if(judge(v.x,t,v.mx+,)==)
ans=min(ans,judge(v.x,t,,v.mx)+v.step);
q.push(v);
}
}
}
--T;
printf("%d\n",ans);
} return ;
}
SDUT 3571 Password 暴力搜索的更多相关文章
- ACM 暴力搜索题 题目整理
UVa 129 Krypton Factor 注意输出格式,比较坑爹. 每次要进行处理去掉容易的串,统计困难串的个数. #include<iostream> #include<vec ...
- hdu 4740 The Donkey of Gui Zhou(暴力搜索)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4740 [题意]: 森林里有一只驴和一只老虎,驴和老虎互相从来都没有见过,各自自己走过的地方不能走第二次 ...
- hdu 1427 速算24点 dfs暴力搜索
速算24点 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem De ...
- 随手练——洛谷-P1151(枚举与暴力搜索)
枚举 #include <iostream> using namespace std; int main() { ; cin >> k; ; i < ; i++) { ) ...
- 枚举进程——暴力搜索内存(Ring0)
上面说过了隐藏进程,这篇博客我们就简单描述一下暴力搜索进程. 一个进程要运行,必然会加载到内存中,断链隐藏进程只是把EPROCESS从链表上摘除了,但它还是驻留在内存中的.这样我们就有了找到它的方法. ...
- [luogu 1092] 虫食算 (暴力搜索剪枝)
传送门 Description Input 包含四行. 第一行有一个正整数 (N≤26). 后面的三行,每行有一个由大写字母组成的字符串,分别代表两个加数以及和.这3个字符串左右两端都没有空格,从高位 ...
- HDU 3131 One…Two…Five! (暴力搜索)
题目链接:pid=3131">HDU 3131 One-Two-Five! (暴力搜索) 题意:给出一串数字,要求用加,减,乘,除(5/2=2)连接(计算无优先级:5+3*6=8*6= ...
- 吴裕雄 python 机器学习——模型选择参数优化暴力搜索寻优GridSearchCV模型
import scipy from sklearn.datasets import load_digits from sklearn.metrics import classification_rep ...
- POJ 1129:Channel Allocation 四色定理+暴力搜索
Channel Allocation Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 13357 Accepted: 68 ...
随机推荐
- hdu 4111 Alice and Bob 博弈论
这里有2种方法: 方法一:求SG函数 sg[i][j]:i表示1的个数,j表示合并操作的步数. 这共有4种操作: 1.消除一个1: 2.减掉一个1: 3.合并2个1: 4.把1合并到另外不是1中. 代 ...
- yum工具介绍
当你的linux处于联网状态时,yum工具能够非常方便的在Linux上安装各种软件.补丁等等,而且最重要的一点是完全不用管包的依赖关系.只需要简单的指定你要安装的软件名称,其他工作几乎都交给yum了, ...
- AE数据加载
1. 数据加载问题: 任何系统都离不开数据的加载,下边就AE中几种常用的数据加载做一个列举.以便查阅: 1.加载个人数据库 个人数据库是保存在Access中的数据库.其加载方式有两种:通过名字和通过属 ...
- Spring AOP: Spring之面向方面编程
Spring AOP: Spring之面向方面编程 面向方面编程 (AOP) 提供从另一个角度来考虑程序结构以完善面向对象编程(OOP). 面向对象将应用程序分解成 各个层次的对象,而AOP将程序分解 ...
- muParser公式库使用简介( 转)
muParser是一个跨平台的公式解析库,它可以自定义多参数函数,自定义常量.变量及一元前缀.后缀操作符,二元操作符等,它将公式编译成字节码,所以计算起来非常快. 当前版本V1.28,官方网址http ...
- jsp获取struts2查询到的数据
1.在struts2的方法中利用查询语句查询到结果,然后再对结果进行封装,jsp根据封装获取相关信息 struts2的查询和封装方法: private List<FreeMarkerDetail ...
- nyoj-291 互素数个数 欧拉函数
LK的数学题 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 LK最近遇到一个问题,需要你帮她一下.一个整数n,求[1,n)中,和n互素的数的个数. 输入 多组测 ...
- NFC(3)Android上的NFC,开启NFC,3种NDEF数据
Android对NFC技术的支持 Android2.3.1(API Level = 9)开始支持NFC技术,但Android2.x和Android3.x对NFC的支持非常有限.而从Android4.0 ...
- BZOJ 3132 上帝造题的七分钟(二维树状数组)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=3132 题意:给出一个矩阵,两种操作:(1)将某个子矩阵的数字统一加上某个值:(2)查询某 ...
- Windows JAVA 环境配置
Java SE Development Kit Downloads http://www.oracle.com/technetwork/java/javase/overview/index.html ...