JOISC 2015 Day 1 卡片占卜

2021-10-06 21:25:08 字數 1487 閱讀 8550

點此看題

可以把原來的陣列表示成差分陣列,那麼只有a+1

,a+b

+1.....

a+1,a+b+1.....

a+1,a+

b+1.

....

這四個位置有值,我們要把所有值給消去。

把操作理解為建邊,那麼找出兩個關鍵點的最短路就是消去這兩個關鍵點,那麼我們消去兩對關鍵點就可以了,有乙個特殊情況就是乙個點和n+1

n+1n+

1相連,那麼必然會剩下乙個點,它只能通過這種方法消去,所以這種情況還是可以歸類到上面去的。

具體就是跑3

33邊dij

kdijk

dijk

,還有疑問可以康**。

#include

#include

#include

using

namespace std;

#define int long long

#define inf 0x3f3f3f3f3f3f3f3f

const

int m =

500005

;int

read()

int n,m,tot,ans,a[6]

,f[m]

,dis[m][3

];struct edge

e[m]

;struct node

};priority_queue q;

void

dijk

(int x,

int p));

while

(!q.

empty()

));}

}}}signed

main()

,f[v]

=tot;

e[++tot]

=edge

,f[u]

=tot;

}dijk

(a[1]+

1,0)

;dijk

(a[2]+

1,1)

;dijk

(a[3]+

1,2)

; ans=inf;

ans=

min(ans,dis[a[2]

+1][

0]+dis[a[4]

+1][

2]);

ans=

min(ans,dis[a[3]

+1][

0]+dis[a[4]

+1][

1]);

ans=

min(ans,dis[a[4]

+1][

0]+dis[a[3]

+1][

1]);

if(ans==inf)

puts

("-1");

else

printf

("%lld\n"

,ans)

;}

JOISC 2020 Day1 建築裝飾 4

loj 考慮設 f 表示到了第 i 個位置,用了 j 個a,k 個b的可行性,打表發現對於 i,j 的 k 是連續的,所以考慮記錄 l 表示前 i 個位置用了 j 個a最少用多少個b,r 同理.最後輸出方案的時候一步一步的倒推即可.include include include include in...

JOISC 2014 Day1 有趣的家庭菜園

joisc 2014 day1 有趣的家庭菜園 前置技能 樹狀陣列。如果我們知道了目標序列,我們就可以構造乙個序列p,它的每乙個元素就是目標序列這一位置的元素在原序列的位置,那麼答案就是原位置序列 也就是 通過氣泡排序達到目標序列所需的交換次數目。而氣泡排序的交換次數就是p的逆序對的數量。由於要滿足...

NOIP2015 Day1 資訊傳遞

題目描述 有 n 個同學 編號為 1 到 n 正在玩乙個資訊傳遞的遊戲。在遊戲裡每人都有乙個固定的資訊傳遞物件,其中,編號為 i 的同學的資訊傳遞物件是編號為 t i 的同學。遊戲開始時,每人都只知道自己的生日。之後每一輪中,所有人會同時將自己當前所知的生日資訊告訴各自的資訊傳遞物件 注意 可能有人...