problem

CF1368E Ski Accidents

solution

这个 47n\frac 47n74​n 的限制,提示这存在一个特定构造方案,由 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≤74​n。

  • 构造方式:把所有入度为 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(神仙结论构造)相关推荐

  1. CF1368E Ski Accidents

    CF1368E Ski Accidents 给一个每一个点出度不大于2的有向无环图. 你需要删除最多47n\frac{4}{7}n74​n的点以及跟它们有关的边,使得最后图中不存在边数大于1的路径. ...

  2. CodeForces - 1368E Ski Accidents(拓扑排序)

    题目链接:点击查看 题目大意:给出一张 n 个点和 m 条边组成的有向无环图,规定:每个点的出度一定小于等于 2 ,现在要求删除掉至多  个点,使得任意一条路径的长度都不大于 1 题目分析:主要是这个 ...

  3. 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 ...

  4. catia圆柱转化为圆台_中考难点,最值问题之构造与转化

    数学思想方法是数学教学的灵魂,是数学知识的精髓,是把数学知识转化为能力的桥梁,而转化思想是数学思想的核心.它是从未知领域发展,通过数学元素之间的因果联系向已知领域转化,从中找出它们之间的本质联系,以达 ...

  5. 51nod 1355 斐波那契的最小公倍数

    Upd2019.4.19 yy了一个新的做法 新的写法 之前的东西 链接:http://www.51nod.com/Challenge/Problem.html#!#problemId=1355 很神 ...

  6. 【 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 ...

  7. [总结]2019年9月 OI学习/刷题记录

    从现在开始记录一下每天的学习情况.主力LOJ? 2019/9/5 LibreOJ #2543. 「JXOI2018」排序问题 答案显然是\(\frac{(n+m)!}{Cnt_1!Cnt_2!\cdo ...

  8. java gc full gc_记一次Java服务频繁Full GC的排查过程

    现象 从监控来看,堆内存是够用的,但是频繁触发Full GC,每秒钟三次,每次耗时三四秒. image.png 结合Young GC的信息和堆内存的使用情况,可以发现新生代的内存够用,老生代的内存不够 ...

  9. BZOJ4893: 项链分赃 BZOJ4895: 项链分赃(增强版)

    Solution 神仙题.jpg 切一刀简单啊,维护一个前缀和. 切两刀简单啊,拿个队列维护中间那一段. 切三刀,这tm什么毒瘤题. 于是打开题解:"保证不会答案不会超过宝石种类" ...

最新文章

  1. 将Model对象转换成json文本或者json二进制文件
  2. [云炬ThinkPython阅读笔记]2.8 注释
  3. mybatis plus generator配置
  4. MySQL数据库的用户授权_查看权限
  5. word2016 图片去底灰_看来看去,还是高级灰最耐看,喜欢现代简约风的你,选它准不会错...
  6. 不能忍!世界首富贝索斯发博文称遭”不雅照”威胁
  7. 带有Upida/Jeneva.Net的ASP.NET MVC单页应用程序(后端)
  8. Vue生命周期---vue工作笔记0013
  9. android 仿小米秒表,android实现秒表功能
  10. Cli4.5.x 中使用axios请求数据
  11. Java基础学习笔记 -- 9(数组)
  12. CSDN程序员研修院课程无法下载
  13. 全面理解网络流中的最大流问题
  14. 安全公司发现雄迈数字摄像机的主控口令“已泄露”
  15. 【报告分享】抖店百宝书-抖音电商(附下载)
  16. Ubuntu虚拟机ping不通
  17. 第六周作业1——利用哈夫曼编码英文字母表
  18. 企业抖音号怎么运营矩阵?运营有何技巧?
  19. 计算机快速切换快捷键,窗口切换快捷键,详细教您电脑窗口切换小技巧是什么...
  20. 计算机键盘重复,电脑怎么设置键盘重复延迟和重复速度?

热门文章

  1. 《悦趣式连锁反应》玩转STEM教育!529块积木元件,N+1款炫酷模型
  2. 灯泡里的钨丝是怎么放进去的,这个视频解开我20多年的疑惑!
  3. html的标签和标记有啥区别,HTML 元素 b 和 strong 有什么区别?//(强调标签的理解)...
  4. python中线程和进程_python中线程和进程的简单了解
  5. java实验3_Java 实验3
  6. akka linux 端口,Actor模型开发库 Akka
  7. php cbd架构,CBD模式
  8. java反射sethaha_Java反射深度测试
  9. android修改电量颜色,android状态栏电池颜色?
  10. hashset默认长度是多少?_看看,这些细节上的坑,你犯了多少?