题目:戳这里

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

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

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

    数据库 ----数据库启动 & 关闭 启动数据库 SQL> startup nomount; SQL> alter database mount; SQL> alter da ...

  2. 不错的网站压力测试工具webbench

    webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便. 1.适用系统:Linux 2.前期准备:yum install ...

  3. 路由协议-RIP协议

    一.路由协议的发展历程和分类 距离矢量路由协议--听信"谣言",使用跳数作为度量值,最大16(0-15)跳:RIP 链路状态路由协议--"地图"路由协议:OSP ...

  4. 请不要继续将数据库称为 CP 或 AP - 掘金 https://juejin.im/post/6844903878102614030

    请不要继续将数据库称为 CP 或 AP - 掘金 https://juejin.im/post/6844903878102614030

  5. leaving sockets open which can trigger a ResourceWarning in some # cases, and look like a memory leak in others

    # -*- coding: utf-8 -*- """ requests.api ~~~~~~~~~~~~ This module implements the Requ ...

  6. https://www.cs.cmu.edu/~dga/papers/cuckoo-conext2014.pdf 检验hash冲突

    https://github.com/google/cityhash We like to test hash functions with SMHasher, among other things. ...

  7. (006)每日SQL学习:关于to_char函数

    to_char函数的官方文档说明: 详细to_char请移步:https://www.cnblogs.com/reborter/archive/2008/11/28/1343195.html 需求:n ...

  8. TCP/IP中的Payload概念以及由此引申出的一些问题

    TCP报文一次性最大运输的货物量(Payload),大体可以这么来计算: IP报文头长度  +  TCP报文头长度  +  Payload长度  ≤ MTU 即左边的三者之和,要小于等于右边MTU的长 ...

  9. 洛谷P3413 P6754

    双倍经验题 由于我先做的 P6754,所以一切思路基于 P6754 的题目 " P6754 这题就是 P3413 的究极弱化版 " --By Aliemo. P6754 Descr ...

  10. Codeforces 1437F Emotional Fishermen(思维,dp)

    题意 给出数列\(a_i\),求排列\(p_i\)的数量满足 \[\frac{a_{p_i}}{max_{j=1}^{i-1}a_{p_j}} \notin (\frac{1}{2},2) \] 思路 ...