6.26-7.4做题记录
没去想最优解,无脑树剖。
看到大纲里有就去学了下,不过没过几天现在好像忘了。
组合数学能力还是很差,自己没推出式子来。
离散化完拿树状数组乱搞。
挺妙的感觉,考场上的时候没做出来。
挺一眼的,不过细节有点难调。
一开始当二维数点去做,没调出来换了种做法。
复习强连通分量。
显然对于一个环所有点都能到,缩点后如果出度为
缩点完拓扑排序+最长路计数。
建图挺妙的,想不到。
挺板的,答案也比较好观察出来。
了解了下bitset。
写的暴力dp
计
每个
先跑行的单调队列存入新数组,新数组再跑一边。
每个点搜完后看看有没有自己能开灯的点可以拓展。
也是记录
换根dp。
不妨钦定
子节点
code
LL mylog(LL v)
{
if(v == 0) return 10;
int res = 0;
while(v) res ++, v /= 10;
return pow(10, res);
}
LL val(int u, int v) // u -> v 的贡献
{
return (dp1[u] * mylog(w[v]) + siz[u] * w[v]) % mod;
}
void dfs1(int u, int fa)
{
siz[u] = 1;
for(auto v : e[u])
if(v != fa)
{
dfs1(v, u);
siz[u] += siz[v];
dp1[u] = (dp1[u] + dp1[v]) % mod;
}
dp1[u] = (dp1[u] * mylog(w[u]) % mod + w[u] * siz[u] % mod) % mod;
}
void dfs2(int u, int fa)
{
for(auto v : e[u])
if(v != fa)
{
dp2[v] = ((dp1[u] + dp2[u] - val(v, u) - w[u]) % mod * mylog(w[v]) % mod + (siz[1] - siz[v] + 1) % mod * w[v] % mod) % mod;
dfs2(v, u);
}
}
code
void dfs1(int u, int fa)
{
// dp1[u] = dp1[v] + siz[v] * val[i];
siz[u] = c[u];
for(int i = h[u]; i; i = nxt[i])
{
int v = to[i];
if(v == fa) continue;
dfs1(v, u);
siz[u] += siz[v];
dp1[u] += dp1[v] + siz[v] * val[i];
}
}
void dfs2(int u, int fa)
{
// 1->u dp2[u]=dp1[1]-siz[u]*val[i]+(siz[1]-siz[u])*val[i]
// u->v dp2[v](dp1[u]+dp2[u]-dp1[v]-siz[v]*val[i])+(siz[1]-siz[v])*val[i]
for(int i = h[u]; i; i = nxt[i])
{
int v = to[i];
if(v == fa) continue;
dp2[v] = (dp1[u] + dp2[u] - dp1[v] - siz[v] * val[i]) + (siz[1] - siz[v]) * val[i];
dfs2(v, u);
}
}
code
void dfs1(int u, int fa)
{
// dp1[u][0]=c[u]
// for(i,1,k) dp1[u][i]+=dp1[v][i-1]
dp1[u][0] = c[u];
for(auto v : e[u])
if(v != fa)
{
dfs1(v, u);
for(int i = 1; i <= k; i ++)
dp1[u][i] += dp1[v][i - 1];
}
}
void dfs2(int u, int fa)
{
// 1->u
// dp2[u][1]=c[1]
// for(i,2,k) dp2[u][i]=dp1[1][i-1]-dp1[u][i-2]
// u->v
// dp2[v][1]=c[u]
// for(i,2,k) dp2[v][i]=dp1[u][i-1]+dp2[u][i-1]-dp1[v][i-2]
for(auto v : e[u])
if(v != fa)
{
dp2[v][1] = c[u];
for(int i = 2; i <= k; i ++)
dp2[v][i] = dp1[u][i - 1] + dp2[u][i - 1] - dp1[v][i - 2];
dfs2(v, u);
}
}
剩下的不想打了,都是些板子题或者和前面的题有相似之处。
学了点数论和网络流。
写了点dp。
准备开始肝一段时间dp了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现