所以我的贪心哪里有问题
  • 板块P2062 分队问题
  • 楼主_Diu_
  • 当前回复3
  • 已保存回复3
  • 发布时间2021/4/7 17:50
  • 上次更新2023/11/5 00:55:19
查看原帖
所以我的贪心哪里有问题
310802
_Diu_楼主2021/4/7 17:50

本来想拷一个正解打表看看那个数据有问题,结果自己问题没找到,题解问题一大堆。。。

不知道是题解有误还是我理解错了

我自己的 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);
}
2021/4/7 17:50
加载中...