不知道說啥思路
這道題就是先跑一次線段樹看看建出來的圖是不是和輸入一樣
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#if __cplusplus >= 201103l
#include
#include
#endif
#define ll long long
using
namespace std;
const
int inf =
0x3f3f3f3f
;int b[
600]
[600
],c[
600]
[600];
int f[
600]
;struct suta[
1000010];
intcmp
(sut a,sut b)
intfind
(int x)
intuni
(int a,
int b)
return0;
}int
main()
}}bool flag=0;
sort
(a+1
,a+1
+cnt,cmp)
;for
(int i=
1;i<=n;i++
) f[i]
=i;int sum=
0,ans=0;
vector<
int> res;
for(
int i=
1;i<=n;i++)}
//除了對角線的都設成inf
for(
int i=
1;i<=cnt;i++)if
(sum==n-1)
break;}
for(
int k=
1;k<=n;k++
)for
(int i=
1;i<=n;i++
)for
(int j=
1;j<=n;j++
) c[i]
[j]=
min(c[i]
[j],c[i]
[k]+c[k]
[j])
;for
(int i=
1;i<=n;i++)}
if(flag) cout<<
"no"
<
else
return0;
}
2021牛客寒假第六場 動態最小生成樹(線段樹)
題目大意 有一張 n nn 個點,m mm 條邊的圖,每條邊連線點 ui,vi u i,v i ui vi 邊權為 w iw i wi 現要進行 q qq 次如下兩種操作種的一種 修改第 x xx 條邊為連線點 y,z y,zy,z 邊權為 ttt 查詢只用 l,r l,r l,r 範圍內的邊,得到...
牛客多校第六場
d 題意感覺說的不是很清楚,一開始題意弄錯了,以為是最優的方案,結果是對於每個盒子這個 so clever 的人的做法是優先選擇盡可能大的物品裝完乙個盒子,我就不知道這個人 聰明了。思路 賽後知道題意後,5分鐘寫完,瞎暴力就一發過了,我自己都有點出乎意料真水了。includeusing namesp...
2019牛客多校第六場C(PAM)
傳送門 不會pam,建議看一下該部落格pam 維護乙個陣列,表示節點對於答案的貢獻 那麼如何計算這個值呢,首先我們需要知道它是由誰轉移而來的,比如該節點表示的是aabbbbaa,他是由abbbba轉移而來的,我們在計算aabbbbaa時首先要加上abbbba,然後還有一些fail邊連向的點首先我們來...