D. Decreasing Debts

时间:2020-07-10
本文章向大家介绍D. Decreasing Debts,主要包括D. Decreasing Debts使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

题目入口

题意:U 借 V d1元,V 借 Q d2元,(假设d1>d2)可以化成 U 借 V (d1-d2)元 、U借 Q d2元。
给n组u,v,d,求化简后的关系。

只要处理每个人的出入账就行了。然后根据借出和借入进行配对。


#include <bits/stdc++.h>
using namespace std;
/*#define in freopen("data.in","r",stdin);
#define out freopen("a.out","w",stdout);*/
typedef long long ll;
const int MAXN=2e5+10;
ll a[MAXN];
map<pair<int,int>,int>mp;
int main(){
    ios::sync_with_stdio(false);
    int n;
    cin>>n;
    ll ans=0;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        ans+=a[i];
    }
    int q;cin>>q;
    while(q--){
        int s,t,u;
        cin>>s>>t>>u;
        if(mp[make_pair(s,t)]==0){
            mp[make_pair(s,t)]=u;
            a[u]--;
            if(a[u]>=0){
                ans--;
            }
        }
        else{
            a[mp[make_pair(s,t)]]++;
            if(a[mp[make_pair(s,t)]]>0)ans++;
            mp[make_pair(s,t)]=u;
            a[u]--;
            if(a[u]>=0)ans--;
        }
        //for(int i=1;i<=n;i++)cout<<a[i]<<" ";cout<<endl;
        cout<<ans<<endl;
    }
 
 
 
    return 0;
}


原文地址:https://www.cnblogs.com/qq103013999/p/13281098.html