作业介绍
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;
int n, m;
int a[N];
int main() {
cin >> n >> m;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
while (m--) {
int x;
cin >> x;
int l = 1, r = n, res = -1;
while (l <= r) {
int mid = (l + r) / 2;
if (a[mid] > x) {
r = mid - 1;
} else if (a[mid] < x) {
l = mid + 1;
} else if (a[mid] == x) {
res = mid;
r = mid - 1;
}
}
cout << res << " ";
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
int n, a[N], C;
int main() {
cin >> n >> C;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
sort(a + 1, a + n + 1);
long long res = 0;
for (int i = 1; i <= n; i++) {
int B = a[i] - C;
//第一个大于B的位置
int pos1 = -1;
int l = 1, r = n;
while (l <= r) {
int mid = (l + r) / 2;
if (a[mid] > B) {
pos1 = mid;
r = mid - 1;
} else
l = mid + 1;
}
int pos2 = -1;
l = 1, r = n;
while (l <= r) {
int mid = (l + r) / 2;
if (a[mid] >= B) {
pos2 = mid;
r = mid - 1;
} else
l = mid + 1;
}
res += pos1 - pos2;
}
cout << res << endl;
return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
int n, c, a[N];
int main() {
cin >> n >> c;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
sort(a + 1, a + n + 1);
long long res = 0;
for (int i = 1; i <= n; i++) {
int B = a[i] - c;
//大于B的位置
int pos2 = upper_bound(a + 1, a + n + 1, B) - a;
int pos1 = lower_bound(a + 1, a + n + 1, B) - a;
res += pos2 - pos1;
}
cout << res << endl;
return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int n, k;
int a[N];
int check(int x) {
//判断能否切成大于等于k段的x
int res = 0;
for (int i = 1; i <= n; i++) {
res += a[i] / x;
}
if (res >= k)
return 1;
else
return 0;
}
int main() {
cin >> n >> k;
int minn = 1e9;
long long sum = 0;
for (int i = 1; i <= n; i++) {
cin >> a[i];
sum+=a[i];
}
if(sum<k){
cout<<0<<endl;
return 0;
}
int res = -1, l = 1, r = 1e9;
while (l <= r) {
int mid = (l + r) / 2;
if (check(mid) == 1) {
res = mid;
l = mid + 1;
} else
r = mid - 1;
}
cout << res << endl;
return 0;
}
题目
认领作业后才可以查看作业内容。
- 状态
- 正在进行…
- 题目
- 15
- 开始时间
- 2026-9-12 0:00
- 截止时间
- 2026-9-20 23:59
- 可延期
- 24 小时