Codeforces Round #300 E - Demiurges Play Again
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相关推荐
- Codeforces Round #300 E. Demiurges Play Again CF538E
首先考虑二分答案 假设是求max 那么把>=mid 的数字都变成1 另外的都变为0 假设是A操作的时候那么肯定选一个需要放1尽量少的儿子下去 (因为二分的是mid) 假设是B操作那么要让他底下能 ...
- 贪心 Codeforces Round #300 A Cutting Banner
题目传送门 1 /* 2 贪心水题:首先,最少的个数为n最大的一位数字mx,因为需要用1累加得到mx, 3 接下来mx次循环,若是0,输出0:若是1,输出1,s[j]--: 4 注意:之前的0的要忽略 ...
- Codeforces Round #300 A. Cutting Banner 水题
A. Cutting Banner Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/538/pro ...
- Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...
- 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= ...
- Codeforces Round #538 (Div. 2) (CF1114)
Codeforces Round #538 (Div. 2) (CF1114) 今天昨天晚上的cf打的非常惨(仅代表淮中最低水平 先是一路缓慢地才A掉B,C,然后就开始杠D.于是写出了一个O( ...
- Educational Codeforces Round 112(Div.2) ABC题解
D题好像可以做一做,挖个坑以后做好了来填(doge Educational Codeforces Round 112(Div.2) 题目列表 1.A 2.B 3.C 1.A 原题链接 题目大意 有三种 ...
- Educational Codeforces Round 112 (Rated for Div. 2)-A. PizzaForces-题解
目录 Educational Codeforces Round 112 (Rated for Div. 2)-A. PizzaForces Problem Description Input Outp ...
- Codeforces Round #506 (Div. 3)
Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...
最新文章
- DL之ANN/DNN: 人工神经网络ANN/DNN深度神经网络算法的简介、应用、经典案例之详细攻略
- 前端学习(3229):React中的事件处理
- PTA-6-1 数组循环右移 (20分)(C语言)
- 一键搞定数码照片印前特效-【用可牛影像】
- Docker-compose 常用命令
- fatal error LINK1123:failure during conversion to COFF:file invalid or corrupt
- 熟悉 scrollTop ,轻松做5个方面的事情。
- javascript对象概念大全
- 使用ExtendSim指导全球大流行爆发期间的关键决策
- linux mp4box安装,视频处理利器 MP4Box常用的12个命令
- MySQL 5.7详细下载安装配置教程
- 凯文.凯利:未来12个趋势(值得一读)
- android 镜像文件img 介绍
- 坦白说自动获取有效好友
- 如何使用新一代轻量级分布式日志管理神器 Graylog 来收集日志
- JDBC 连接数据库方法小结
- Android 大疆无人机Mobile Sdk开发,如何输出Log日志
- 计算广告系列(一)-基本概念整理!
- Linux中vim编辑器基本操作就这么简单
- BZOJ3583 杰杰的女性朋友 矩阵
热门文章
- SCI、Ei投稿指南
- UpdatePanel 属性学习之 UpdateMode
- Stanley-系列三
- mysql 5.6.30 编译_编译安装mysql 5.6.30
- 开启协程_软件特攻队|GCC10发布,GCC 11将支持C++20协程功能?
- Java中Math3 各种随机数生成器的使用(Random Generator)
- 深度学习笔记--多层感知器以及BP算法
- Python 编程问题集
- 设计模式学习笔记——组合(Composite)模式
- [ARM]【编译】【实践】 - 浮点编译选项NEON引发的Skia的库Illegal instruction运行错误和解决办法