AT_abc188_d 题解
题目传送门
思路
首先不难想到暴力思路。将所有的钱都加在每一天上,并遍历每一天,如果当天所用金额大于会员价,就开会员卡。
然后这样做会超时。题目中说从
这样做的时间复杂度是
注意事项
- 不开
long long见祖宗。
AC CODE
#include<bits/stdc++.h>
using namespace std;
#define int long long
int read(){int x=0;char f=1,ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();return x*f;}
map<int,int>mp;
signed main(){
int n=read(),c=read();
while(n--){
int a=read(),b=read(),c=read();
mp[a]+=c,mp[b+1]-=c;
}
int ans=0,sum=0,p=0;
for(auto i:mp){
ans+=(i.first-p)*min(sum,c);
p=i.first;
sum+=i.second;
}
printf("%lld\n",ans);
return 0;
}