內網傳送門
很明顯的乙個網路流。
轉換一下題意,相當於求保留航線的最大值。所以我們把邊權取負跑最小費用流。
有乙個坑點,就是我們只需要費用最小,不要求流量最大,所以不應該用最小費用最大流。
有兩個解決辦法:
用最小費用可行流。
連 ( i,
t,1,
0)(i,t,1,0)
(i,t,1
,0) 的邊,表示不選 i
ii 連出去的航線。
**是抄參考的這裡。
#include
#include
#include
#define n 1000005
#define ll long long
using
namespace std;
int n,t,ans,cnt,tot;
int d[n]
,q[n]
,val[n]
,lc[n]
,rc[n]
,son[n]
,l[n]
,size[n]
,root[n]
,tag[n]
;int first[n]
,v[n]
,w[n]
,nxt[n]
;ll sum[n]
;void
add(
int x,
int y,
int z)
intnewnode
(int v)
void
inorder
(int x)
void
pushup
(int x)
void
zig(
int&root)
void
zag(
int&root)
const
double alpha=
0.75
;void
insert
(int
&root,
int v)
size[root]
++,sum[root]
+=v;
if(v<=val[root]
)insert
(lc[root]
,v),
(size[lc[root]
]>=size[root]
*alpha)?(
zig(root),1
):1;
else
insert
(rc[root]
,v),
(size[rc[root]
]>=size[root]
*alpha)?(
zag(root),1
):1;
}void
join
(int u,
int v,
int w)
ll query
(int root,
int v)
bool
check
(int u,
int time)
void
solve
(int x)
}void
dfs1
(int x,
int fa)
}void
dfs2
(int x,
int fa)
solve
(x);
}int
main()
dfs1(1
,0),
dfs2(1
,0);
printf
("%d\n"
,ans)
;return0;
}
校內模擬 鎖
沒有標籤是因為我真的不知道這算什麼型別 這題我說不來大意你們還是看題面描述吧 小z住的房子一共有n個人,他們每人有乙個重要度。房子的門上可以裝若干把鎖。假設共有k把鎖,命名為1到k。每把鎖有一種對應的鑰匙,也用1到k表示。鑰匙可以複製若干份並發給任意多個居民。每個人都可以持有若干鑰匙,可以不持有鑰匙...
校內模擬 assignment(DP)
題面見校內oj4693 考慮預處理f k i j f k i j f k i j 表示最長的一段不超過k kk的時候,將長度為i ii的序列分為j jj段的方案數。在k kk相同的狀態之間轉移,顯然有f i j f i 1 j f i 1 j 1 f i k 1 j 1 f i j f i 1 j ...
2019 10 12 校內模擬
內網傳送門 今天考 noip 模擬,拿了 270 27027 0 分,我要膨脹了。主要還是運氣好,t3 做過原題,t2 算是某道題的弱化版,t1 推了個結論用 o n log 2n o n log 2n o nlog2n 水過了 106 10 6 106 的資料。這題其實挺簡單的,把圖的點雙求出來之...