这个题如果裸搜肯定超时了

但是我们可以枚举,用初始串的哪一位数字去填目标串的那一位数字

这样就是暴力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 暴力搜索的更多相关文章

  1. ACM 暴力搜索题 题目整理

    UVa 129 Krypton Factor 注意输出格式,比较坑爹. 每次要进行处理去掉容易的串,统计困难串的个数. #include<iostream> #include<vec ...

  2. hdu 4740 The Donkey of Gui Zhou(暴力搜索)

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4740 [题意]: 森林里有一只驴和一只老虎,驴和老虎互相从来都没有见过,各自自己走过的地方不能走第二次 ...

  3. hdu 1427 速算24点 dfs暴力搜索

    速算24点 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Problem De ...

  4. 随手练——洛谷-P1151(枚举与暴力搜索)

    枚举 #include <iostream> using namespace std; int main() { ; cin >> k; ; i < ; i++) { ) ...

  5. 枚举进程——暴力搜索内存(Ring0)

    上面说过了隐藏进程,这篇博客我们就简单描述一下暴力搜索进程. 一个进程要运行,必然会加载到内存中,断链隐藏进程只是把EPROCESS从链表上摘除了,但它还是驻留在内存中的.这样我们就有了找到它的方法. ...

  6. [luogu 1092] 虫食算 (暴力搜索剪枝)

    传送门 Description Input 包含四行. 第一行有一个正整数 (N≤26). 后面的三行,每行有一个由大写字母组成的字符串,分别代表两个加数以及和.这3个字符串左右两端都没有空格,从高位 ...

  7. HDU 3131 One…Two…Five! (暴力搜索)

    题目链接:pid=3131">HDU 3131 One-Two-Five! (暴力搜索) 题意:给出一串数字,要求用加,减,乘,除(5/2=2)连接(计算无优先级:5+3*6=8*6= ...

  8. 吴裕雄 python 机器学习——模型选择参数优化暴力搜索寻优GridSearchCV模型

    import scipy from sklearn.datasets import load_digits from sklearn.metrics import classification_rep ...

  9. POJ 1129:Channel Allocation 四色定理+暴力搜索

    Channel Allocation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 13357   Accepted: 68 ...

随机推荐

  1. lintcode :Longest Palindromic Substring 最长回文子串

    题目 最长回文子串 给出一个字符串(假设长度最长为1000),求出它的最长回文子串,你可以假定只有一个满足条件的最长回文串. 样例 给出字符串 "abcdzdcab",它的最长回文 ...

  2. compiler 学习

    一款强大的编译器LLVM:http://llvm.org/docs/GettingStarted.html#layout http://llvm.org/docs/LangRef.html http: ...

  3. Java学习笔记之:Java的变量

    一.介绍 在Java语言中,所有的变量在使用前必须声明.声明变量的基本格式如下: type identifier [ = value][, identifier [= value] ...] ; 格式 ...

  4. KDE/QT与GNOME/GTK比较

    转自:http://linux.chinaunix.net/bbs/thread-1125240-1-1.html 虽然在商业方面存在竞争,GNOME与KDE两大阵营的开发者关系并没有变得更糟,相反他 ...

  5. 排序 归并排序&逆序对

    void MergeArray(int cry[],int temp[],int begin,int middle,int end) { int i=begin; int j=middle+1; in ...

  6. Android Activity形象描述

    Activity就是形象的说就是一个容器,在里面放置各种控件(按钮,文本,复选框等),就形成了软件的界面~ Activity是可见的,如果不加任何控件的话,那么就像Windows中的空白窗体一样 通过 ...

  7. 异常:Caused by: java.lang.NoClassDefFoundError: Could not initialize class net.sf.log4jdbc.Properties

    参考文章: 使用Log4jdbc-log4j2监听MyBatis中运行的SQL和Connection 使用 log4jdbc格式化输出SQL,maven配置如下: <dependency> ...

  8. git stash 暂存当前修改

    当我们在开发项目的时候,突然来一个变更需要修改,我们除了将当前项目提交(commit)后切换(checkout) 到其他分支外,我们还可以先将当前的修改暂存(stash)起来,然后再切换(checko ...

  9. Java关键字static、final使用小结

    static  1. static变量     按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量:另一种是没有被static修饰的变量,叫实例变量.两者的 ...

  10. hdu 4941 Magical Forest ( 双重map )

    题目链接 题意: 有一个n*m的田地,里边有k棵树,每棵树的位置为(xi,yi),含有能量值ci.之后又q个询问,分三种; 1)1 a b,将a行和b行交换 2)2 a b,将a列和b列交换 3)3 ...