码迷,mamicode.com
首页 > 其他好文 > 详细

结论题+英语阅读理解——1266E

时间:2020-02-11 00:55:07      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:scanf   code   color   scan   +=   直接   mes   names   三元组   

/*
给定数组a[],表示每种资源数目标量,一开始都是0 
每次增,删,改一个三元组(s,t,u):如果资源s数量t,那么资源u+1,可链式增加
问每次修改后达到目标资源的最少用时 

结论:直接开数组cnt[i]累计每种资源通过三元组增加的值,多出a[i]的部分去掉就是贡献 

*/
#include<bits/stdc++.h>
using namespace std;
#define N 200005
#define ll long long 

map<pair<int,int>,int>mp; 
ll n,q,a[N],cnt[N],sum;

int main(){
    cin>>n;
    for(int i=1;i<=n;i++)cin>>a[i],sum+=a[i];
    
    cin>>q;
    while(q--){
        int s,t,u;
        scanf("%d%d%d",&s,&t,&u);
        pair<int,int>p=make_pair(s,t);
        if(mp[p]!=0){
            int last=mp[p];
            if(cnt[last]<=a[last])sum++;
            cnt[last]--;
        }
        mp[p]=u;
        if(cnt[u]<a[u])sum--;
        cnt[u]++;
        cout<<sum<<\n;
    }
    
}


 

 

结论题+英语阅读理解——1266E

标签:scanf   code   color   scan   +=   直接   mes   names   三元组   

原文地址:https://www.cnblogs.com/zsben991126/p/12293356.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!