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 ...
随机推荐
- 我眼中的Android IDE
我作为一个Android小白,首先跟Android打交道的就是它的IDE(Integrated Development Environment,集成开发环境)了. 记得刚开始时是从图书馆借了本Andr ...
- poj3580 伸展树(区间翻转 区间搬移 删除结点 加入结点 成段更新)
好题.我做了很久,学了大牛们的区间搬移.主要的代码都有注释. #include<cstdio> #include<cstring> #include<iostream&g ...
- 【POJ 1416】Shredding Company
题 题意 给你一个target number,和一个最多六位的数num,让你把数分段,使总和最接近但不大于target number. 如果只有一种方法就输出总和.分段,如果有多种方法,输出rejec ...
- 关于ActionContext.getContext()的用法
为了避免与Servlet API耦合在一起,方便Action类做单元测试,Struts 2对HttpServletRequest.HttpSession和ServletContext进行了封装,构造了 ...
- 总结css之内联图片的优缺点
会不会有这样一种感觉?IT技术开发知识面很广也很深,总会有你不懂得问题出现.一个接着一个新的问题,一个接着一个新的挑战. 今天,解读[内联图片],什么是内联图片,使用内联图片的优缺点是什么?这个问题是 ...
- P1391 走廊泼水节
时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 话说,中中带领的OIER们打算举行一次冬季泼水节,当然这是要秘密进行的,绝对不可以让中中知道.不过中中可是老 ...
- curl 学习保存
原文地址 http://www.jb51.net/article/48866.htm php中的curl使用入门教程和常见用法实例 作者: 字体:[增加 减小] 类型:转载 起先cURL是做为一种 ...
- RSA算法小记
学习来源:http://www.cnblogs.com/vamei/p/3480994.html 小记: 一.数学基础: 欧拉Phi函数:Φ(n)=总数(从1到n-1中与n互质的整数) (1)欧拉定理 ...
- 旋转屏幕时,假如自定义的xib大小变了,可能是这个属性没有修改
虽然xib内部启用了自动布局,但是当xib放入外界,xib自身的autoresizing是存在的
- WPF 窗口在右下角出现,识别分辨率
直接上代码. Point brp = SystemParameters.WorkArea.BottomRight;//当前桌面右下角的位置