hdu4255筛素数+广搜
Construct the grid like the following figure. (The grid is actually infinite. The figure is only a small part of it.)
Considering
traveling in it, you are free to any cell containing a composite number
or 1, but traveling to any cell containing a prime number is
disallowed. You can travel up, down, left or right, but not diagonally.
Write a program to find the length of the shortest path between pairs of
nonprime numbers, or report it's impossible.
each test case, display its case number followed by the length of the
shortest path or "impossible" (without quotes) in one line.
9 32
10 12
Case 2: 7
Case 3: impossible
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
int book[401][401];
int a[401][401];
int b[401][401];
int vis[160005];
int prime[160005];
struct node
{
int x;
int y;
int s;
} que[160005];
void make1()
{
for(int i=1;i<=160001;i++)
prime[i]=1;
prime[1] = 0;
for(int i = 2; i <= 160001; i++)
{
if(prime[i])
{
for(int j = 2*i; j <= 160001; j+=i)
prime[j] = 0;
}
}
int x,y;
int n=400;
int tot=160000;
a[0][0]=160000;
x=0,y=0;
while(tot>1)
{
while(y+1<n&&!a[x][y+1])
{
a[x][++y]=--tot;
}
while(x+1<n&&!a[x+1][y])
{
a[++x][y]=--tot;
}
while(y-1>=0&&!a[x][y-1])
{
a[x][--y]=--tot;
}
while(x-1>=0&&!a[x-1][y])
{
a[--x][y]=--tot;
}
}
for(int i=0; i<400; i++)
for(int j=0; j<400; j++)
{
if(prime[a[i][j]]==1)
b[i][j]=1;
else
b[i][j]=0;
}
}
int main()
{
int t1,t2;
int ans=0;
make1();
while(scanf("%d%d",&t1,&t2)!=EOF)
{
int next[4][2]= {0,1,1,0,0,-1,-1,0};
memset(book,0,sizeof(book));
if(t1==t2)
printf("Case %d: 0\n",++ans);
else
{
int startx,starty,endx,endy;
for(int i=0; i<=399; i++)
for(int j=0; j<=399; j++)
{
if(a[i][j]==t1)
{
startx=i;
starty=j;
}
if(a[i][j]==t2)
{
endx=i;
endy=j;
}
}
int head=1,tail=1;
que[head].x=startx;
que[head].y=starty;
tail++;
book[startx][starty]=1;
int flag=0;
while(head<tail)
{
for(int k=0; k<4; k++)
{
int tx=que[head].x+next[k][0];
int ty=que[head].y+next[k][1];
if(tx<0||tx>399||ty<0||ty>399)
continue;
if(b[tx][ty]==0&&book[tx][ty]==0)
{
book[tx][ty]=1;
que[tail].x=tx;
que[tail].y=ty;
que[tail].s=que[head].s+1;
tail++;
}
if(tx==endx&&ty==endy)
{
flag=1;
break;
}
}
if(flag==1)
break;
head++;
}
if(flag==1)
printf("Case %d: %d\n",++ans,que[tail-1].s);
else
printf("Case %d: impossible\n",++ans);
}
}
return 0;
}
hdu4255筛素数+广搜的更多相关文章
- 双向广搜 POJ 3126 Prime Path
POJ 3126 Prime Path Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16204 Accepted ...
- nyoj 592 spiral grid(广搜)
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=592 解决以下问题后就方便用广搜解: 1.将数字坐标化,10000坐标为(0,0),这样就 ...
- poj3126 Prime Path 广搜bfs
题目: The ministers of the cabinet were quite upset by the message from the Chief of Security stating ...
- [Luogu]A%BProblem——线性筛素数与前缀和
题目描述 题目背景 题目名称是吸引你点进来的[你怎么知道的] 实际上该题还是很水的[有种不祥的预感..] 题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m接下来n行, ...
- 广搜 poj3278 poj1426 poj3126
Catch That Cow Time Limit: 2000 MS Memory Limit: 65536 KB 64-bit integer IO format: %I64d , %I64u Ja ...
- 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代表不能走的格 子.之 ...
- 【板子】gcd、exgcd、乘法逆元、快速幂、快速乘、筛素数、快速求逆元、组合数
1.gcd int gcd(int a,int b){ return b?gcd(b,a%b):a; } 2.扩展gcd )extend great common divisor ll exgcd(l ...
- CF449C Jzzhu and Apples (筛素数 数论?
Codeforces Round #257 (Div. 1) C Codeforces Round #257 (Div. 1) E CF450E C. Jzzhu and Apples time li ...
随机推荐
- js中基本操作
1.操作标签值 <!DOCTYPE html> <html> <meta charset="utf-8"> <meta http-equi ...
- SQL删除重复的记录(只保留一条)
首先新建表: --创建示例表 CREATE TABLE t ( id ,) PRIMARY KEY, a ), b ) ) --插入数据 INSERT INTO t SELECT 'aa','bb' ...
- jQuery Mobile学习日记
本次主讲人是王思伦啦啦啦~ 框架特性 jQuery Mobile 以“Write Less, Do More”作为目标,为所有的主流移动操作系统平台提供了高度统一的 UI 框架:jQuery 的移动框 ...
- 百度CDN公共库
百度CDN公共库 后续可以直接调用 地址:http://developer.baidu.com/wiki/index.php?title=docs/cplat/libs jQuery 加载地址: 未压 ...
- cygwin 的不同文件类型显示不同的颜色
正常情况下,我们的cygwin安装好之后,不管是文件还是文件夹显示的颜色都是一样的,这样在我们平时的工作中很不方便 所以这里记录一下怎么设置成彩色的,其实很简单. 直接修改文件 .bashrc vim ...
- ASP.NET加JS方式
一.如果是asp.net中的控件有OnClientClick事件,可以在控件中直接加 OnClientClick--客户端点击事件 二.如果asp.net中的控件没有OnClientClick事件,可 ...
- 怎么让alert弹出框的内容可以换行?
在要点击弹出的地方输入这样的代码: alert("文本框中共有字母a的个数为:"+num+"\n"+"他们在字符串的索引为:"+ind) 就 ...
- 使用FMDB事务批量更新数据库
今天比较闲看到大家在群里讨论关于数据库操作的问题,其中谈到了“事务”这个词,坦白讲虽然作为计算机专业的学生,在上学的时候确实知道存储过程.触发器.事务等等这些名词的概念,但是由于毕业后从事的不是服务器 ...
- node相关的精典材料
node.js电子书 了不起的Node.js 深入浅出Node.js node.js入门经典 node.js开发指南 node.js相关优秀博文 官网 Infoq深入浅出Node.js系列(进阶必读) ...
- hdu 2044 一只小蜜蜂
斐波那契数列变形,在本题中不是从1-N,而是从M-N 下标 1 2 3 4 5 6 7 8 9 值 1 1 2 3 5 8 ...