浙大集訓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數學題什麼...