這題目比較特殊點在於他的邊權是2^i,比賽的時候傻,沒有想到有什麼用,後來看到題解,如果構出一顆最小生成樹,那麼最短路一定在最小生成樹上面,這樣子就變成了一棵樹上在原圖中的奇點要配對,因為樹上的一些奇怪性質,我們可以之間貪心得出答案,最後答案就是所有邊權加上最小生成樹上面貪心的結果。
#include#include#include#include#define mo 998244353
#define n 500005
#define ll long long
using namespace std;
ll du[n],last[n],g[n],fa[n],n,m,v,u,o,ans,cnt,s;
struct treee[n*2];
void add(ll x,ll y,ll w)
void dfs(int x,int fa)
}ll father(ll x)
int main()
} dfs(1,0);
printf("%lld",ans%mo);
}
計蒜客NOIP2018模擬1
t1 最失敗的一道題,其實就是道水題,好幾種寫法,一種都沒想出來。題意轉化後就是 每個數可以選a i 和a i k,最後求使1,2,3,t都存在的最大的t 1和最多能讓多少個數小於等於t。為什麼第一問可以轉化成求有多少個數小於等於t呢?首先不大於k的怪物可以直接殺死,然後大於k的怪物顯然當且僅當血量...
NOIP2018 模擬賽day1 塔
小 a 想搭乙個體積不超過 m 的塔,他有各種大小的立方積木,比 如邊長為 a 的積木,體積為 a 3,現在小 a 需要你給乙個 x,每次小 a 會用乙個體積不超過 x 的最大積木,依次到搭好為止,現在他想最 大化積木的個數,同時在積木個數最大的情況下使 x 最大。這道題只有那麼神奇了,寶寶看了n久...
NOIP2018模擬9 15總結
就是這樣 分數100 80 60 240 rank1 暴力真是爽 t1題意 有n個點,m條邊,k個特殊點,邊權為1 求每個點到離他最遠的特殊點的最短距離 nk 10000000 顯然暴力 t1 include define n 300001 using namespace std int i,j,k...