牛客 216 C 小K的疑惑
大意: 给定树, 求多少个三元组(i,j,k), 满足dis(i,j)=dis(j,k)=dis(k,i).
刚开始想复杂了, 暴力统计了所有的情况.
#include <iostream>
#include <queue>
#include <cstdio>
#define REP(i,a,n) for(int i=a;i<=n;++i)
using namespace std;
typedef long long ll; const int N = 1e4+10;
int n, dep[N];
struct _ {int to,w;};
vector<_> g[N];
int dp[N][2];
ll ans; void dfs(int x, int fa, int d) {
dep[x] = d, ++ans;
ll c00 = 0, c11 = 0;
for (_ e:g[x]) if (e.to!=fa) {
int y = e.to;
dfs(y,x,d+e.w&1);
ans += 6ll*c00*dp[y][0];
ans += 6ll*c11*dp[y][1];
ans += 6*dp[y][dep[x]];
ans += 12ll*dp[x][dep[x]]*dp[y][dep[x]];
ans += 6ll*dp[y][dep[x]]*(dp[y][dep[x]]-1)/2;
ans += 6ll*dp[x][!dep[x]]*dp[y][!dep[x]];
c00 += (ll)dp[y][0]*dp[x][0];
c11 += (ll)dp[y][1]*dp[x][1];
dp[x][0] += dp[y][0];
dp[x][1] += dp[y][1];
}
for (_ e:g[x]) if (e.to!=fa) {
int y = e.to;
ans += 6ll*dp[y][0]*(dp[y][0]-1)/2*(dp[x][0]-dp[y][0]);
ans += 6ll*dp[y][1]*(dp[y][1]-1)/2*(dp[x][1]-dp[y][1]);
}
++dp[x][dep[x]];
} int main() {
scanf("%d", &n);
REP(i,2,n) {
int u, v, w;
scanf("%d%d%d", &u, &v, &w);
g[u].push_back({v,w});
g[v].push_back({u,w});
}
dfs(1,0,0);
printf("%lld\n", ans);
}
实际上可以发现所有路径都满足 奇奇奇 或 偶偶偶.
#include <iostream>
#include <queue>
#include <cstdio>
#define REP(i,a,n) for(int i=a;i<=n;++i)
using namespace std;
typedef long long ll; const int N = 1e4+10;
int n, dep[N];
struct _ {int to,w;};
vector<_> g[N];
int dp[N][2], ans[2]; void dfs(int x, int fa, int d) {
++ans[d];
for (_ e:g[x]) if (e.to!=fa) {
int y = e.to;
dfs(y,x,d+e.w&1);
}
} int main() {
scanf("%d", &n);
REP(i,2,n) {
int u, v, w;
scanf("%d%d%d", &u, &v, &w);
g[u].push_back({v,w});
g[v].push_back({u,w});
}
dfs(1,0,0);
printf("%lld\n",(ll)ans[0]*ans[0]*ans[0]+(ll)ans[1]*ans[1]*ans[1]);
}
牛客 216 C 小K的疑惑的更多相关文章
- NowCoder--牛客练习赛30 C_小K的疑惑
题目链接 :牛客练习赛30 C_小K的疑惑 i j k 可以相同 而且 距离%2 只有 0 1两种情况 我们考虑 因为要 d(i j)=d(i k)=d(j k) 所以我们只能找 要么三个点 任意两个 ...
- 牛客练习赛$48E$ 小$w$的矩阵前$k$大元素 堆
正解:堆 解题报告: 传送门$QwQ$ 考虑把$b$从大往小排序,然后把$a_1+b_1,a_2+b_1,...,a_n+b_1$丢到堆里,顺便记录下$b$的下标 然后每次拿出一个最大值,设为$mx= ...
- 牛客网 查找第K小数
题目链接:https://www.nowcoder.com/practice/204dfa6fcbc8478f993d23f693189ffd?tpId=40&tqId=21522&t ...
- 牛客挑战赛30 小G砍树 树形dp
小G砍树 dfs两次, dp出每个点作为最后一个点的方案数. #include<bits/stdc++.h> #define LL long long #define fi first # ...
- 欧拉函数 牛客寒假1 小a与黄金街道
题目链接 分析:这题用到了欧拉函数, 欧拉函数,用φ(n)表示 欧拉函数是求小于等于n的数中与n互质的数的数目 详细可以看看这篇博文https://www.cnblogs.com/linyujun/p ...
- 牛客训练:小a与黄金街道(欧拉函数+快速幂)
题目链接:传送门 思路:欧拉函数的性质:前n个数的欧拉函数之和为φ(n)*n/2,由此求出结果. 参考文章:传送门 #include<iostream> #include<cmath ...
- [牛客挑战赛 30D] 小A的昆特牌 解题报告 (组合数学)
interlinkage: https://ac.nowcoder.com/acm/contest/375/D description: solution: 我们枚举步兵的数量$x$,还剩下$S-x$ ...
- 牛客网测试题--小a和黄金街道
小a和小b来到了一条布满了黄金的街道上.它们想要带几块黄金回去,然而这里的城管担心他们拿走的太多,于是要求小a和小b通过做一个游戏来决定最后得到的黄金的数量.游戏规则是这样的:假设道路长度为米(左端点 ...
- 区间逼近 牛客寒假1 小a的排列
做法:模拟 萌区间也就是这个区间里的数是一段连续的数 做法的话是先找出题目x,y的位置,记为l,r,然后找出l,r内的最大最小值,又因为萌区间要求数是连续的,就从这段连续数最小的开始到最大的,确定缩放 ...
随机推荐
- CF1206A
CF1206A 题意: 给你 $ a , b $ 两个数组,要求从两个数组中各选一个数,使得它们的和不存在于任何一个数组. 解法: 一道极端签到的题. 因为是要构建一个不存于两个数组的数,所以直接将两 ...
- jQuery源代码学习之十——动画Animate
一.Animate模块的代码结构 // 定义了一些变量 tweeners = {}; function createFxNow() {} function createTween() {} funct ...
- docker安装mysql挂载外部配置和数据目录
从docker hub上可以找到mysql外挂配置和数据目录的一些文档说明 https://hub.docker.com/_/mysql 从该文档中可以了解到,mysql的默认配置为/etc/mysq ...
- 重新部署环境之后,总是提示表doesn't have a default value
SQLSTATE[HY000]: General error: 1364 Field 'college' doesn't have a default value 数据库严格模式开启了,解决方法: ...
- Mysql mysqldumpslow命令详解
mysqldumpslow命令 /path/mysqldumpslow -s c -t 10 /database/mysql/slow-log 这会输出记录次数最多的10条SQL语句. 其中: -s, ...
- Maven IntelliJ
IntelliJ IDEA 已经内建了对 Maven 的支持.我们在此例中使用的是 IntelliJ IDEA 社区版 11.1. IntelliJ IDEA 的一些特性列出如下: 可以通过 Inte ...
- 阶段5 3.微服务项目【学成在线】_day05 消息中间件RabbitMQ_8.RabbitMQ研究-工作模式-发布订阅模式-生产者
Publish/subscribe:发布订阅模式 发布订阅模式: 1.每个消费者监听自己的队列. 2.生产者将消息发给broker,由交换机将消息转发到绑定此交换机的每个队列,每个绑定交换机的队列都将 ...
- 修改IDEAL 快捷键风格
选择File------Setting-----进入到设置窗口-------keymap--------选择自己适应的快捷键风格 选择Eclipse后Ideal的快捷键就和Eclipse相同
- Goland 激活码
实测有效,分享下 Goland
- 安装“Microsoft SQL Server 2014 Management Objects”时报错"Error Writing to file: Microsoft.SqlServer.XEvent.Linq.dll."
问题: 当安装的软件依赖Microsoft SQL Server 2014 Management Objects时,会把这个组件打进安装包里,但是在服务器上安装时却报如下错误: “Error Writ ...