無聊測試賽 T12 道路

2022-06-01 18:36:13 字數 1280 閱讀 2967

這道題的大致題意是:根據最短路求邊的拓撲圖,然後求出每個邊的入度。

我用 dijkstra 求最短路,順便建好圖。之後使用 bfs 來遞推拓撲條件,儲存至 ans 陣列。

注意事項

使用 long long,你們懂得。

這個做法需要倒序遍歷邊,因為只有倒序遍歷能滿足拓撲序。

本**需要 \(o_2\) 優化 才可通過本題。

code:

#include#include#include#include#includeusing namespace std;

namespace edge[m];

int link[n], cnt;

inline void add(const int& u, const int& v, const int& w)

}a, b; //建兩個圖,乙個(a)是原圖,另乙個(b)是dag

int n, m;

struct ___

};priority_queue<___> heap;

queueq;

int d[n];

bool book[n];

int rrank[n];

long long dp[n], ans[m], dp1[n];

inline void dijkstra(const int& s)

d[s] = 0;

dp1[s] = 1;

heap.push();

while (!heap.empty())

//如果更好,就把邊拆了,重新加上條

if (d[v] > d[now] + val) );}}

nxt = a.edge[nxt].n;}}

}inline void toposort()

}}int u, v, w;

inline int get()

else

return st[a++];

}#ifdef _debug

#define get() getchar()

#endif

inline void read(int& ans) }}

int main()

for (int i = 1; i <= n; i++)

for (int i = 1; i <= m; i++)

printf("%d\n", ans[i]);

return 0;

#undef int

}

2018 10 20測試T1 蛋糕

內網傳送門 外網傳送門 我們先對於 a 排序,然後對於 b,其實就是求上公升序列最少有多少個 還是乙個很常見的模型吧,記錄乙個陣列,每次加入乙個點的時候,就找它前驅的位置,更新一下就可以了 然後求它屬於哪個蛋糕就直接再開乙個陣列記錄一下 應該是一道水題吧。include include includ...

4 21小A模擬賽 T1

description 乙個無限長的01 序列,初始全為0,每次選擇乙個區間 l,r 進行操作,有三種操作 1 l r 將 l,r 中所有元素變成1。2 l r 將 l,r 中所有元素變成0。3 l r 將 l,r 中所有元素異或上1。每次操作後詢問最左邊的0 在哪個位置。input format ...

YCH的模擬賽 T1

括號序列問題,往往就是把左括號看成 1,右括號看成 1,我們只需要保證任意乙個字首大於等於0,且總和為0,就代表是個合法括號序列了。令 f i j 表示當前到第 i 個字元,現在的字首和 j 那麼分三種情況考慮。若第 i 1 個字元是左括號,則能轉移到 f i 1 j 1 若第 i 1 個字元是右括...