贪心地一个一个尽可能往口袋里放,容易发现和顺序无关。

#include<cstdio>
#include<iostream>
using namespace std;
typedef long long ll;
int n,m,a[100100];
ll ans;
int main(){
//	freopen("a.in","r",stdin);
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;++i){
		scanf("%d",&a[i]);
	}
	int i=1;
	while(i<=n){
		if(a[i]<=m && a[i+1]<=m){
			i+=2;
			++ans;
		}
		else if(a[i]<=m && a[i+1]>m){
			a[i+1]-=m;
			++i;
			++ans;
		}
		else if(a[i]<2*m){
			++i;
			++ans;
		}
		else if(a[i]>=2*m){
			ans+=(ll)(a[i]/(2*m));
			a[i]%=(2*m);
			if(a[i]==0){
				++i;
			}
		}
	}
	cout<<ans<<endl;
	return 0;
}

相关文章:

  • 2022-12-23
  • 2021-05-25
  • 2021-07-01
  • 2021-08-11
  • 2021-10-16
  • 2021-06-10
  • 2021-10-21
猜你喜欢
  • 2021-11-25
  • 2022-12-23
  • 2021-05-26
  • 2021-09-09
  • 2022-02-08
  • 2021-06-04
  • 2021-10-24
相关资源
相似解决方案