题目:戳这里

题意:n个点,每天早上会在这n个点中加一条边,每天晚上最大的子图满足子图中每个点都有k条或以上的边。

解题思路:看了官方题解,先把所有的点都连上,再从最后一天往前减边,用set维护最大的子图,注意每减去一条边时,更新该边两端点的状态。

  1. 1 #include <bits/stdc++.h>
  2. 2 using namespace std;
  3. 3 typedef long long ll;
  4. 4 const int maxn = 2e5 + 10;
  5. 5 int ans[maxn];
  6. 6 struct edge
  7. 7 {
  8. 8 int u;
  9. 9 int v;
  10. 10 }eg[maxn];
  11. 11 int cnt[maxn];
  12. 12 int n, m, k;
  13. 13 set<int>st;
  14. 14 set<int>nu[maxn];
  15. 15 void del(int x)//更新点的状态
  16. 16 {
  17. 17 if(nu[x].size() < k && st.erase(x))
  18. 18 {
  19. 19 for(auto &i:nu[x])
  20. 20 {
  21. 21 // printf("%d %d\n", x, i);
  22. 22 nu[i].erase(x);
  23. 23 del(i);
  24. 24 }
  25. 25 }
  26. 26 }
  27. 27 int main()
  28. 28 {
  29. 29 scanf("%d %d %d", &n, &m, &k);
  30. 30 for(int i = 1; i <= m; ++i)
  31. 31 {
  32. 32 scanf("%d %d", &eg[i].u, &eg[i].v);
  33. 33 nu[eg[i].u].insert(eg[i].v);
  34. 34 nu[eg[i].v].insert(eg[i].u);
  35. 35 }
  36. 36 // for(auto &i: nu[4])
  37. 37 // {
  38. 38 // printf("%d\n", i);
  39. 39 // }
  40. 40 for(int i = 1; i <= n; ++i)
  41. 41 {
  42. 42 st.insert(i);
  43. 43 }
  44. 44 for(int i = 1; i <= n; ++i)//更新出最后一天的最大子图
  45. 45 {
  46. 46 del(i);
  47. 47 }
  48. 48 for(int i = m; i >= 1; -- i)//更新之前的
  49. 49 {
  50. 50 ans[i] = st.size();
  51. 51 if(st.empty()) break;
  52. 52 nu[eg[i].u].erase(eg[i].v);
  53. 53 nu[eg[i].v].erase(eg[i].u);
  54. 54 del(eg[i].u);
  55. 55 del(eg[i].v);
  56. 56 }
  57. 57 for(int i = 1; i <= m; ++i)
  58. 58 {
  59. 59 printf("%d\n",ans[i]);
  60. 60 }
  61. 61 }

codeforces 1037E-Trips 【构造】的更多相关文章

  1. [Manthan, Codefest 18][Codeforces 1037E. Trips]

    题目链接:1037E - Trips 题目大意:有n个人,m天,每天晚上都会有一次聚会,一个人会参加一场聚会当且仅当聚会里有至少k个人是他的朋友.每天早上都会有一对人成为好朋友,问每天晚上最多能有多少 ...

  2. Codeforces 1037E Trips

    原题 题目大意: 有\(n\)个人,起初他们都不是朋友.总共有\(m\)天,每天会有两个人成为朋友.他们计划在晚上出去旅游,对于一个人,有如下两种情况: 1.要么他不出去旅游 2.要么有至少\(k\) ...

  3. codeforces 1037E. Trips(倒叙)

    题目传送门: 解题思路: 正着搞好像有点恶心. 反着搞. 一边删一边搞,从崩坏的地方开始,入度--. 最后dfs崩坏,更新答案. 注意要把边删掉防止重复崩坏. 代码: #include<cstd ...

  4. codeforces 1041 e 构造

    Codeforces 1041 E 构造题. 给出一种操作,对于一棵树,去掉它的一条边.那么这颗树被分成两个部分,两个部分的分别的最大值就是这次操作的答案. 现在给出一棵树所有操作的结果,问能不能构造 ...

  5. Trips CodeForces - 1037E(思维dfs)

    题意: 就是几个人去旅游,组队的条件是对于某个队员 队里至少有两个是他的朋友,每天早晨都会有一对新人成为朋友 解析: 用set标记互为朋友 a[i] b[i] 表示在第i天早晨 u和v成为朋友 先求最 ...

  6. Codeforces - 474D - Flowers - 构造 - 简单dp

    https://codeforces.com/problemset/problem/474/D 这道题挺好的,思路是这样. 我们要找一个01串,其中0的段要被划分为若干个连续k的0. 我们设想一个长度 ...

  7. Codeforces Global Round 8 B. Codeforces Subsequences(构造)

    题目链接:https://codeforces.com/contest/1368/problem/B 题意 构造最短的至少含有 $k$ 个 $codeforces$ 子序列的字符串. 题解 如下表: ...

  8. Codeforces 410C.Team[构造]

    C. Team time limit per test 1 second memory limit per test 256 megabytes input standard input output ...

  9. Codeforces 716C[数论][构造]

    /* CF傻逼构造题 某人要经过n回合游戏,初始分值是2,等级为1. 每次有两种操作 1.无条件,分值加上自己的等级数. 2.当目前的数字是完全平方数并且该数字开方以后是等级数加1的整数倍,那么可以将 ...

  10. Tea Party CodeForces - 808C (构造+贪心)

    Polycarp invited all his friends to the tea party to celebrate the holiday. He has ncups, one for ea ...

随机推荐

  1. Ice系列--强大如我IceGrid

    前言 IceGrid是一个提供服务定位和服务激活的组件,但它的功能远不止于此.从它的命名可以看出它的设计理念-网格计算(grid computing).网格计算被定义为由一系列关联的廉价计算机组成的计 ...

  2. XShell的手动直连,避免配置ssh免密的一些问题

  3. Java编程技术之浅析SPI服务发现机制

    SPI服务发现机制 SPI是Java JDK内部提供的一种服务发现机制. SPI->Service Provider Interface,服务提供接口,是Java JDK内置的一种服务发现机制 ...

  4. testng学习笔记-- beforeclass和afterclass

    一.定义 类之前和类之后运行的方法 使用场景: 类运行之前是否需要静态方法,变量赋值,写完其他方法都可以用了 二.标签代码 三.运行结果

  5. Java面向对象(三)—— 继承

    标签: java 继承 抽象类 this super abstract 概述 多个类中存在相同的属性和行为的时候,将这些内容抽取到单独一个类中,那么多个类无需在定义这些属性和行为,只要继承那个类即可. ...

  6. automake的简单使用

    https://blog.csdn.net/zhengqijun_/article/details/70105077 xxxxx https://blog.csdn.net/initphp/artic ...

  7. telnet | ping

    ping通常是用来检查网络是否通畅或者网络连接速度的命令.  ping www.baidu.com 而telnet是用来探测指定ip是否开放指定端口的. telnet xxx 443 查看443开放没 ...

  8. 彻底搞懂Cookie、Session、Token到底是什么

    洛:大爷,楼上322住的是马冬梅家吧? 大爷:马都什么? 夏洛:马冬梅. 大爷:什么都没啊? 夏洛:马冬梅啊. 大爷:马什么没? 夏洛:行,大爷你先凉快着吧. 在了解这三个概念之前我们先要了解HTTP ...

  9. Flink-v1.12官方网站翻译-P008-Streaming Analytics

    流式分析 事件时间和水印 介绍 Flink明确支持三种不同的时间概念. 事件时间:事件发生的时间,由产生(或存储)该事件的设备记录的时间 摄取时间:Flink在摄取事件时记录的时间戳. 处理时间:您的 ...

  10. redis分布式锁的这些坑,我怀疑你是假的开发

    摘要:用锁遇到过哪些问题? 一.白话分布式 什么是分布式,用最简单的话来说,就是为了较低单个服务器的压力,将功能分布在不同的机器上面:就比如: 本来一个程序员可以完成一个项目:需求->设计-&g ...