求助
  • 板块学术版
  • 楼主封禁用户
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/11/11 19:31
  • 上次更新2023/11/11 21:02:27
查看原帖
求助
1001535
封禁用户楼主2023/11/11 19:31

44 分!

题目

求助!

思路:设 t 为当前时间自然晾干的值,将小于 t 的删掉,然后把剩下最大的减 b。

code:

#include<bits/stdc++.h>
using namespace std;
int n,a,b,p[500001];
int ans;
int t;
//int find(int l,int r,int a){
//	while(l<=r){
//		int mid=l+(r-l)/2;
//		if(p[mid]==a)return mid;
//		else if(p[mid]>a)r=mid-1;
//		else if(p[mid]<a)l=mid;
//	}
//	return l;
//}
 main(){
	scanf("%d%d%d",&n,&a,&b);
//	int l=1;
	for(int i=1;i<=n;i++)scanf("%d",&p[i]);
	sort(p+1,p+n+1);
	int s=0;	
	for(int i=n;i>=1;i--) {
	while(p[i]>s*a) {
		ans=p[i];
		ans-=b;
//		p[i-1]=ans;
		s++;
	}
		
//		n--;
	///	cout<<s<<" ";
	}
//	while(l<n){
//		s++;
//		for(int i=l;i<=n;i++){
//			if(i==n)
//              p[i]-=b;
//              p[i]-=a;
//			if(p[i]<=0)l++;
//		}
//	    sort(p+l,p+n+1);
//	}
	printf("%d",s-1);
	return 0;
}
2023/11/11 19:31
加载中...