2023年分割槽聯賽普級組第四題

2021-07-11 01:59:02 字數 1405 閱讀 4608

解題思路:

先讀入資料,然後用二維數組建乙個圖,用

dijkstra

演算法,求最短路,如果有答案就輸出,不然就輸出-1。

程式:const

maxn=100;

var a,b:array[1..maxn,1..maxn] of longint;

v:array[1..maxn] of boolean;

d,f,pre:array[1..maxn] of longint;

m,k,s,e,i,j,x,y,z,n:longint;

function hehe(x,y:longint):boolean;

begin

hehe:=true;

while x<>0 do

begin

if (f[x]=y)or(b[y,f[x]]=1) then exit(false);

x:=pre[x];

end;

end;

procedure dij;

varmin,i,u:longint;

begin

repeat

min:=maxlongint;

u:=0;

for i:=1 to n do

if (d[i]

if u>0 then

begin

v[u]:=false;

for i:=1 to n do

if (v[i])and(d[u]+a[u,i]

begin

d[i]:=d[u]+a[u,i];

pre[i]:=u;

end;

end;

until u=0;

end;

begin

readln(n,m,k,s,e);

for i:=1 to n do

read(f[i]);

for i:=1 to m do

for j:=1 to m do

read(b[i,j]);

for i:=1 to n do

for j:=1 to n do

a[i,j]:=maxlongint div 3;

for i:=1 to k do

begin

readln(x,y,z);

if (b[f[y],f[x]]=0)and(a[x,y]>z) then begin a[x,y]:=z; a[y,x]:=z; end;

end;

for i:=1 to n do

d[i]:=maxlongint div 3;

d[s]:=0;

fillchar(v,sizeof(v),true);

dij;

if d[e]

end.

版權屬於: chris

2023年分割槽聯賽普級組第一題

解題思路 首先用篩數法把 50000 以內的質數篩出來,然後用迴圈求出它最小的質數因數,再用讀入的 n除以這個數即是答案。程式 const maxn 50000 varf array 1.maxn of boolean n,i,j longint begin readln n fillchar f,...

2023年分割槽聯賽普級組第二題 尋寶

解題思路 先讀入資料,用三個陣列分別儲存每間房牌子上的數字 每間房可不可以通往上層和每層樓有多少個可以通往上層的房,然後用迴圈模擬,先加上該房間裡牌子上的數,然後用 repeat 模擬在該層樓轉圈。最後輸出 ans mod 20123 的值即可。程式 const maxn 10000 maxm 10...

2023年分割槽聯賽普級組之四 裝

description 有乙個箱子容量為v 正整數,0 v 20000 同時有n個物品 0 n 30 每個物品有乙個體積 正整數 要求n個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。input 乙個整數,表示箱子容量。乙個整數,表示有n個物品。接下來n行,分別表示這n 個物品的各自體積 ou...