F. Konrad and Company Evaluation

参考:[codeforces 1230F]Konrad and Company Evaluation-暴力

思路:题意分析见参考博客。因为求的是三元组的个数,所以在保存的时候的时候就保存为有向图,让工资少的员工指向工资多的员工,那么求三元组的时候,只需要以三元组中间的那个员工为参考点来求解即可。

ll cal(int i)
{
return (cnt[i]-g[i].size())*g[i].size();
}

那么当进行操作的时候,因为每一次会加n所以肯定会比之间它所连接的两个点要大,那么对于该点指向的那个点来说,组成的三元组就要重新进行计算了,所以先把之前算过的部分减去,再把新的部分加上。

代码:

// Created by CAD on 2019/10/1.
#include <bits/stdc++.h>
#define ll long long
using namespace std; const int maxn=1e6+5;
int cnt[maxn];
vector<int> g[maxn];
ll cal(int i)
{
return (cnt[i]-g[i].size())*g[i].size();
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int n,m; cin>>n>>m;
for(int i=1,u,v;i<=m;++i)
{
cin>>u>>v;
if(u>v) swap(u,v);
g[u].push_back(v);
cnt[u]++,cnt[v]++;
}
ll ans=0;
for(int i=1;i<=n;++i) ans+=cal(i);
int q; cin>>q;
cout<<ans<<endl;
while(q--)
{
int x; cin>>x;
ans-=cal(x);
for(auto i:g[x])
{
ans-=cal(i);
g[i].push_back(x);
ans+=cal(i);
g[x].clear();
}
cout<<ans<<endl;
}
return 0;
}

Konrad and Company Evaluation的更多相关文章

  1. Codeforces Round #588 (Div. 1) C. Konrad and Company Evaluation

    直接建反边暴力 复杂度分析见https://blog.csdn.net/Izumi_Hanako/article/details/101267502 #include<bits/stdc++.h ...

  2. Codeforces 1229C. Konrad and Company Evaluation

    传送门 首先考虑如何算出答案,考虑枚举中间那个点,显然每个点作为中间的点的次数为入度乘出度 所以答案就是每个点的入度乘出度之和 然后每个点开一个 $vector$ 维护从它出去的点数,每次修改的时候直 ...

  3. 【CF1210D】Konrad and Company Evaluation(vector,图论)

    题意:有i个人,m对两两之间的关系,第i个人初始的薪水为i,有q次操作,第i次操作会把v[i]号的薪水提升成n+i 如果两个人之间存在关系,薪水高的会向薪水低的炫耀 定义u,v,w为一个三元组,当u向 ...

  4. Codeforces Round #588 (Div. 2)

    传送门 A. Dawid and Bags of Candies 乱搞. Code #include <bits/stdc++.h> #define MP make_pair #defin ...

  5. Codeforces Round #588 (Div. 1) 简要题解

    1. 1229A Marcin and Training Camp 大意: 给定$n$个对$(a_i,b_i)$, 要求选出一个集合, 使得不存在一个元素好于集合中其他所有元素. 若$a_i$的二进制 ...

  6. (转)C# XMPP客户端与openfire通信(Matrix Xmpp 授权破解教程)

    FROM:http://www.cnblogs.com/crabo/p/CRACK_MATRIX_XMPP.html 如此著名的XMPP , 居然试过jabber-net, agsXmpp,matri ...

  7. C# XMPP客户端与openfire通信(Matrix Xmpp 授权破解教程)

    如此著名的XMPP , 居然试过jabber-net, agsXmpp,matrix Xmpp, 无数多个例子, 居然没有一个能实现最简单的 发消息.收消息功能.好无语. 最后还是决定从商业产品 Ma ...

  8. Dubbo+Zookeeper 入门Demo

    1.Zookeeper安装及启动 可参考这篇文章https://www.cnblogs.com/geekdc/p/5948326.html 从下载到启动都描述的很详细,按照文章一步一步走即可. 2.D ...

  9. SBM is Not Sale And Run Company

    data = """ Well,We will bet you dollars to donuts,there are so many crusher provider ...

随机推荐

  1. 大数据学习(2)- export、source(附带多个服务器一起启动服务器)

    linux环境中, A=1这种命名方式,变量作用域为当前线程 export命令出的变量作用域是当前进程及其子进程. 可以通过source 脚本,将脚本里面的变量放在当前进程中 附带自己写的tomcat ...

  2. java——HashSet中add()方法不能加重复值得原因理解(我们一起来看底层代码吧)

    Set<String> names = new HashSet<>(); names.add("张三"); names.add(new String(&qu ...

  3. [C#.net]xlApp.Workbooks.Open打开无法远程访问

    上月还能使用的xlApp.Workbooks.Open,这个月报无法远程访问,搞了半天,才找到原因是Foxit PDF 的Execl插件搞的鬼,记录下 Excel.Workbooks wbChecks ...

  4. HttpWorkerRequest应用简介

    1. Using HttpWorkerRequest for getting headers1.使用HttpWorkerRequest获取headers信息 First, the HttpWorker ...

  5. Presto基础知识

    背景 MapReduce不能满足大数据快速实时adhoc查询计算的性能要求. Facebook的数据仓库存储在少量大型Hadoop/HDFS集群.Hive是Facebook在几年前专为Hadoop打造 ...

  6. Java 单个集合去重与两个集合去重

    一.单个集合去重 描述: 去掉一个集合里重复的元素:将list集合转成hashSet集合,hashSet有自动去重的功能,再利用去重后的hashSet集合初始化一个新的list集合,此时这个list就 ...

  7. 封装好的Ajax

    /* 注意: 1.检查提交方式类型:get/post是否和后台一致(该类型接口文档会标注,若一致仍然报错,请与后台再次确认) 2.检查接口url是否写错 3.检查接口是否需要传数据到后台,若需上传,便 ...

  8. IntelliJ IDEA(Community版本)本地模式的下载、安装及其使用

    对于初学者来说可以先使用免费的社区版本练练手. ideaIC-2017.3.5——>社区版 ideaIU-2017.3.5——>旗舰版 一.IntelliJ IDEA(Community版 ...

  9. go语言入门(2)数据类型

    1,命名 Go语言中的函数名.变量名.常量名.类型名.语句标号和包名等所有的命名,都遵循一个简单的命名规则:一个名字必须以一个字母(Unicode字母)或下划线开头,后面可以跟任意数量的字母.数字或下 ...

  10. sprintf的使用

    头文件:stdio.h 函数原型:int sprintf(char *buffer, const char *format, [argument]…) 参数: (1)buffer:是char类型的指针 ...