本来想拷一个正解打表看看那个数据有问题,结果自己问题没找到,题解问题一大堆。。。
不知道是题解有误还是我理解错了
我自己的 ac 代码都有数据有问题:
3
1 1 3
这个数据
所以希望有大佬解答一下本蒟蒻的疑问
我的代码
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int a[N],n,cnt;
void work(){
cnt=0;
for(int i=1;i<=n;i++)scanf("%d",&a[i]),a[i]=max(a[i],1);
sort(a+1,a+n+1);
int p=n;
while(p>0){
if(p-a[p]>=0)cnt++,p-=a[p];
else p--;
}
printf("%d\n",cnt);
}
int main(){
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
while(~scanf("%d",&n))work();
}
打表的代码
#include<bits/stdc++.h>
using namespace std;
int a[11];
void dfs(int x,int n){
if(x>n){
printf("%d\n",n);
for(int i=1;i<=n;i++)printf("%d ",a[i]);
puts("");
return;
}
for(int i=a[x-1];i<=n;i++){
a[x]=i;
dfs(x+1,n);
}
}
int main(){
freopen("in.txt","w",stdout);
a[0]=1;
for(int i=1;i<=10;i++)dfs(1,i);
}