題外話:
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,這個數隻算一...