当前位置:网站首页>B-jiege's tree (pressed tree DP)
B-jiege's tree (pressed tree DP)
2022-07-06 20:15:00 【Park Xiaoming】
link : Jack's tree
The question :
Given a tree , Border right yes These six characters , Find different path numbers , The characters on the path are required to appear exactly an even number of times .
practice :
Only care about parity , Then a character can have two states ——1 Represents an odd number of ,0 Represents an even number of , To indicate whether six characters are odd or even at the same time , You can use 0~63 To express .
Definition In order to
A node is the starting point , Status as
How many paths are there , If
My son is
, The current character is
, that
, Except for the transfer from the son's state , There will be a new state , The state of not inheriting a son ,
To
This side of can also be used as a state alone , Then when
when ,
.
There are also some considerations As an intermediate node , This simple , from
Calculation is enough .
Code :
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]++; // Don't add 1, The reason to add 1, Because of the definition x This point has only one side
}
}
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";
}
边栏推荐
- POJ 3207 Ikki&#39;s Story IV – Panda&#39;s Trick (2-SAT)
- PHP and excel phpexcel
- 数字三角形模型 AcWing 1018. 最低通行费
- 5. Nano - Net in wireless body: Top 10 "is it possible?" Questions
- 【计网】第三章 数据链路层(3)信道划分介质访问控制
- Linear distance between two points of cesium
- String length limit?
- Cesium 点击绘制圆形(动态绘制圆形)
- Logstash expressway entrance
- js实现力扣71题简化路径
猜你喜欢
5. Nano - Net in wireless body: Top 10 "is it possible?" Questions
Tencent T3 Daniel will teach you hand-in-hand, the internal information of the factory
5. Wireless in vivo nano network: top ten "feasible?" problem
【计网】第三章 数据链路层(4)局域网、以太网、无线局域网、VLAN
Introduction of Xia Zhigang
Selenium advanced operations
02 基础入门-数据包拓展
【GET-4】
Tencent T4 architect, Android interview Foundation
语音识别(ASR)论文优选:全球最大的中英混合开源数据TALCS: An Open-Source Mandarin-English Code-Switching Corpus and a Speech
随机推荐
Vscode debug run fluent message: there is no extension for debugging yaml. Should we find yaml extensions in the market?
BUUCTF---Reverse---easyre
爬虫(14) - Scrapy-Redis分布式爬虫(1) | 详解
2022年6月语音合成(TTS)和语音识别(ASR)论文月报
Tencent T3 teaches you hand in hand. It's really delicious
Color is converted to tristimulus value (r/g/b) (dry stock)
Groovy基础语法整理
(3) Web security | penetration testing | basic knowledge of network security construction, IIS website construction, EXE backdoor generation tool quasar, basic use of
颜色(color)转换为三刺激值(r/g/b)(干股)
OceanBase社区版之OBD方式部署方式单机安装
Tencent cloud database public cloud market ranks top 2!
小微企业难做账?智能代账小工具快用起来
Groovy basic syntax collation
腾讯T3大牛手把手教你,大厂内部资料
Recyclerview not call any Adapter method :onCreateViewHolder,onBindViewHolder,
腾讯T3手把手教你,真的太香了
Appx代码签名指南
PowerPivot - DAX (first time)
Ideas and methods of system and application monitoring
Tencent T4 architect, Android interview Foundation