Konrad and Company Evaluation
Posted cadcadcad
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Konrad and Company Evaluation相关的知识,希望对你有一定的参考价值。
F. 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的主要内容,如果未能解决你的问题,请参考以下文章
Kefa and Company CodeForces - 580B
undefined-is-not-an-object-evaluate-this-state-datasource.map
information technology and services company list 6 - DSGi Business
LeetCode(数据库)- The Number of Seniors and Juniors to Join the Company
LeetCode(数据库)- The Number of Seniors and Juniors to Join the Company