給出行星的數目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次調整 當然可以調整...