广搜 poj3278 poj1426 poj3126
Catch That Cow
Time Limit: 2000 MS Memory Limit: 65536 KB
64-bit integer IO format: %I64d , %I64u Java class name: Main
Description
Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a number line and the cow is at a point K (0 ≤ K ≤ 100,000) on the same number line. Farmer John has two modes of transportation: walking and teleporting.
* Walking: FJ can move from any point X to the points X - 1 or X + 1 in a single minute
* Teleporting: FJ can move from any point X to the point 2 × X in a single minute.
If the cow, unaware of its pursuit, does not move at all, how long does it take for Farmer John to retrieve it?
Input
Output
Sample Input
5 17
Sample Output
4
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <queue> using namespace std;
#define max 100002 ///看了别人的代码 说广搜的标记数组 会很大 如果开成局部的会PE
bool vis[max];
int deep[max];
int n,k; int bfs()
{
queue<int>q;
q.push(n);
memset(vis,false,sizeof(vis)); ///全没有遍历过
vis[n]=true; ///起点遍历过了。。
memset(deep,,sizeof(deep)); ///初始都定义为0 走了0步 17
deep[n]=; while(!q.empty())
{
int tp=q.front();
q.pop();
vis[tp]=true;
if(tp==k)
break;
else
{
int ans1=tp+;
int ans2=tp-;
int ans3=tp*;
if(ans1<=&&!vis[ans1])
{
q.push(ans1);
deep[ans1]=deep[tp]+;
//cout<<deep[ans1]<<endl;
vis[ans1]=true;
}
if(ans2>=&&!vis[ans2]) ///注意边界条件 刚刚>0 WA了
{
q.push(ans2);
deep[ans2]=deep[tp]+;
//cout<<deep[ans2]<<endl;
vis[ans2]=true; }
if(ans3<=&&!vis[ans3])
{
q.push(ans3);
deep[ans3]=deep[tp]+;
// cout<<deep[ans3]<<endl;
vis[ans3]=true; }
}
}
return deep[k];
} int main()
{
cin>>n>>k;
printf("%d\n",bfs());
return ;
}
第一道广搜题 参考别人的代码~~~~http://kymowind.blog.163.com/blog/static/1842222972011717112727688/
poj1426 http://blog.csdn.net/lyy289065406/article/details/6647917
Prime Path
Time Limit: 1000 MS Memory Limit: 65536 KB
64-bit integer IO format: %I64d , %I64u Java class name: Main
Description
The ministers of the cabinet were quite upset by the message from the Chief of Security stating that they would all have to change the four-digit room numbers on their offices. — It is a matter of security to change such things every now and then, to keep the enemy in the dark.
— But look, I have chosen my number 1033 for good reasons. I am the Prime minister, you know!
— I know, so therefore your new number 8179 is also a prime. You
will just have to paste four new digits over the four old ones on your
office door.
— No, it’s not that simple. Suppose that I change the first digit to an 8, then the number will read 8033 which is not a prime!
— I see, being the prime minister you cannot stand having a non-prime number on your door even for a few seconds.
— Correct! So I must invent a scheme for going from 1033 to 8179 by a
path of prime numbers where only one digit is changed from one prime to
the next prime.
Now, the minister of finance, who had been eavesdropping, intervened.
— No unnecessary expenditure, please! I happen to know that the price of a digit is one pound.
— Hmm, in that case I need a computer program to minimize the cost. You don't know some very cheap software gurus, do you?
— In fact, I do. You see, there is this programming contest going
on... Help the prime minister to find the cheapest prime path between
any two given four-digit primes! The first digit must be nonzero, of
course. Here is a solution in the case above.
1033
1733
3733
3739
3779
8779
8179
The
cost of this solution is 6 pounds. Note that the digit 1 which got
pasted over in step 2 can not be reused in the last step – a new 1 must
be purchased.
Input
test cases (at most 100). Then for each test case, one line with two
numbers separated by a blank. Both numbers are four-digit primes
(without leading zeros).
Output
Sample Input
3
1033 8179
1373 8017
1033 1033
Sample Output
6
7
0 题意:从第一个数编导第二个数最少需要多少步 要求:每次只能改变一个数且这个数与之前的数都不一样 同时这个数时素数
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <queue>
#include <math.h> using namespace std;
int prime[]; void inin()
{
int i,j;
for(i=;i<=;i++){
for(j=;j<i;j++)
if(i%j==){
prime[i]=false;
break;
}
if(j==i) prime[i]=true;
}
} int vis[]; ///是否遍历过
int t[]; ///存放各个位的数
int num[]; ///最后输出的值 int bfs(int n,int m)
{
int temp;
queue<int>q;
q.push(n);
memset(vis,,sizeof(vis));
memset(num,,sizeof(num));
vis[n]=;
memset(t,,sizeof(t)); while(!q.empty())
{
int tp=q.front();
q.pop();
if(tp==m)
return num[tp]; t[]=tp/;
t[]=tp%/;
t[]=tp%/;
t[]=tp%; for(int i=;i<;i++)
{
temp=t[i];
for(int j=;j<=;j++)
if(temp!=j)
{
t[i]=j;
int ans=t[]*+t[]*+t[]*+t[]; if(!vis[ans]&&prime[ans])
{
num[ans]=num[tp]+;
vis[ans]=;
q.push(ans);
}
if(ans==m)
return num[ans];
}
t[i]=temp;
}
}
return -;
} int main()
{
int n,m,tt;
inin();
cin>>tt;
while(tt--)
{
cin>>n>>m;
if(bfs(n,m)!=-)
cout<<bfs(n,m)<<endl;
else
cout<<"Impossible"<<endl;
}
return ;
}
之前判断素数的函数不是这样写的 一直WA 可是我的错在哪里了呢 先贴上 以后看看
int prim(int n)
{
for(int i=;i<sqrt(n);i++)
{
if(n%i==)
{
return false;
break;
}
}
return true;
}
广搜 poj3278 poj1426 poj3126的更多相关文章
- poj3126 Prime Path 广搜bfs
题目: The ministers of the cabinet were quite upset by the message from the Chief of Security stating ...
- HDU--杭电--1195--Open the Lock--深搜--都用双向广搜,弱爆了,看题了没?语文没过关吧?暴力深搜难道我会害羞?
这个题我看了,都是推荐的神马双向广搜,难道这个深搜你们都木有发现?还是特意留个机会给我装逼? Open the Lock Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 5652(二分+广搜)
题目链接:http://acm.hust.edu.cn/vjudge/contest/128683#problem/E 题目大意:给定一只含有0和1的地图,0代表可以走的格子,1代表不能走的格 子.之 ...
- nyoj 613 免费馅饼 广搜
免费馅饼 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy ...
- poj 3984:迷宫问题(广搜,入门题)
迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7635 Accepted: 4474 Description ...
- poj 3278:Catch That Cow(简单一维广搜)
Catch That Cow Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 45648 Accepted: 14310 ...
- 双向广搜 POJ 3126 Prime Path
POJ 3126 Prime Path Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16204 Accepted ...
- 广搜+打表 POJ 1426 Find The Multiple
POJ 1426 Find The Multiple Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 25734 Ac ...
- 双向广搜 codevs 3060 抓住那头奶牛
codevs 3060 抓住那头奶牛 USACO 时间限制: 1 s 空间限制: 16000 KB 题目等级 : 黄金 Gold 题目描述 Description 农夫约翰被告知一头逃跑奶牛 ...
随机推荐
- bowtie:短序列比对的新工具
bowtie:短序列比对的新工具(转) (2014-11-17 22:15:24) 转载▼ 标签: 转载 原文地址:bowtie:短序列比对的新工具(转)作者:玉琪星兆 Bowtie是一个超级快速 ...
- Python之路(第二篇):Python基本数据类型字符串(一)
一.基础 1.编码 UTF-8:中文占3个字节 GBK:中文占2个字节 Unicode.UTF-8.GBK三者关系 ascii码是只能表示英文字符,用8个字节表示英文,unicode是统一码,世界通用 ...
- sqlalchemy根据数据库结构生成映射的实体
# !/usr/bin/python # -*- coding: UTF-8 -*- from sqlalchemy import * from sqlalchemy.orm import sessi ...
- maven打包之后为什么class文件中没有注释了?
<!--生成doc jar包--> <plugin> <groupId>org.apache.maven.plugins</groupId> <a ...
- 栈(NOIP2003&水题测试2017082501)
题目链接:栈 这题不难. 我们看一下,其实可以发现是卡特兰数. 不知道卡特兰数?没事,给你简单讲一下. 卡特兰数的递推式f(n)=f(0)*f(n-1)+f(1)*f(n-2)+-+f(n-2)*f( ...
- flask框架基础
一 web的一些框架介绍 Flask:短小精悍,内部没有包含多少组件,但是第三方的组件是非常丰富的. Django:django是一个重武器,内部包含了非常多的组件:orm,form,modelFor ...
- 2019.01.10 bzoj1095: [ZJOI2007]Hide 捉迷藏(动态点分治)
传送门 蒟蒻真正意义上做的第一道动态点分治! 题意:给一棵最开始所有点都是黑点的树,支持把点的颜色变成从黑/白色变成白/黑色,问当前状态树上两个最远黑点的距离. 思路: 首先考虑不带修改一次点分治怎么 ...
- 2018.12.23 bzoj2865&&1396: 字符串识别(后缀自动机+线段树)
传送门 卡空间差评! 题意简述:给一个字串,对于每个位置求出经过这个位置且只在字串中出现一次的子串的长度的最小值. 解法:先建出samsamsam,显然只有当sizep=1size_p=1sizep ...
- Java中各类Cache机制实现解决方案[来自CSDN]
摘要:在Java中,不同的类都有自己单独的Cache机制,实现的方法也可能有所不同,文章列举了Java中常见的各类Cache机制的实现方法,同时进行了综合的比较. 在Java中,不同的类都有自己单独的 ...
- join和split 的使用
var abc = new Array(a,b,c,d,e); abc.join('-') // 结果 : a-b-c-d-e-f var obk = 'a-b-c-d-e'; obk.split(' ...