Jzoj P3238 超空間旅行

2021-09-25 10:31:50 字數 2069 閱讀 2958

給出行星的數目p和航線數量r,1≤p≤500,0≤r≤10000。

接下來的r條航線路徑包含兩或三個整數:行星標號c和d(1≤c,d≤p,c≠d),和t,從c到d的旅行時間。

對於傳統的路徑,t是乙個整數(1≤t≤1000000),

超空間航線中,t是字元「x」。 可以存在多行有兩個相同的行星。

下一行輸入整數q(1≤q≤10),表示查詢的數量。

以下q行包含兩個整數星球標號(a和b,a≠b),為**商協會的查詢:「從a到b的最短路徑時間的可能值是什麼?

對於每個詢問要包含2個回答,不同的可能值的數目和它們的總和。如果不同的可能值的數目是無限的,該行只輸出「inf」。如果不存在從a到b的路徑,不同的可能值的數目及它們的總和都是0。

設d is

i,jdis_

disi,j

​表示到i點用了j條x邊的最短路徑

可以發現對映到座標系上

就是一條條表示為kx+

dist

,kkx+dis_

kx+dis

t,k​

的直線那麼我們維護凸包分開求解即可

#include #include #include #include #include #include #define rep(i, st, ed) for (int i = st; i <= ed; i++)

#define rwp(i, ed, st) for (int i = ed; i >= st; i--)

#define mt(x) memset(x, 0, sizeof(x))

#define mp(x, y) memcpy(x, y, sizeof(y))

#define lson(x) x * 2

#define rson(x) x * 2 + 1

#define inf 0x7fffffff

#define eps 1e-9

#define m 10005

#define n 505

using namespace std;

typedef long long ll;

struct code e1[m], e2[m];

struct node

node(int aa, int bb)

}d[n], tmp;

int dis[n][n], len[m], ls1[m], ls2[m], cnt, n, m, q, s, t;

bool vis[n][n], check;

ll ans1, ans2;

queue q1, q2;

int read(int &x)

while (s >= '0' && s <= '9')

return x * f;

}void addedge(int u, int v)

void addedge(int u, int v, int w, int c)

void spfa()

} for (int i = ls1[x]; i; i = e1[i].nxt)

} vis[x][z] = 0; }}

double jiao(node x, node y)

ll calc(ll x,ll y)

int main()

}scanf("%d", &q);

for (; q; q--)

int tail = 0;

rwp(i, n, 0)

if (dis[t][i] != inf)

if (tail == 1)

ans1 = 0; ans2 = 0;

double last = 0;

rep(i, 1, tail - 1)

}last = w;

if (i == tail - 1)

} printf("%lld %lld\n", ans1, ans2);

}}

上週熱點回顧(3 2 3 8)

熱點隨筆 這麼香的chrome外掛程式,你都安裝了嗎?有態度的小碼甲 net平台程式語言的衰敗 z語言 asp.net core 3框架揭秘 讀者群,歡迎加入 artech asp.net core 反向 部署知多少 聖傑 樹莓派3b安裝openwrt打造超級路由器 貓叔vincent 主題 atu...

bzoj3238 差異 字尾樹

題目大意 給你乙個字串 s 設 s i 是串 s 第 i 長的字尾,求 sum limits sum limits s i s j 2 times lcp s i,s j 其中 lcp x,y 表示字串 x 和字串 y 的最長公共字首 資料範圍 s 500000 最近發現字尾樹和 sam 沒學好,找...

jzoj P1330 迎接儀式

給出乙個不和諧的佇列,用 j 替代 教 z 替代 主 而乙個 j 與 z 組成的序列則可以描述當前的佇列。為了讓教主看得盡量舒服,你必須調整佇列,使得 jz 子串盡量多。每次調整你可以交換任意位置上的兩個人,也就是序列中任意位置上的兩個字母。而因為教主馬上就來了,時間僅夠最多作k次調整 當然可以調整...