BZOJ4873 Shoi2017 壽司餐廳

2021-08-02 08:10:09 字數 1649 閱讀 5526

bzoj4873

。。感覺網路流題目做的也不少了。。可是拿到了還是不會qa

q 一開始把mx

2+cx

的x看成了取的該種壽司的個數。。。

所求答案是獲得的美味度之和減去花費。可以聯想到最大權閉合子圖。

然後考慮一下依賴關係。

首先可以想到源向每個區間連邊,邊權為di

,j,這是收益。

在考慮花費,每一種壽司向匯連邊,花費應該是mx

2+cx

,可是這個

c 並不確定。

那麼轉化一下。答案=(美味度之和-∑c

x)-∑m

x2然後再考慮這個cx

減再**。顯然應減在單個壽司的收益中,對於a[

i]=x

,d[i

][i]

−=x

i!=j

時選了di

,j就一定會選di

+1,j

和di,

j−1

那麼區間i,

j ;向i+

1,j 和i,

j−1 連邊,邊權為in

f an

s=正權

和−最小

#include 

#include

#include

#include

#include

#include

#define n 100005

#define m 600005

#define mod 20170408

#define inf 0x7fffffff

using

namespace

std;

typedef

long

long ll;

typedef

unsigned

long

long ull;

const ull base=31;

ll read()

while(isdigit(ch))

return x*f;

}int n,m,cnt=1,s,t,num,ans,k;

int b[m],p[n],nextedge[m],w[m],cur[n];

int level[n],d[105][105],a[105],id[105][105];

void add(int x,int y,int z)

void anode(int x,int y,int z)

bool bfs()}}

return level[t];

}int dfs(int x,int maxf)

}if(!rtn) level[x]=0;

return rtn;

}int dinic()

return rtn;

}void input_init()

void build_graph()

y=id[i+1][j];anode(x,y,inf);

y=id[i][j-1];anode(x,y,inf);}}

for(int i=1;i<=k;i++) anode(num+i,t,m*i*i);

}int main()

Bzoj3562 神器化合物 Shoi 2014

ac通道 分析 若把每乙個原子看作乙個節點,將化學鍵看作一條邊,那麼這個題目要求的 分子的個數 很容易就可以看出是求圖中聯通塊的個數。求聯通塊的個數,可以使用並查集。可如何求出每一步的聯通塊的個數呢?可以知道,當連上一條邊時,若此邊連線的是兩個不同的聯通塊,那麼分子個數就會減一 當刪去一條邊時,若刪...

BZOJ 3566 SHOI2014 概率充電器

題目 題意 給定樹形結構的n個元件,每個元件有一定概率自己充電,還有一定概率通過某條邊給其他元件充電,求充電的元件期望個數。n 500000 題解 樹形結構肯定能想到樹形dp,全樹對某點產生的貢獻一般可以通過一到兩遍樹形dp計算得出,本題所求期望等於每個元件被充電的概率之和。設f i 表示i被充電的...

bzoj3566 SHOI2014 概率充電器

n個充電器連成一棵樹。第i個充電器有p i 的概率直接充電。每條導線有一定機率可以導電。可以導電的導線形成的聯通塊中只要存在直接充電的結點整個聯通塊的充電器均進入充電狀態。問期望進入充電狀態的充電器個數 顯然可知我們只需要得到f i 表示i進入充電狀態的概率 那麼a ns f i 我們把無根樹變有根...