[CF1368E] Ski Accidents(神仙结论构造)
problem
CF1368E Ski Accidents
solution
这个 47n\frac 47n74n 的限制,提示这存在一个特定构造方案,由 777 我们联想到 1+2+4=71+2+4=71+2+4=7。
暗示把顶点分为三类 A,B,CA,B,CA,B,C,满足 ∣C∣≤2∣B∣≤4∣A∣|C|\le 2|B|\le 4|A|∣C∣≤2∣B∣≤4∣A∣。
此时 CCC 组的元素数目一定 ≤47n\le \frac{4}{7}n≤74n。
- 构造方式:把所有入度为 000 的点都放入 AAA,把至少有一条入边来自 AAA ,但没有来自 BBB 的入边的点放入 BBB。然后,把至少有一条入边来自 BBB 的入边的点放入 CCC。剩下的点(所有入边都来 CCC )放入 AAA。
此时,各类包含的顶点要求为:
- A:A:A: 入度为 000;所有入边都来自 CCC。
- B:B:B: 至少有一条入边来自 AAA,但没有来自 BBB 的入边。
- C:C:C: 至少有一条入边来自 BBB。
不难发现,三类形成了一个有效的集合划分。
且因为每个点的出度都不超过 222,即 AAA 的出边至多有 2∣A∣2|A|2∣A∣ 条,所以 2∣A∣≥∣B∣2|A|\ge |B|2∣A∣≥∣B∣,2∣B∣≥∣C∣2|B|\ge |C|2∣B∣≥∣C∣ 同理。
此时将 CCC 类点尽数删除。
由于 A,BA,BA,B 都没有来自 BBB 的入边,而 AAA 内部点之间也不存在边,所以一定不存在长度超过 111 的路径。
有向无环图,所以可以在 O(n)O(n)O(n) 的时间内完成求解。
code
#include <bits/stdc++.h>
using namespace std;
#define maxn 200005
vector < int > G[maxn], ans;
int T, n, m;
int col[maxn];int main() {scanf( "%d", &T );while( T -- ) {scanf( "%d %d", &n, &m );for( int i = 1;i <= n;i ++ ) G[i].clear(), col[i] = 0;for( int i = 1, u, v;i <= m;i ++ ) {scanf( "%d %d", &u, &v );G[v].push_back( u );}for( int v = 1;v <= n;v ++ )for( int u : G[v] ) {if( col[u] == 1 )col[v] = 2;if( col[v] ^ 2 and col[u] == 0 )col[v] = 1;}ans.clear();for( int i = 1;i <= n;i ++ )if( col[i] == 2 ) ans.push_back( i );printf( "%d\n", ans.size() );for( int i : ans ) printf( "%d ", i );puts("");} return 0;
}
[CF1368E] Ski Accidents(神仙结论构造)相关推荐
- CF1368E Ski Accidents
CF1368E Ski Accidents 给一个每一个点出度不大于2的有向无环图. 你需要删除最多47n\frac{4}{7}n74n的点以及跟它们有关的边,使得最后图中不存在边数大于1的路径. ...
- CodeForces - 1368E Ski Accidents(拓扑排序)
题目链接:点击查看 题目大意:给出一张 n 个点和 m 条边组成的有向无环图,规定:每个点的出度一定小于等于 2 ,现在要求删除掉至多 个点,使得任意一条路径的长度都不大于 1 题目分析:主要是这个 ...
- CF1034E Little C Loves 3 III(神仙构造+FWT_OR卷积)
title 题目 solution 先说很神仙的结论构造:对于aia_iai,ai=vi∗4pop_count(i)a_i=v_i*4^{pop\_count(i)}ai=vi∗4pop_cou ...
- catia圆柱转化为圆台_中考难点,最值问题之构造与转化
数学思想方法是数学教学的灵魂,是数学知识的精髓,是把数学知识转化为能力的桥梁,而转化思想是数学思想的核心.它是从未知领域发展,通过数学元素之间的因果联系向已知领域转化,从中找出它们之间的本质联系,以达 ...
- 51nod 1355 斐波那契的最小公倍数
Upd2019.4.19 yy了一个新的做法 新的写法 之前的东西 链接:http://www.51nod.com/Challenge/Problem.html#!#problemId=1355 很神 ...
- 【 CF1186D,E,F】Vus the Cossack and Numbers/Vus the Cossack and a Field/Vus the Cossack and a Graph
太ex了,哭了哭了orz 后面两道平均一道花了我一天啊! 文章目录 D:Vus the Cossack and Numbers 题意翻译 题解 代码实现 E:Vus the Cossack and a ...
- [总结]2019年9月 OI学习/刷题记录
从现在开始记录一下每天的学习情况.主力LOJ? 2019/9/5 LibreOJ #2543. 「JXOI2018」排序问题 答案显然是\(\frac{(n+m)!}{Cnt_1!Cnt_2!\cdo ...
- java gc full gc_记一次Java服务频繁Full GC的排查过程
现象 从监控来看,堆内存是够用的,但是频繁触发Full GC,每秒钟三次,每次耗时三四秒. image.png 结合Young GC的信息和堆内存的使用情况,可以发现新生代的内存够用,老生代的内存不够 ...
- BZOJ4893: 项链分赃 BZOJ4895: 项链分赃(增强版)
Solution 神仙题.jpg 切一刀简单啊,维护一个前缀和. 切两刀简单啊,拿个队列维护中间那一段. 切三刀,这tm什么毒瘤题. 于是打开题解:"保证不会答案不会超过宝石种类" ...
最新文章
- 将Model对象转换成json文本或者json二进制文件
- [云炬ThinkPython阅读笔记]2.8 注释
- mybatis plus generator配置
- MySQL数据库的用户授权_查看权限
- word2016 图片去底灰_看来看去,还是高级灰最耐看,喜欢现代简约风的你,选它准不会错...
- 不能忍!世界首富贝索斯发博文称遭”不雅照”威胁
- 带有Upida/Jeneva.Net的ASP.NET MVC单页应用程序(后端)
- Vue生命周期---vue工作笔记0013
- android 仿小米秒表,android实现秒表功能
- Cli4.5.x 中使用axios请求数据
- Java基础学习笔记 -- 9(数组)
- CSDN程序员研修院课程无法下载
- 全面理解网络流中的最大流问题
- 安全公司发现雄迈数字摄像机的主控口令“已泄露”
- 【报告分享】抖店百宝书-抖音电商(附下载)
- Ubuntu虚拟机ping不通
- 第六周作业1——利用哈夫曼编码英文字母表
- 企业抖音号怎么运营矩阵?运营有何技巧?
- 计算机快速切换快捷键,窗口切换快捷键,详细教您电脑窗口切换小技巧是什么...
- 计算机键盘重复,电脑怎么设置键盘重复延迟和重复速度?
热门文章
- 《悦趣式连锁反应》玩转STEM教育!529块积木元件,N+1款炫酷模型
- 灯泡里的钨丝是怎么放进去的,这个视频解开我20多年的疑惑!
- html的标签和标记有啥区别,HTML 元素 b 和 strong 有什么区别?//(强调标签的理解)...
- python中线程和进程_python中线程和进程的简单了解
- java实验3_Java 实验3
- akka linux 端口,Actor模型开发库 Akka
- php cbd架构,CBD模式
- java反射sethaha_Java反射深度测试
- android修改电量颜色,android状态栏电池颜色?
- hashset默认长度是多少?_看看,这些细节上的坑,你犯了多少?