51nod 1109 bfs
输入1个数N。(1 <= N <= 10^6)
输出符合条件的最小的M。
4
100 对于m每一位上的数要么是0 要么是1,那就可以枚举每一位上的值,又得到的m最小,那么可以bfs解决,但是这题的n比较大,普通的bfs不行,会爆__int64 所以需要优化,
可以定义一个数组,标记每次出现的余数,因为同于定理,如果当前的余数之前出现过那么久没有必要再对当前的数进行运算。又m最后会很大,所以需要存储当前满足条件的路径和值。
#include<map>
#include<queue>
#include<stack>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define INF 1000000001
#define ll __int64
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
using namespace std;
const int MAXN = ;
struct node
{
int flag;
int val;
int fa;
}a[MAXN];
int vis[MAXN];
int cnt;
int n,ans;
void bfs()
{
queue<int>q;
cnt = ;
a[].fa = -;
a[].flag = ;
a[].val = ;
vis[] = ;
q.push();
while(!q.empty()){
int t = q.front();
q.pop();
if(a[t].val == ){
ans = t;
return;
}
a[cnt].flag = ;
a[cnt].val = (a[t].val * ) % n;
a[cnt].fa = t;
if(!vis[a[cnt].val]){
vis[a[cnt].val] = ;
q.push(cnt);
cnt++;
}
a[cnt].flag = ;
a[cnt].val = (a[t].val * + ) % n;
a[cnt].fa = t;
if(!vis[a[cnt].val]){
vis[a[cnt].val] = ;
q.push(cnt);
cnt++;
}
}
}
void find(int p)
{
if(p == -)return;
find(a[p].fa);
printf("%d",a[p].flag);
}
int main()
{
while(cin >>n){
if(n == ){
cout<<<<endl;
continue;
}
memset(vis,,sizeof(vis));
bfs();
find(ans);
cout<<endl;
}
}
51nod 1109 bfs的更多相关文章
- POJ 1426 Find The Multiple && 51nod 1109 01组成的N的倍数 (BFS + 同余模定理)
Find The Multiple Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 21436 Accepted: 877 ...
- 51nod 1109 01组成的N的倍数
用01 组成 N的最小倍数 这个BFS搜索就好. 类似这道: ZOJ Problem Set - 1530 每次 要么是0 要么是1, 记入余数,和前驱. #include<bits/stdc ...
- 胡小兔的OI日志3 完结版
胡小兔的 OI 日志 3 (2017.9.1 ~ 2017.10.11) 标签: 日记 查看最新 2017-09-02 51nod 1378 夹克老爷的愤怒 | 树形DP 夹克老爷逢三抽一之后,由于采 ...
- 51Nod——T 1109 01组成的N的倍数
https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1109 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 ...
- 51nod 1444 破坏道路(bfs+枚举)
1444 破坏道路 题目来源: CodeForces 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 收藏 关注 在某一个国家,那儿有n个城市,他们通过m条双向 ...
- 51nod1109(bfs)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1109 题意:中文题诶- 思路:可以用二叉树构建,根节点为 1, ...
- 51nod图论题解(4级,5级算法题)
51nod图论题解(4级,5级算法题) 1805 小树 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 她发现她的树的点上都有一个标号(从1到n),这些树都在空 ...
- 51Nod 1299 监狱逃离
这其实是一道树形DP的神仙题. 然后开始推推推,1 hour later样例都过不了 然后仔细一看题目,貌似像一个最小割模型,然后5min想了想建图: 首先拆点,将每个点拆成进和出两个,然后连边,边权 ...
- 51nod 1462 树据结构 | 树链剖分 矩阵乘法
题目链接 51nod 1462 题目描述 给一颗以1为根的树. 每个点有两个权值:vi, ti,一开始全部是零. Q次操作: 读入o, u, d o = 1 对u到根上所有点的vi += d o = ...
随机推荐
- AC日记——字符串位移包含问题 1.7 19
19:字符串移位包含问题 总时间限制: 1000ms 内存限制: 65536kB 描述 对于一个字符串来说,定义一次循环移位操作为:将字符串的第一个字符移动到末尾形成新的字符串. 给定两个字符串 ...
- [No000037]操作系统Operating Systems操作系统历史与硬件概况History of OS & Summaries!
培根:读史使人明智 操作系统的简史 (1955-1965) 计算机非常昂贵,上古神机IBM7094 ,造价在250万美元以上 计算机使用原则:只专注于计算 批处理操作系统(Batch system) ...
- 4种sql分页
四种方式实现SQLServer 分页查询 SQLServer 的数据分页: 假设现在有这样的一张表:CREATE TABLE test( id int primary key not null ide ...
- HTML-学习笔记(常用标签)
本篇博客讲一讲HTML中的标签 HTML 标题 标题(Heading)是通过 <h1> - <h6> 等标签进行定义的.<h1> 定义最大的标题.<h6> ...
- codevs1842 递归第一次
难度等级:白银 1842 递归第一次 题目描述 Description 同学们在做题时常遇到这种函数 f(x)=5 (x>=0) f(x)=f(x+1)+f(x+2)+1 (x<0) 下面 ...
- ReactNative真机运行运行
注意在iOS设备上运行React Native应用需要一个Apple Developer account并且把你的设备注册为测试设备.本向导只包含React Native相关的主题. 译注:从XCod ...
- 如何用 Nodejs 分析一个简单页面
本文目的 在浏览器地址栏中输入 localhost:3000,在页面显示 博客园首页 的 20 篇文章标题. 过程分析 首先需要端口的监听,这就需要引入 Node 中最重要的模块之一 express. ...
- .html 、.htm 、 .shtml 以及 .shtm 四种扩展名的文件区别
新增了一个分类,叫做 Personals,中文我把它解释成 "个人恶趣味",这里将记载一些对工作无关紧要,但是个人又一时有兴趣了解的东西. 今天要讲的是如题的 4 种扩展文件的区别 ...
- 一道经典JS题(关于this)
项目中碰到的问题,以前也碰到过,没有重视,现记录如下. <input type='button' value='click me' id='btn' /> <script> v ...
- 【位运算经典应用】 N皇后问题
说到位运算的经典应用,不得不说N皇后问题. 学过程序设计的都知道N皇后问题,没听过也没关系.很简单,最传统的的N皇后问题是这个样子的,给你一个n * n大小的board,让你放n个皇后(国际象棋),要 ...