这个BFS并不是很好想。。 最主要的一点是每个余数只会被拿出来一次更新其他余数, 然后我用d[ i ]表示

到达 i 这个余数最短需要多长,然后从高位往低位贪心,判断成立的时候忘记了如果0被ban掉了这个判断会

出问题,都想到这里了为什么没有想到直接去bfs找答案呢??? 我TM蠢爆。

#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define PII pair<int, int>
using namespace std; const int N = 2e5 + ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 + ; int n, m, tot, vis[N], from[N], who[N], ans[N];
bool is[];
void init() {
tot = ;
memset(vis, , sizeof(vis));
memset(is, , sizeof(is));
}
int main() {
int cas = ;
while(scanf("%d%d", &n, &m) != EOF) {
init();
for(int i = ; i <= m; i++) {
int x; scanf("%d", &x);
is[x] = true;
}
queue<int> que;
for(int i = ; i < ; i++) {
if(is[i]) continue;
if(i%n==) {
ans[tot++] = i;
break;
}
vis[i%n] = ;
from[i%n] = ;
who[i%n] = i;
que.push(i%n);
}
if(!tot) {
while(!que.empty() && !tot) {
int u = que.front(); que.pop();
for(int i = ; i < ; i++) {
if(is[i]) continue;
int v = (u*+i)%n;
if(!v) {
ans[tot++] = i;
while(u) {
ans[tot++] = who[u];
u = from[u];
}
reverse(ans, ans + tot);
break;
}
if(vis[v]) continue;
vis[v] = vis[u] + ;
from[v] = u;
who[v] = i;
que.push(v);
}
}
}
printf("Case %d: ", cas++);
if(!tot) puts("-1");
else {
for(int i = ; i < tot; i++)
printf("%d", ans[i]);
puts("");
}
}
return ;
} /*
*/

HDU - 4474 bfs好题的更多相关文章

  1. Saving Princess claire_(hdu 4308 bfs模板题)

    http://acm.hdu.edu.cn/showproblem.php?pid=4308 Saving Princess claire_ Time Limit: 2000/1000 MS (Jav ...

  2. POJ 3984 - 迷宫问题 - [BFS水题]

    题目链接:http://poj.org/problem?id=3984 Description 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, ...

  3. BFS简单题套路_Codevs 1215 迷宫

    BFS 简单题套路 1. 遇到迷宫之类的简单题,有什么行走方向的,先写下面的 声明 ; struct Status { int r, c; Status(, ) : r(r), c(c) {} // ...

  4. POJ-2251 Dungeon Master (BFS模板题)

    You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is composed of un ...

  5. hdu 4531 bfs(略难)

    题目链接:点我 第一次不太清楚怎么判重,现在懂了,等下次再做 /* *HDU 4531 *BFS *注意判重 */ #include <stdio.h> #include <stri ...

  6. HDU 4474 Yet Another Multiple Problem【2012成都regional K题】 【BFS+一个判断技巧】

    Yet Another Multiple Problem Time Limit: 40000/20000 MS (Java/Others)    Memory Limit: 65536/65536 K ...

  7. hdu 4474 大整数取模+bfs

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4474 (a*10+b)%c = ((a%c)*10+b%c)%c; 然后从高位开始枚举能填的数字填充, ...

  8. HDU 1312 (BFS搜索模板题)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1312 题目大意:问迷宫中有多少个点被访问. 解题思路: DFS肯定能水过去的.这里就拍了一下BFS. ...

  9. HDU 4474 Yet Another Multiple Problem ( BFS + 同余剪枝 )

    没什么巧办法,直接搜就行. 用余数作为每个节点的哈希值. #include <cstdio> #include <cstring> #include <cstdlib&g ...

随机推荐

  1. Object-C使用类静态方法创建对象时容易内存泄露

    1.所谓使用类的静态方法创建对象,就是指使用类名调用一次它的静态方法(非显式调用alloc)便可以得到一个新建的对象,比如下面两个例子: NSString* str1 = [NSString stri ...

  2. mongo转换副本集

    本文介绍如何把独立的mongo实例转换成包含3个成员的副本集.开发和测试使用独立实例,生产使用副本集.如何安装独立的mongo实例本文不再赘述. 如果在部署副本集时还没有安装mongo实例,可以查看部 ...

  3. CF&&CC百套计划3 Codeforces Round #204 (Div. 1) E. Jeff and Permutation

    http://codeforces.com/contest/351/problem/E 题意: 给出一些数,可以改变任意数的正负,使序列的逆序对数量最少 因为可以任意加负号,所以可以先把所有数看作正数 ...

  4. COGS 513 八

    513. 八 http://www.cogs.pro/cogs/problem/problem.php?pid=513 ★☆   输入文件:eight.in   输出文件:eight.out   简单 ...

  5. mac nginx 安装及PHP配置

    安装nginx 1.安装brew命令 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/mas ...

  6. phpcms 仿站小结

    1.title<title>{if isset($SEO['title']) && !empty($SEO['title'])}{$SEO['title']}{/if}{$ ...

  7. js工作常见问题收集

    1. viewport <meta name="viewport" content="width=device-width,initial-scale=1.0,mi ...

  8. C. Polygon for the Angle(几何)

    题目链接:http://codeforces.com/contest/1096/problem/C 题目大意:T是测试样例,然后每一次输入一个角度,然后问你在一个n边形里面,能不能构成这个角度,如果能 ...

  9. NIO编程中buffer对象的理解以及API的使用

    概念讲解,转自https://www.cnblogs.com/lxzh/archive/2013/05/10/3071680.html  ,将的非常好! Buffer 类是 java.nio 的构造基 ...

  10. linux中core dump开启使用教程【转】

    转自:http://www.111cn.net/sys/linux/67291.htm 一.什么是coredump 我们经常听到大家说到程序core掉了,需要定位解决,这里说的大部分是指对应程序由于各 ...