浙大集訓day3 A

2022-09-14 22:39:26 字數 1418 閱讀 1920

浙大集訓day3:a

目前情況非常危險:

b和m都是玩家,另乙個人是冒名頂替者。

冒名頂替者一旦和兩個人的位置重合,就可以殺死其中乙個人。

給出兩個人的起點,冒名頂替者的起點,它們要去共同的終點。

預設冒名頂替者的速度是\(1\)。

詢問兩個人的最小速度,使得可以安全的抵達終點,不被冒名頂替者攔截。

做法:先處理出兩個起點到所有點的dij。

然後需要找到一條路徑,我抵達每個點都比另乙個人要快,這條路徑的貢獻就是這些點的最大速度,這些最大速度取最小

#includeusing namespace std;

const int maxn=1e5+100;

const int inf=1e9;

typedef long long ll;

vector> g[maxn];

int d[maxn][3];

unsigned long long c[maxn][3];

int vis[maxn];

int c,i,d,n,m;

struct qnode

bool operator < (const qnode &r) const

};double ans=1e9;//有一條路徑,我抵達每個點都比另乙個人要快,這條路徑的貢獻就是這些點的最大速度,這些最大速度取最小

//計算起點到每個點要多少速度才能抵達

vector> tp[maxn];//後繼網路

void dij (int s,int f)

priority_queueq;

d[s][f]=0;

c[s][f]=1;

q.push(qnode(s,d[s][f]));

while (q.size())

};void dij1 (int s)

q.push(qqnode(s,pp[s]));

pd[s]=pp[s];

while (q.size())

} }}int main ()

scanf("%d%d%d",&c,&i,&d);

dij(c,0);

dij(d,1);

dij(i,2);

if (d[d][0]==inf) return printf("-1\n"),0;

if (d[d][2]==inf) return printf("0.000000\n"),0;

if (d[d][2]==0) return printf("-1\n"),0;

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

dij1(c);

if (pd[d]==inf) return printf("-1\n"),0;

printf("%.6f\n",pd[d]);

}

北京集訓DAY3

消去合法的序列 剩下的不合法序列一定是 3兩種括號個數各加1除2 手算一下即可4 5 include 6 include 7 include 8 9const int maxn 100010 10 11int len,top,cnt 1213 char s maxn 1415 inthh 25int...

省隊集訓DAY3

一共要使用六根木棍,那麼分割的方法就兩種,那麼關鍵就是要計算2,3的數量。cnt1 i 表示每種長度的木棍的方案數 cnt2 i 最初表示用不同的木棍拼成長度為i邊的方案數,後來表示選出四根木棍構成的方案數。cnt22 i 表示用兩個長度相同的不同木棍拼成長度為i的邊的方案數。cnt3 i 表示用三...

紀中集訓 Day 3

這幾天一直堅持寫blog 加油吧!早上醒來,說了 我要ak 其實只是蒟蒻的妄想罷了qaq 然後為了不立flag,改成了我要rank 1 然後依舊是有一題不會做qaq 好弱,爭取有一次能全會做吧qaq 然後就230了 rank1 第3題果真是爆搜不過就算寫也難寫啦啦啦 a組的題又是喪病,t1數學題什麼...