題解 神奇校內POIN模擬賽 小凱的疑惑

2022-07-25 16:48:26 字數 1114 閱讀 3518

題外話:

sol:套路

我:???這是什麼神仙思路?、

給定一棵有\(n\)個節點的樹,你可以選擇一些點,這些點不能相鄰

你所得到的總價值為這些節點的權值的乘積

求最大的價值\(mod 998244353\)

考慮乙個神奇的東西:對數

顯然我們有:

如果\[ab=c

\]那麼

\[log_x(a)+log_x(b)=log(c)

\]所以,問題轉化為樹的最大權獨立集

經典問題,樹形dp即可

#include #include #include #include #include using namespace std;

const int n=200010;

const int m=n;

const int mod=998244353;

inline void read(int &x)

ch=getchar();

}while(ch>='0'&&ch<='9')

x*=f;

}struct note ;

int cnt;

int head[n];

note e[m<<1];

int n;

inline void add(int x,int y)

double f[n][2];

double val[n];

int v[n];

void dfs(int p,int fa)

dfs(t,p);

f[p][1]+=f[t][0];

f[p][0]+=max(f[t][1],f[t][0]);

}}int ans=1;

void dfs2(int p,int fa,bool d)

for(int i=head[p];i+1;i=e[i].next)

if (d) else else }}

}int main()

for(int i=1;idfs(1,-1);

if (f[1][0]printf("%d\n",ans);

return 0;

}

2022 2 13校內模擬賽題解報告

思路 既然每個壓縮的串必須比原先的短,還要相同串壓縮必須相同,自然想到 stl 的 map 容器,對映一下即可,如何壓縮串?考完聽 ghc 講他的 dfs 感覺太複雜了,為什麼不直接隨機呢,每次 rand 26 97 即可,題目保證有解也就是不可能原串長為 1,則每次rand的次數是 len 1,比...

2020藍橋杯校內模擬賽題解

第二題 問題描述 在1至2019中,有多少個數的數字中包含數字9?注意,有的數中的數字包含多個9,這個數隻算一次。例如,1999這個數包含數字9,在計算只是算乙個數。include using namespace std intmain cout count endl cout ending.end...

2023年藍橋杯校內模擬賽題解

1200000有多少個約數 只計算正約數 include int main printf d n count return 0 在計算機儲存中,15.125gb是多少mb?include int main 在1至2019中,有多少個數的數字中包含數字9?注意,有的數中的數字中包含多個9,這個數隻算一...