E - Demiurges Play Again

感觉这种类型的dp以前没遇到过。。。 不是很好想。。

dp[u] 表示的是以u为子树进行游戏得到的值是第几大的。

#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define PII pair<int, int>
#define y1 skldjfskldjg
#define y2 skldfjsklejgusing namespace std;const int N = 2e5 + 7;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 + 7;int n, sum[N], dp[N], f[N], dp2[N];
vector<int> edge[N];void dfs(int u, int fa) {for(int v : edge[u]) {if(v == fa) continue;f[u] = true;dfs(v, u);sum[u] += sum[v];}sum[u] += !f[u];
}void dfs2(int u, int fa, int depth) {if(!f[u]) {dp[u] = 1;dp2[u] = 1;return;}if(depth & 1) {dp2[u] = inf;for(int v : edge[u]) {if(v == fa) continue;dfs2(v, u, depth + 1);dp[u] += dp[v];dp2[u] = min(dp2[u], dp2[v]);}} else {dp[u] = inf;for(int v : edge[u]) {if(v == fa) continue;dfs2(v, u, depth + 1);dp[u] = min(dp[u], dp[v]);dp2[u] += dp2[v];}}
}int main() {scanf("%d", &n);for(int i = 1; i < n; i++) {int u, v;scanf("%d%d", &u, &v);edge[u].push_back(v);edge[v].push_back(u);}dfs(1, 0);dfs2(1, 0, 0);printf("%d %d\n", sum[1] - dp[1] + 1, dp2[1]);return 0;
}/*
5
1 5 4 3 2
*/

转载于:https://www.cnblogs.com/CJLHY/p/9671050.html

Codeforces Round #300 E - Demiurges Play Again相关推荐

  1. Codeforces Round #300 E. Demiurges Play Again CF538E

    首先考虑二分答案 假设是求max 那么把>=mid 的数字都变成1 另外的都变为0 假设是A操作的时候那么肯定选一个需要放1尽量少的儿子下去 (因为二分的是mid) 假设是B操作那么要让他底下能 ...

  2. 贪心 Codeforces Round #300 A Cutting Banner

    题目传送门 1 /* 2 贪心水题:首先,最少的个数为n最大的一位数字mx,因为需要用1累加得到mx, 3 接下来mx次循环,若是0,输出0:若是1,输出1,s[j]--: 4 注意:之前的0的要忽略 ...

  3. Codeforces Round #300 A. Cutting Banner 水题

    A. Cutting Banner Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/538/pro ...

  4. Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...

  5. Codeforces Round #538 (Div. 2) F. Please, another Queries on Array? 线段树 + 欧拉函数

    传送门 文章目录 题意: 思路: 题意: 给你一个序列aaa,你需要实现两种操作: (1)(1)(1) 将[l,r][l,r][l,r]的aia_iai​都乘rrr. (2)(2)(2) 求ϕ(∏i= ...

  6. Codeforces Round #538 (Div. 2) (CF1114)

    Codeforces Round #538 (Div. 2) (CF1114)   今天昨天晚上的cf打的非常惨(仅代表淮中最低水平   先是一路缓慢地才A掉B,C,然后就开始杠D.于是写出了一个O( ...

  7. Educational Codeforces Round 112(Div.2) ABC题解

    D题好像可以做一做,挖个坑以后做好了来填(doge Educational Codeforces Round 112(Div.2) 题目列表 1.A 2.B 3.C 1.A 原题链接 题目大意 有三种 ...

  8. Educational Codeforces Round 112 (Rated for Div. 2)-A. PizzaForces-题解

    目录 Educational Codeforces Round 112 (Rated for Div. 2)-A. PizzaForces Problem Description Input Outp ...

  9. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

最新文章

  1. DL之ANN/DNN: 人工神经网络ANN/DNN深度神经网络算法的简介、应用、经典案例之详细攻略
  2. 前端学习(3229):React中的事件处理
  3. PTA-6-1 数组循环右移 (20分)(C语言)
  4. 一键搞定数码照片印前特效-【用可牛影像】
  5. Docker-compose 常用命令
  6. fatal error LINK1123:failure during conversion to COFF:file invalid or corrupt
  7. 熟悉 scrollTop ,轻松做5个方面的事情。
  8. javascript对象概念大全
  9. 使用ExtendSim指导全球大流行爆发期间的关键决策
  10. linux mp4box安装,视频处理利器 MP4Box常用的12个命令
  11. MySQL 5.7详细下载安装配置教程
  12. 凯文.凯利:未来12个趋势(值得一读)
  13. android 镜像文件img 介绍
  14. 坦白说自动获取有效好友
  15. 如何使用新一代轻量级分布式日志管理神器 Graylog 来收集日志
  16. JDBC 连接数据库方法小结
  17. Android 大疆无人机Mobile Sdk开发,如何输出Log日志
  18. 计算广告系列(一)-基本概念整理!
  19. Linux中vim编辑器基本操作就这么简单
  20. BZOJ3583 杰杰的女性朋友 矩阵

热门文章

  1. SCI、Ei投稿指南
  2. UpdatePanel 属性学习之 UpdateMode
  3. Stanley-系列三
  4. mysql 5.6.30 编译_编译安装mysql 5.6.30
  5. 开启协程_软件特攻队|GCC10发布,GCC 11将支持C++20协程功能?
  6. Java中Math3 各种随机数生成器的使用(Random Generator)
  7. 深度学习笔记--多层感知器以及BP算法
  8. Python 编程问题集
  9. 设计模式学习笔记——组合(Composite)模式
  10. [ARM]【编译】【实践】 - 浮点编译选项NEON引发的Skia的库Illegal instruction运行错误和解决办法