当前位置:网站首页>B-杰哥的树(状压树形dp)
B-杰哥的树(状压树形dp)
2022-07-06 12:18:00 【朴小明】
链接:杰哥的树
题意:
给定一棵树,边权 是
这六个字符,求不同的路径数,要求路径上的字符都恰好出现偶数次。
做法:
只关心奇偶,那么一个字符就可有两个状态——1代表奇数个,0代表偶数个,要想同时表示六个字符是奇数还是偶数,就可用0~63来表示。
定义
为以第
个节点为起点,状态为
有多少路径数量,如果
的儿子是
,当前字符是
,那么
,除了由儿子的状态转移而来,还会有新的状态,不继承儿子的状态,
到
的这条边也可单独作为一个状态,则当
时,
。
还要考虑点
作为中间节点的情况,这个简单,由
计算即可。
代码:
struct tree
{
int y, val;
};
vector<tree> v[N];
int f[N][1ll << 6];
int ans;
void dfs(int x, int fa)
{
f[x][0] = 0;
for (auto tt : v[x])
{
int y = tt.y, val = tt.val;
if (y == fa) continue;
dfs(y, x);
for (int i = 0; i < (1ll << 6); i++)
{
f[x][i] += f[y][i ^ (1ll << val)];
if (i == (1ll << val)) f[x][i]++; //不能乱加1,之所以加1,是因为定义x这个点只出一条边
}
}
ans += f[x][0];
int sum = 0;
for (auto tt : v[x])
{
int y = tt.y, val = tt.val;
if (y == fa) continue;
for (int i = 0; i < (1ll << 6); i++)
{
int x1 = f[x][i] - f[y][i ^ (1ll << val)] - (i == (1ll << val));
int x2 = f[y][i ^ (1ll << val)] + (i == (1ll << val));
sum += x1 * x2;
}
}
ans += sum / 2;
}
void solve()
{
int n;
cin >> n;
for (int i = 1; i <= n - 1; i++)
{
int x, y;
char c;
scanf("%lld%lld", &x, &y);
cin >> c;
v[x].emplace_back(tree{y, c - 'a'});
v[y].emplace_back(tree{x, c - 'a'});
}
dfs(1, 0);
cout << ans << "\n";
}边栏推荐
- Monthly report of speech synthesis (TTS) and speech recognition (ASR) papers in June 2022
- 数字三角形模型 AcWing 1018. 最低通行费
- String长度限制?
- Standardized QCI characteristics
- Redisson bug analysis
- 【云原生与5G】微服务加持5G核心网
- 腾讯架构师首发,2022Android面试笔试总结
- Linear distance between two points of cesium
- 某东短信登录复活 安装部署教程
- MySQL must know and learn
猜你喜欢

rt-thread i2c 使用教程

In simple terms, interview surprise Edition

OceanBase社区版之OBD方式部署方式单机安装
腾讯字节等大厂面试真题汇总,网易架构师深入讲解Android开发

beegfs高可用模式探讨

【Yann LeCun点赞B站UP主使用Minecraft制作的红石神经网络】

Redisson bug analysis

腾讯T3手把手教你,真的太香了
Classic 100 questions of algorithm interview, the latest career planning of Android programmers

Understand yolov1 Part II non maximum suppression (NMS) in prediction stage
随机推荐
Method keywords deprecated, externalprocname, final, forcegenerate
5. Nano - Net in wireless body: Top 10 "is it possible?" Questions
Case ① | host security construction: best practice of 3 levels and 11 capabilities
Example of shutter text component
新一代垃圾回收器—ZGC
The "white paper on the panorama of the digital economy" has been released with great emphasis on the digitalization of insurance
Alibaba data source Druid visual monitoring configuration
From spark csc. csr_ Matrix generate adjacency matrix
RT-Thread 组件 FinSH 使用时遇到的问题
广州首个数据安全峰会将在白云区开幕
Vscode debug run fluent message: there is no extension for debugging yaml. Should we find yaml extensions in the market?
Pay attention to the partners on the recruitment website of fishing! The monitoring system may have set you as "high risk of leaving"
After solving 2961 user feedback, I made such a change
MySQL must know and learn
腾讯字节阿里小米京东大厂Offer拿到手软,老师讲的真棒
案例 ①|主机安全建设:3个层级,11大能力的最佳实践
5. 無線體內納米網:十大“可行嗎?”問題
《数字经济全景白皮书》保险数字化篇 重磅发布
Leetcode brush first_ Maximum Subarray
Microservice architecture debate between radical technologists vs Project conservatives