2019 ICPC 南京網路賽D Robots

2021-09-26 20:28:58 字數 2564 閱讀 2801

link:

思路link: 題意

給出乙個n個點的dag,起點保證為1,終點保證為n,在每乙個點,每一天有等概率走向其相鄰的點或是停在原點。在第i天的損耗值為i,求走到終點的期望損耗值。

思路定義兩個陣列d[i

],c[

i]

d[i],c[i]

d[i],c

[i]分別代表第i個位置到終點的期望天數以及期望損耗值。

可以這麼理解:第一天的損耗值為1,第二天為2,……,第x天為x。可以等價為第一天為x,第二天為x-1,……,第x天為1。

這樣第i

ii個位置的期望損耗值可以由其指向的點j

jj更新而得,期望損耗值為c[j

]+d[

j]+1

c[j]+d[j]+1

c[j]+d

[j]+

1。可以列出方程:

d [i

]=∑d

[j]x

+1+d

[i]x

+1+1

d[i] = \frac}+\frac+1

d[i]=x

+1∑d

[j]​

+x+1

d[i]

​+1c[i

]=∑c

[j]+

d[j]

+1x+

1+c[

i]+d

[i]+

1x+1

c[i] =\frac}+\frac

c[i]=x

+1∑c

[j]+

d[j]

+1​+

x+1c

[i]+

d[i]

+1​解得:

d [i

]=∑d

[j]x

+x+1

xd[i] = \frac}+\frac

d[i]=x

∑d[j

]​+x

x+1​

c [i

]=∑c

[j]+

d[j]

+1x+

d[i]

+1

xc[i] = \frac}+\frac

c[i]=x

∑c[j

]+d[

j]+1

​+xd

[i]+

1​期望由於要逆推,所以需要先搞出拓撲序,然後從拓撲序反向更新。

**

//

// created by yjq on 2019/9/4.

//#include

using

namespace std;

#define ll long long

#define ld long double

#define ull unsigned long long

#define __ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)

const

int maxn =

5e5+10;

struct pxy e[maxn *2]

;int head[maxn]

, cnt, id[maxn]

, od[maxn]

;void

ins(

int x,

int y)

int n, m;

ld d[maxn]

, c[maxn]

;queue<

int> q;

vector<

int> v;

intmain()

v.clear()

;for

(int i =

1; i <= n;

++i)

while

(!q.

empty()

)}memset

(d,0

,sizeof d)

;memset

(c,0

,sizeof c)

; d[n]=0

; c[n]=0

;for

(int i =

(int

) v.

size()

-2; i >=0;

--i)

d[x]

= w /

(ld) od[x]

+(ld)

(od[x]+1

)/(ld) od[x];}

for(

int i =

(int

) v.

size()

-2; i >=0;

--i)

c[x]

= w /

(ld) od[x]

+(d[x]

+1.0)/

(ld) od[x];}

cout << fixed <<

setprecision(2

)<< c[1]

<< endl;

}return0;

}

2019icpc南京網路賽 A 主席樹

給乙個 n times n 的螺旋矩陣,給出其中的 m 個點的值分別為各個點上數字的數字之和,給出 q 個詢問,每次詢問從 x1,y1 到 x2,y2 的子矩陣的和。用官方題解的方法 o 1 推出點 x,y 上的值,將這 m 個點按 x 排序後依次按 y 建主席樹,查詢時找到對應的 x1 和 x2 ...

2019ICPC南京網路賽A 離線樹狀陣列

題目鏈結 分析 一次詢問可以分為四次字首詢問,將每次詢問按照y公升序排序,維護乙個x上的樹狀陣列就行了。難點在於計算對應點的值 不會 include using namespace std typedef long long ll const int maxn 1e6 5 ll bit maxn a...

2019 icpc 上海網路賽

題意 t組案例,每組案例 n個燈泡 0 n 1 初始所有燈泡為熄滅狀態,m次操作,每次操作把區間 l,r 內的燈泡翻轉 開變關,關變開 問m次操作之後有多少燈泡是亮著的。題解 每次操作對 l,r 的所有數進行 1操作,求最後有多少個奇數。設該陣列為a n 每次操作a l 1,a r 1 1,求字首和...