首页 > 其他分享 >POJ 3278(BFS-搜索范围)

POJ 3278(BFS-搜索范围)

时间:2022-10-25 12:38:01浏览次数:36  
标签:break begin end deep BFS longint POJ maxn 3278


这题是BFS水的

主要是范围

0<=n,k<=100000  但是有可能搜到200000……

半天功夫才A.


program P3278;
const
maxn=200000;
var
n,k,i,j:longint;
q,deep:array[1..maxn] of longint;
b:array[0..maxn] of boolean;
procedure add(x:longint);
begin
if not(b[x]) then
begin
b[x]:=true;
inc(j);
q[j]:=x;
deep[j]:=deep[i]+1;
end;
end;
begin
read(n,k);
i:=1;
j:=1;
fillchar(b,sizeof(b),false);
b[n]:=true;
q[1]:=n;deep[1]:=0;
if n=k then
begin
writeln('0');
halt;
end;


while i<=j do
begin
if (q[i]>0) then add(q[i]-1);
if b[k] then break;
if (q[i]<maxn) then add(q[i]+1);
if b[k] then break;
if (q[i]*2<maxn) then add(q[i]*2);
if b[k] then break;
inc(i);
end;
writeln(deep[j]);

end.



标签:break,begin,end,deep,BFS,longint,POJ,maxn,3278
From: https://blog.51cto.com/u_15724837/5794474

相关文章

  • POJ 3692(匈牙利算法)
    匈牙利算法:b[]保存当前找交错路P的各点是否已被连通,a[]表示某点之前的点本题的2分图是取最大团(各点互相连通),利用2分图性质,可看成补图的最大独立集(各点互不连通)……Program......
  • POJ 2184(01背包+滚动数组)
    01背包模板题Programdd;constmaxn=1000;maxv=100000;minv=-100000;NULL=-2139062144;varn,i,j,ans,p,np:longint;ts,tf:array[1..maxn]oflongint;......
  • POJ 1950(不打表做法)
    这题就是搜……注意设定maxn要不然肯定爆maxn=1*10^最大位数/21234..89-11121314这样的Programaa;constmaxn=1000000000000000;varn,t:longint;a:array[1..15]......
  • POJ 3256(SPFA)
    这题只能对每一个点查一遍……有向图的话能用floyd,可是迫于时限用了SPFA。Programaa;constmaxk=10000;maxn=10000;maxm=10000;vark,n,m,i,j,l:longint;a:ar......
  • POJ 2110(最小生成树)
    这题的思路就是找一个范围,看看这个范围是否可行主流是二分Ans,我是先把点排序,求最小生成树检查首位的ProgramP2110;typeed=recordu,v,w:longint;end;vara......
  • POJ 1951(空串特判)
    这题的教训是要特判空串ProgramP1951;vars:string;len,i,j:longint;b:array[0..10000]ofboolean;functionisdight(x:longint):boolean;beginif(x>=65)an......
  • POJ 1952(最长不下降子序列的个数)
    求一个序列的最长不下降子序列的长度,与个数(相同数列算1个)关键是如何判重。显然如果之前有一个尾数相同且长度相同的序列,哪么后一个包含前一个所有可能的序列相同的序列,故将......
  • POJ 2588(解析几何+并查集)
    题目就是早从左到右的路注意输入的实数这题图画好就行,别像我一开始把图弄反就成从上开始找,若找到一个与下边界相邻的就无解,找到与左边相邻的记圆与左边界相交的下边的点(相当......
  • POJ 3844(同余)
    果断同余……D[j]-D[i] mod k=0D[j]=D[i]求有多少相等数对,用队列O(n)ProgramP3844;constmaxn=50000;maxd=1000000;varans,t,f,n,i,j:longint;d:array[0........
  • POJ 3122(二分答案)
    二分答案……Programpie;constlef=0.00001;vart,n,f,i,j:longint;r:array[1..10000]oflongint;s:array[1..10000]ofdouble;maxs:double;procedures......