大意: 给定树, 求多少个三元组(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]);
}

转载于:https://www.cnblogs.com/uid001/p/10985385.html

牛客 216 C 小K的疑惑相关推荐

  1. 【牛客 - 696D】小K的雕塑(dp,鸽巢原理,01背包类问题)

    题干: 链接:https://ac.nowcoder.com/acm/contest/696/D 来源:牛客网 小K有n个雕塑,每个雕塑上有一个整数 若集合T中的每一个元素在n个雕塑上都能找得到,则称 ...

  2. 【牛客 - 369A】小D的剧场(线性dp)

    题干: 链接:https://ac.nowcoder.com/acm/contest/369/A 来源:牛客网 题目描述 "我明白." 作为这命运剧场永远的观众,小D一直注视着这片 ...

  3. 【牛客 - 317D】小a与黄金街道(数论,tricks)

    题干: 链接:https://ac.nowcoder.com/acm/contest/317/D 来源:牛客网 小a和小b来到了一条布满了黄金的街道上.它们想要带几块黄金回去,然而这里的城管担心他们拿 ...

  4. 【牛客 - 369F】小D的剑阵(最小割建图,二元关系建图,网络流最小割)

    题干: 链接:https://ac.nowcoder.com/acm/contest/369/F 来源:牛客网 题目描述 现在你有 n 把灵剑,其中选择第i把灵剑会得到的 wiw_iwi​ 攻击力. ...

  5. 【牛客 - 696C】小w的禁忌与小G的长诗(dp 或 推公式容斥)

    题干: 链接:https://ac.nowcoder.com/acm/contest/696/C 来源:牛客网 自从上次小w被奶牛踹了之后,就一直对此耿耿于怀. 于是"cow"成为 ...

  6. 【牛客 - 369B】小A与任务(贪心,优先队列)

    题干: 链接:https://ac.nowcoder.com/acm/contest/369/B 来源:牛客网 小A手头有 n 份任务,他可以以任意顺序完成这些任务,只有完成当前的任务后,他才能做下一 ...

  7. 【牛客 - 369C】小A与欧拉路(bfs树的直径)

    题干: 链接:https://ac.nowcoder.com/acm/contest/369/C 来源:牛客网 小A给你了一棵树,对于这棵树上的每一条边,你都可以将它复制任意(可以为0)次(即在这条边 ...

  8. 牛客练习赛56 小魂和他的数列

    小魂和他的数列 题目链接 题目大意 给出一个数列,让求长度为k的严格递增子序列有多少个 怎么做呢? 显然dp 这个是很好想的 for (int i= 1; i <= n; i ++ ){dp[i ...

  9. 牛客网测试题--小a和黄金街道

    小a和小b来到了一条布满了黄金的街道上.它们想要带几块黄金回去,然而这里的城管担心他们拿走的太多,于是要求小a和小b通过做一个游戏来决定最后得到的黄金的数量. 游戏规则是这样的: 假设道路长度为米(左 ...

最新文章

  1. POM.xml 标签详解
  2. 不属于mysql常量的是_MySQL中,下面______常量的写法是不正确的?-智慧树MySQL数据库设计与应用章节答案...
  3. 【用研】细读7张图片,教你玩转用户调研
  4. 以ActiveMQ为例JAVA消息中间件学习【4】——消息中间件实际应用场景
  5. Adobe illustrator 剪切蒙版 - 连载 14
  6. 看完这篇文章,还说自己不会使用Zookeeper命令吗
  7. xmlhelper (把实体对象转成xml文档)
  8. Node2vec原理剖析,代码实现
  9. Spring的事务传播机制
  10. office2020与2016版的不同_Office 2016 各版本之间不同(要使用Access 2016必须安装Office 2016专业版)...
  11. Windows常用设置
  12. Python微信公众号教程基础篇——收发文本消息
  13. 下载微软官方原版系统镜像
  14. unity打PC包修改exe版本信息
  15. C语言程序设计入门08——初识格式化输出1:格式化输出PI值
  16. 笔记本连接老显示器一直弹出‘输出信号超出范围“终于解决了--通过删除显示器的注册表
  17. 2017年三月初大厂前端面试总结
  18. WMS系统4.0,仓库管理的20年历史变局你知道吗?
  19. Android图片轮播效果
  20. 央视爆光微信打飞机流量门事件的思考

热门文章

  1. linux比较两个文件md5,linux下如何批量比对两个文件的MD5值是否一致,SHA1是否一致。...
  2. mysql json invalid json text_MySQL 5.7新增加的json数据类型
  3. 计算机认识新朋友教案,小班教案认识新朋友
  4. django媒体文件上传设置
  5. mysql 建数据库并设置为utf-8编码
  6. 低级程序员和高级程序员的区别在哪?学会像高级程序员一样思考!
  7. php跨域请求解决方案_swoft2 -跨域与中间件详解
  8. SpringMVC学习笔记
  9. Java 多线程 并发编程------超全面
  10. 各个企业创始人记录--【持续更新中!!!】