http://noip.ybtoj.com.cn/contest/12/problem/1
这道题的题意描述有问题。。。。问题很大,导致我WA了无数次。
如果看这句话很容易就会理解错。
在我WA了n次之后看到了这两个字,哦豁,原来这里的意思是当你在第i级时,如果买的总件数达到了t[i],那么就可以升级。
#include<bits/stdc++.h> using namespace std; typedef unsigned long long ull; const int N=105; ull t[N],sum,ans;//sum:总件数 int n,m; struct node{ ull k,c; bool operator < (const node &G)const { return c<G.c; } }a[N]; int main() { cin>>n; for(int i=1;i<=n;i++) cin>>a[i].k>>a[i].c; cin>>m; for(int i=1;i<=m;i++) cin>>t[i]; t[m+1]=1e13; sort(a+1,a+n+1); int Lv=1; for(int i=1;i<=n;i++) { while(sum+a[i].k>=t[Lv]) { ans+=(t[Lv]-sum)*a[i].c*Lv; a[i].k-=t[Lv]-sum; sum=t[Lv]; Lv++; } ans+=a[i].k*a[i].c*Lv; sum+=a[i].k; } cout<<ans; return 0; }