Codeforces Global Round 6
Posted aslhzxy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Global Round 6相关的知识,希望对你有一定的参考价值。
借了钱,然后合并,问合并完最少还有几个人之间有金钱纠纷
借的钱和欠的钱总数相等,直接O(n)的把每个人的钱都合并了,只管这个人欠了多少钱,不管欠的谁钱
struct node{
int x,y;
ll z;
};
ll sum[MAXN];
void work() {
vector<int> v1,v2;
int n,m;
cin >> n >> m;
for(int i = 1; i <= m; i++) {
int x,y;ll z;
cin >> x >> y >> z;
sum[x] -= z; sum[y] += z;
}
for(int i = 1; i <= n; i++) {
if(sum[i] < 0) {
v1.push_back(i);
sum[i] = -sum[i];
}
else if(sum[i] > 0) v2.push_back(i);
}
vector<node>ans;
int i = 0,j = 0;
while(i < v1.size() && j < v2.size()) {
int u = v1[i];
int v = v2[j];
node k;
k.x = u;
k.y = v;
k.z = min(sum[u],sum[v]);
ans.push_back(k);
ll tmp = min(sum[u],sum[v]);
sum[u] -= tmp;
sum[v] -= tmp;
if(sum[u] == 0) i++;
if(sum[v] == 0) j++;
}
cout << ans.size() << endl;
for(int i = 0; i < ans.size(); i++) {
cout << ans[i].x << ' ' << ans[i].y << ' ' << ans[i].z << endl;
}
}
int main() {
work();
return 0;
}
偷偷说李涵学长是个夯货
以上是关于Codeforces Global Round 6的主要内容,如果未能解决你的问题,请参考以下文章
手抖康复训练1 Codeforces Global Round 6
Codeforces Global Round 7 D2. Prefix-Suffix Palindrome (Hard version) -- manacher