jzoj 5194 盟主的憂慮
jzoj 5907 輕功
問乙個樹中有多少個連通塊最大最小點權之差等於kkk
也就是(
<=k
)的個數
−(
<=k
−1)的
個數
(<=k)的個數-(<=k-1)的個數
(<=k
)的個數
−(<=k
−1)的
個數,那麼就可以列舉點,對於這個點求的是以它為最大點權符合要求的個數,那麼容易得到合法條件a[m
ax]≥
a[so
n]且a
[max
]−a[
son]
≤m且s
on
>ma
x(避免
點權重複
)或者a
[mx]
<
>a[
son]
a[max]\geq a[son]且a[max]-a[son]\leq m且son>max(避免點權重複)或者a[mx]<>a[son]
a[max]
≥a[s
on]且
a[ma
x]−a
[son
]≤m且
son>ma
x(避免
點權重複
)或者a
[mx]
<
>a[
son]
根據乘法原理得到dp(
max)
=∏i=
son∈
maxd
p(i)
+1
dp(max)=\prod _^
dp(max
)=i=
son∈
max∏
dp(i
)+1
#include
#define rr register
using
namespace std;
const
int mod=
19260817
;struct nodee[
6701];
int k=
1,ls[
3401
],a[
3401
],n,ans,m;
inline
signed
iut(
)inline
void
add(
int x,
int y)
; ls[x]
=k; e[
++k]
=(node)
; ls[y]
=k;}
inline
signeddp(
int x,
int fa,
int mx)
return ans;
}signed
main()
在一棵樹上刪掉一條邊後找一條邊權最小的邊使其恢復刪掉的邊的連通性
也就是說多餘的邊的兩點所經過的邊是被多餘的邊的邊權貢獻的,所以說可以用並查集維護
#include
#include
#include
#define rr register
#define max(a,b) (((a)>(b))?(a):(b))
#define min(a,b) (((a)<(b))?(a):(b))
using
namespace std;
const
int n=
100001
;struct nodee[n*3]
;int n,m,f[n+1]
,k,pre[n+1]
,ans[n+1]
,ls[n+1]
,dep[n+1]
,father[n+1]
;inline
signed
iut(
)inline
signed
add(
int x,
int y,
int w)
; ls[x]
=k; e[
++k]
=(node)
; ls[y]
=k;}
signed
cmp(node a,node b)
inline
void
print
(int ans)
inline
void
bfs()}
inline
signed
getf
(int u)
inline
void
doit
(int
&x,int y)
signed
main()
;sort
(e+1
,e+1
+m,cmp)
;bfs()
;//從小到大排序
for(rr int i=
1;i<=m;
++i)
for(rr int i=
1;i++i)
print
(ans[i]),
putchar(10
);return0;
}
從起點0到終點n
nn,可以選擇花費w
iw_i
wi秒經過c
ic_i
ci個木樁,但其間不能有限制,更換i
ii需要t
tt的時間,第1次選擇不需要時間,問最少的時間
那麼就是動態規劃了
f [n
][k]
f[n][k]
f[n][k
]表示到達點n
nn並使用過第k
kk種方式的最少時間
f [x
+c[i
]][i
]=mi
nf[x+c[i]][i]=min\
f[x+c[
i]][
i]=m
in初始化f[c
[i]]
[i]=
w[i]
f[c[i]][i]=w[i]
f[c[i]
][i]
=w[i
]最後答案min
min\
min
#include
#include
#define rr register
#define r(i,a,b) for (rr int i=a;i<=b;++i)
#define min(a,b) (((a)<(b))?(a):(b))
using
namespace std;
int n,k,tim,c[
101]
,w[101
],s[
501]
[101
],minn=
2147483647
;long
long ans,f[
501]
[101];
inline
signed
iut(
)signed
main()
2023年10月30日提高組 T1 A
求樹上聯通快中最大值與最小值之差為k kk的方案數 設最大值與最小值之差為xxx x xx正好為k kk的方案數 x k x leq k x k 的方案數 x x k的方案數 於是我們就可以樹形dpdp dp啦fi fs on 1 f i prod f 1 fi fson 1 include def...
2023年10月30日提高組模擬賽 總結
首先初步閱題,發現t1t1 t1暴搜能拿分,先跳,看到第二題,很明顯的最優化問題,於是dpdp dp過掉,第三題發現最短路可以拿分,先打了個最短路,後面發現可以用並查集70分,第一題最後打了個dfs dfsdf s 40分,竟然水過了wyc wycwy c大佬,深感愧疚!佔比方法10 50 d fs...
2023年10月30日提高組 T3 C
給定一棵無邊權樹,中間新穿插m mm條有邊權的邊,問原樹中所有邊連向的兩個點在失去此邊後的最短路 比較容易想到暴力spf aspfa spfa o n ke o nke o nke include include include include using namespace std int n,m...