https://codeforces.com/contest/1037/problem/E

题意

有n个人,m天,在第i天早上,x和y会成为朋友,每天晚上大家都要上车,假如一个人要上车那么他得有至少k个朋友上车,输出每天晚上上车人数

题解

  • 一个点的度数<k,他就上不了车
  • 假如一个人上不了车,那么他对他的朋友就没有了价值,就等于把边去掉
  • 离线处理,反着消边
  • 因为每条边只能走一次,所以标记边bfs

代码

#include<bits/stdc++.h>
#define MAXN 200005
#define mk make_pair
using namespace std;
int n,m,k,u[MAXN][2],in[MAXN],a[MAXN];
vector<int>G[MAXN];
queue<int>Q;
map<pair<int,int>,int>del;
int main(){
cin>>n>>m>>k;
for(int i=1;i<=m;i++){
int x,y;
scanf("%d%d",&x,&y);
u[i][0]=x;u[i][1]=y;
in[x]++;in[y]++;
G[x].push_back(y);G[y].push_back(x);
}
int ans=n;
for(int i=1;i<=n;i++){
if(in[i]<k){ans--;Q.push(i);}
}
while(!Q.empty()){
int u=Q.front();Q.pop();
for(auto v:G[u]){
if(del[mk(u,v)]==1)continue;
del[mk(u,v)]=del[mk(v,u)]=1;
if(in[v]<k)continue;
in[v]--;
if(in[v]<k){ans--;Q.push(v);}
}
}
a[m]=ans;
for(int i=m;i>1&&ans>0;i--){
int x=u[i][0],y=u[i][1];
if(del[mk(x,y)]==1){a[i-1]=ans;continue;}
del[mk(x,y)]=del[mk(y,x)]=1;
in[x]--;in[y]--;
if(in[x]<k){ans--;Q.push(x);}
if(in[y]<k){ans--;Q.push(y);} while(!Q.empty()){
int u=Q.front();Q.pop();
for(auto v:G[u]){
if(del[mk(u,v)]==1)continue;
del[mk(u,v)]=del[mk(v,u)]=1;
if(in[v]<k)continue;
in[v]--;
if(in[v]<k){ans--;Q.push(v);}
}
}
a[i-1]=ans;
}
for(int i=1;i<=m;i++)printf("%d\n",a[i]);
}

Manthan, Codefest 18 (rated, Div. 1 + Div. 2) E bfs + 离线处理的更多相关文章

  1. Manthan, Codefest 18 (rated, Div. 1 + Div. 2) C D

    C - Equalize #include<bits/stdc++.h> using namespace std; using namespace std; string a,b; int ...

  2. 题解——CF Manthan, Codefest 18 (rated, Div. 1 + Div. 2) T5(思维)

    还是dfs? 好像自己写的有锅 过不去 看了题解修改了才过qwq #include <cstdio> #include <algorithm> #include <cst ...

  3. 题解——CF Manthan, Codefest 18 (rated, Div. 1 + Div. 2) T4(模拟)

    随便模拟下就过了qwq 然后忘了特判WA了QwQ #include <cstdio> #include <algorithm> #include <cstring> ...

  4. 题解——CF Manthan, Codefest 18 (rated, Div. 1 + Div. 2) T3(贪心)

    是一道水题 虽然看起来像是DP,但其实是贪心 扫一遍就A了 QwQ #include <cstdio> #include <algorithm> #include <cs ...

  5. 题解——CF Manthan, Codefest 18 (rated, Div. 1 + Div. 2) T2(模拟)

    题目要求很简单,做法很粗暴 直接扫一遍即可 注意结果会爆int #include <cstdio> #include <algorithm> #include <cstr ...

  6. 题解——CF Manthan, Codefest 18 (rated, Div. 1 + Div. 2) T1(找规律)

    就是找一下规律 但是奈何昨天晚上脑子抽 推错了一项QwQ 然后重新一想 A掉了QwQ #include <cstdio> #include <algorithm> #inclu ...

  7. Codeforces Manthan, Codefest 18 (rated, Div. 1 + Div. 2) D,E

    D. Valid BFS? time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  8. 【Manthan, Codefest 18 (rated, Div. 1 + Div. 2) C】Equalize

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] Swap操作显然只能对(i-1,i)执行才有用. 不然直接将i翻转以及j翻转 显然比直接交换更优. 那么现在我们就相当于有两种操作. ...

  9. 【Manthan, Codefest 18 (rated, Div. 1 + Div. 2) B】Reach Median

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 将数组排序一下. 考虑中位数a[mid] 如果a[mid]==s直接输出0 如果a[mid]<s,那么我们把a[mid]改成s ...

  10. 【Manthan, Codefest 18 (rated, Div. 1 + Div. 2) A】Packets

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 多重背包的二进制优化. 就是将数量x分成接近log2x份 然后这log2x份能组合成1..x内的所有数字. 从而将多重背包转化成01 ...

随机推荐

  1. Codeforces Round #602 (Div. 2, based on Technocup 2020 Elimination Round 3) B. Box 贪心

    B. Box Permutation p is a sequence of integers p=[p1,p2,-,pn], consisting of n distinct (unique) pos ...

  2. Nacos做配置中心经常被问到的问题

    加载多个配置文件怎么处理? 通过@NacosPropertySource可以注入一个配置文件,如果我们需要将配置分类存储或者某些配置需要共用,这种需求场景下,一个项目中需要加载多个配置文件,可以可以直 ...

  3. Bootstrap --------- 了解与使用

    Bootstrap是用来做什么的?有几大部分?谁开发的?有什么特点? 一个用于快速开发 Web 应用程序和网站的前端框架. 基于 HTML.CSS.JAVASCRIPT 的. 2011 年八月在 Gi ...

  4. 手写SpringMVC实现过程

    1. Spring Boot,Spring MVC的底层实现都是Servlet的调用. 2. Servlet的生命周期里面首先是类的初始化,然后是类的方法的调用,再次是类的销毁. 3. 创建一个spr ...

  5. Java匹马行天下之学编程的起点——高级语言大锅烩

    学编程的起点——高级语言大锅烩 前言: 学知识前总想说点鸡汤,想喝的朋友就看看,不想喝的就直接看干货吧,就当鸡汤是给我自己喝的. 前段时间在网上看了一句话感觉挺触动我的,我做个分享: 如果你觉得你的祖 ...

  6. 【干货】SqlServer 总结几种存储过程分页的使用

    就我而言写代码最烦的就是处理数据,其中之一就是分页的使用. 有的代码写多了,总结出一套适用自己的分页方法:有的查一下资料借鉴一下套用起来也达到目的. 那么小编在这里给大家总结几个方法供大家做一下参考. ...

  7. 关于ScriptManager.RegisterStartupScript 摘录

    //ScriptManager.RegisterStartupScript 方法 (Control, Type, String, String, Boolean) public static void ...

  8. pycharm 取消连按两下shift出现的全局搜索

    在来回切换中英文输入法的时候连按两下shift总是会蹦出来全局搜索框 真的很是麻烦,现在是把这个框给禁用掉 1.按ctrl+shift+a,弹出搜索框2.输入registry,然后按回车3.找到“id ...

  9. go-函数和错误处理

    函数基本语法 func 函数名(形参列表)(返回值列表){ 执行语句 return 返回值列表 }//返回值可以没有可以有多个可以有一个 包 引入 为了解决两个程序员取得函数名同名的情况 原理 本质就 ...

  10. SpringBoot(三) 配置文件 篇章

    SpringBoot 配置文件默认为application.properties,但是本章节主要讲解yaml文件配置,因为现在的趋势是使用yaml,它是类似于标准通用标记语言的子集XML的数据描述语言 ...