猫史档案馆


从今天开始,我的码风正式走上了让别人读不懂的道路

用户:PlumStevenPlumSteven查看:0 回复:1 评论:0 创建时间:2023-12-15T22:40:26


以前的代码:(1年半前)


#include <iostream>
#include <algorithm>
using namespace std;

long long length[100001];

long long getSum(long long n, long long mid){
	long long sum=0;
	for(int i=0;i<n;i++){
		sum+=length[i]/mid;
	}
	return sum;
}

int main()
{
	int n, k;
	cin >> n >> k;
	long long sum=0;
	for(int i=0;i<n;i++){
		cin >> length[i];
		sum+=length[i];
	}
	if(sum < k){
		cout << 0 << endl;
		return 0;
	}
	sort(length, length+n);
	long long low=0, high=sum/k, cnt=0, mid=(low+high)/2;
	while(low!=mid){
		cnt = getSum(n, mid);
		if(cnt < k){
			high = mid;
		}
		else if(cnt >= k){
			low = mid;
		}
		mid = (low+high)/2;
	}
	cout << mid << endl;
	return 0;  
}

现在(这是同一道题)

#include <bits/stdc++.h>
using namespace std;

#define PII pair<int, int>
#define PLL pair<long, long>
#define PR pair

#define VI vector<int>
#define VLL vector<long long>
#define VC vector

#define QI queue<int>
#define QLL queue<long long>
#define QU queue

#define DQI deque<int>
#define DQLL deque<long long>
#define DQ deque

#define MPII map<int, int>
#define MPSI map<string, int>
#define MPIS map<int, string>
#define MPSS map<string, string>

#define STR string

#define FUI(a, b, c) for(int i=a;i<=b;i+=c)
#define FDI(a, b, c) for(int i=a;i>=n;i-=c)
#define FUJ(a, b, c) for(int j=a;j<=b;j+=c)
#define FDJ(a, b, c) for(int j=a;j>=n;j-=c)
#define FUK(a, b, c) for(int k=a;k<=b;k+=c)
#define FDK(a, b, c) for(int k=a;k>=n;k-=c)
#define LOOP while(1)

#define PB push_back
#define lowbit(x) x&-x
#define LB(a, b, c) lower_bound(a, b, c);
#define UB(a, b, c) upper_bound(a, b, c);
#define MP(a, b) make_pair(a, b);
//二分会用的
#define BINS_L while(l<r)
#define BINS_INITI(_l, _r) int l=_l, r=_r, mid=0
#define BINS_INITL(_l, _r) long long l=_l, r=_r, mid=0
#define BINS_MID mid=l+(r-l)/2
#define BINS_CHK bool check(int x)

typedef long long ll;
typedef double db;

const int maxn=1000001;

int a[maxn];
int n, m;

BINS_CHK{
	int tmp=0;
	FUI(1, n, 1) tmp+=(a[i]/x);
	return tmp>=m;
}

int main()
{
	scanf("%d%d", &n, &m);
	FUI(1, n, 1) scanf("%d", &a[i]);
	BINS_INITI(0, (int)1e8);
	BINS_L{
		BINS_MID;
		if(check(mid)) l=mid+1;
		else r=mid;
//		printf("%d\n", mid);
	}
	if(mid<1) printf("0");
	else printf("%d", l-1);
	return 0;
}

 


回复

上一页1 页 / 共 1下一页
_微屑以时__微屑以时_

啥?

int main()
{
    int s = //只会这些;
    return 0;
}

点赞0


评论