8 条题解
-
2赵青海 (huhe) LV 7 SU @ 2021-12-5 18:04:48
/***************************************** 备注: ******************************************/ #include <queue> #include <math.h> #include <stack> #include <stdio.h> #include <iostream> #include <vector> #include <iomanip> #include <string.h> #include <algorithm> using namespace std; #define LL long long const int N = 1e5 + 10; const int INF = 0x3f3f3f3f; int main() { while(l < r) // 最小值的最大值 { int mid = l + r + 1 >> 1; if(cheak(mid)) l = mid; else r = mid -1 ; } cout << l << endl; while(l < r) // 最大值的最小值 { int mid = l + r >> 1; if(cheak(mid)) r = mid; else l = mid + 1; } cout << r << endl; while(l <= r) // 二分搜索 { int mid = l + r >> 1; if(a[mid] == k) { cout << mid ; break; } else if(a[mid] > k) { r = mid - 1; } else { l = mid + 1; } } return 0; }
-
12024-12-17 17:32:05@
#include<bits/stdc++.h> using namespace std; const int N=1e5+10; int L,n,m; int a[N],l,r,ans; bool check(int mid){ int last=0; int sum=0; for(int i=1;i<=n;i++){ if(a[i]-last<mid){ sum++; } else{ last=a[i]; } } return sum<=m; } int main(){ cin>>L>>n>>m; for(int i=1;i<=n;i++) cin>>a[i]; a[++n]=L; r=L; while(l<=r){ int mid=l+r>>1; if(check(mid)){ ans=mid; l=mid+1; } else r=mid-1; } cout<<ans; } 小鸟
-
12022-5-14 11:25:07@
#include <queue> #include <math.h> #include <stack> #include <stdio.h> #include <iostream> #include <vector> #include <iomanip> #include <string.h> #include <algorithm> using namespace std; #define LL long long const int N = 1e6 + 10; const int INF = 0x3f3f3f3f; LL a[N]; LL k, n,m; bool cheak(int x) { int pre=0; int sum = 0; for(int i=1;i<=n;i++) { if(a[i]-pre<x) sum++; else pre=a[i]; if(sum>m) return false; } return true; } int find() { int l,r; l=1,r=k; while(l<r) { int mid=l+r+1>>1; if(cheak(mid)) l=mid; else r=mid-1; } return l; } int main() { cin >>k>>n>>m; for(int i=1;i<=n;i++) scanf("%lld",&a[i]); a[0]=0; a[++n]=k; cout << find()<<endl; return 0; }
-
02024-11-3 16:24:56@
/* int %o/%lo 8 %d/%i/%ld/%li 10 %x/%lx 16 longlong %lld float %f/%e double %lf/%le char %c char[] %s 'a'=97 'z'=122 'A'=65 'Z'=90 '0'=48 '9'=57 */ #include <iostream> #include <iomanip> #include <cmath> #include <cstdio> #include <cstring> #include <algorithm> #include <ctime> #include <limits> #include <assert.h> #include <stdlib.h> using namespace std; #define LL long long #define ull unsigned long long const int N=1e5+10; const int INF=0x3f3f3f3f; const double pi=3.1416; int L,n,m,a[N],ans,l,r; bool check(int mid){ int last=0,sum=0; for(int i=1;i<=n;i++){ if(a[i]-last<mid){ sum++; }else{ last=a[i]; } } return sum<=m; } int main(){ cin>>L>>n>>m; for(int i=1;i<=n;i++){ cin>>a[i]; } a[++n]=L; l=1,r=L; while(l<=r){ int mid=(l+r)>>1; if(check(mid)){ ans=mid; l=mid+1; }else{ r=mid-1; } } cout<<ans; return 0; }
-
02024-7-30 11:17:25@
#include<iostream>
#include<stack>
#include<queue>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int N = 5e4 +10;
const int INF=0x3f3f3f;
int n,mid,m,a[N],l,r,ans,L;
bool check(int k){
int last = 0;
int sum = 0;
for(int i = 1;i<=n;i++){
if(a[i] - last < k)
sum++;
else
last = a[i];
}
return sum <= m;
}
int main(){
cin>>L>>n>>m;
for(int i = 1;i<=n;i++)
cin>>a[i];
a[++n] = L;
r = L;
while(l<=r){
int mid = l + r >>1;
if(check(mid)){
ans = mid;
l = mid + 1;
}
else
r = mid - 1;
}
cout<<ans;
}
-
02024-7-30 11:14:57@
#include <bits/stdc++.h> using namespace std; int L,n,m; const int N=1e5+10; int a[N],l,r,ans; bool check(int mid){ int last = 0; int sum=0; for(int i=1;i<=n;i++) if(a[i]-last<mid){ sum++; } else{ last=a[i]; }
return sum<=m;
} int main(){ cin>>L>>n>>m; for(int i=1;i<=n;i++){ cin>>a[i]; } a[++n]=L; r=L; while(l<=r){ int mid=l+r>>1; if(check(mid)){ ans=mid; l=mid+1; } else{ r=mid-1; } } cout<<ans; return 0;
}
-
02023-5-14 19:31:13@
#include<bits/stdc++.h> using namespace std; int L,n,m,a[100000]; int p(int x){ int p=0,q=0; for(int i=1;i<=n;i++) if(a[i]-p<x)q++; else p=a[i]; return q; } int main(){ cin>>L>>n>>m; for(int i=1;i<=n;i++) cin>>a[i]; a[++n]=L; int l=0,r=L; int ans=-111; while(l<=r){ int mid=(l+r)/2; int x=p(mid); if(x<=m)l=mid+1,ans=mid; else r=mid-1; } cout<<ans; }
-
02021-12-25 19:46:23@
/***************************************** 备注: ******************************************/ #include <queue> #include <math.h> #include <stack> #include <stdio.h> #include <iostream> #include <vector> #include <iomanip> #include <string.h> #include <algorithm> using namespace std; #define LL long long const int N = 1e5 + 10; const int INF = 0x3f3f3f3f; LL n,m,k; LL a[N]; bool cheak(int mid) { int pre=0; int cnt=0; for(int i=1;i<=m+1;i++) { if(a[i]-pre<mid) { cnt++; if(cnt>k) return false; } else pre=a[i]; } return true; } int main() { cin>>n>>m>>k; for(int i=1;i<=m;i++) cin>>a[i]; a[0]=0; a[m+1]=n; LL l=1,r=n; while(l<r) { LL mid=l+r+1>>1; if(cheak(mid)) { l=mid; } else r=mid-1; } cout<<l<<endl; return 0; }
- 1
信息
- ID
- 755
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 6
- 标签
- 递交数
- 548
- 已通过
- 164
- 上传者