Educational Codeforces Round 127 C - Dolce Vita
#include<stdio.h> #include<math.h> #include<string.h> #include<ctype.h> #include<iostream> #include<algorithm> #include<queue> #include<bitset> typedef long long ll; using namespace std; ll mm[200009]; ll pre[200009]; void solve() { ll len,all=0,mon;cin>>len>>mon; for(int i=1;i<=len;i++) cin>>mm[i]; sort(mm+1,mm+len+1); for(int i=1;i<=len;i++) pre[i]=mm[i]+pre[i-1]; ll ans=0; for(int i=1;i<=len;i++) { if(pre[i]>mon) continue; ans+=(mon-pre[i])/i+1; } cout<<ans<<endl; } int main() { std::ios::sync_with_stdio(false); std::cin.tie(0); int sum;cin>>sum; while(sum--) { solve(); } return 0; }
当时比赛推公式的时候头晕没推出来,赛后推的时候瞎搞都搞出来公式了我自己还没看懂(
ans+=购买买了i包的天数,(mon-pre[i])/i,表示购买了数量为i的物品的天数,苒后本身再加一