388A - Fox and Box Accumulation
思路:
从小到大贪心模拟。
代码:
#include<bits/stdc++.h> using namespace std; const int INF=0x3f3f3f3f; const int N=105; int a[N]; bool vis[N]={false}; int main() { ios::sync_with_stdio(false); cin.tie(0); int n; int ma=0; cin>>n; for(int i=0;i<n;i++) { cin>>a[i]; } int ans=0,tot=n; sort(a,a+n); while(tot) { int cnt=0; for(int i=0;i<n;i++) { if(!vis[i]&&cnt<=a[i]) { vis[i]=true; cnt++; tot--; } } ans++; } cout<<ans<<endl; return 0; }
#include<bits/stdc++.h> using namespace std; const int INF=0x3f3f3f3f; const int N=105; int a[N]; int Hash[N]={0}; int main() { ios::sync_with_stdio(false); cin.tie(0); int n; int ma=0; cin>>n; for(int i=0;i<n;i++) { cin>>a[i]; ma=max(ma,a[i]); Hash[a[i]]++; } int ans=0; while(n) { int cnt=0; for(int i=0;i<=ma;i++) { while(Hash[i]&&i>=cnt) { Hash[i]--; cnt++; n--; } } ans++; } cout<<ans<<endl; return 0; }