YACS 2023年1月月赛 甲组 T1 树的独立集 题解
半夜 12:00 我不睡觉来这里更文章来了。。。
这次的甲组好简单,第一次
这题看上去很难,要求什么不挨边,其实分析一下就是 树形
首先要求不挨边,所以我们需要每个点选不选的状态,那么设
为以
如果
乘起来就好了,我用的
代码:
#include <vector> #include <iostream> #define int long long using namespace std; int n, mod = 1000000007; int p[200005], f[200005][2]; vector <int> v[200005]; int dfs (int x) { f[x][0] = f[x][1] = 1; for (int i = 0;i < v[x].size (); i ++) dfs (v[x][i]); -- f[x][0]; f[p[x] ][0] = f[p[x] ][0] * (f[x][1] + f[x][0] + 1) % mod; f[p[x] ][1] = f[p[x] ][1] * (f[x][0] + 1) % mod; return (f[x][0] + f[x][1] + 1) % mod; } signed main () { cin >> n; for (int i = 2; i <= n; i ++) { cin >> p[i]; v[p[i] ].push_back (i); } cout << dfs (1); return 0; }
分类:
YACS甲组月赛题解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异