2024AcWing蓝桥杯集训·每日一题-双指针
1.[AcWing3745.牛的学术圈 I]
题目描述
由于对计算机科学的热爱,以及有朝一日成为 「Bessie 博士」的诱惑,奶牛 Bessie 开始攻读计算机科学博士学位。
经过一段时间的学术研究,她已经发表了
Bessie 听说学术成就可以用
例如,如果一名研究员有
为了提升她的
由于页数限制,她至多可以在这篇综述中引用
请帮助 Bessie 求出在写完这篇综述后她可以达到的最大
注意 Bessie 的导师可能会告知她纯粹为了提升
输入格式
输入的第一行包含
第二行包含
输出格式
输出写完综述后 Bessie 可以达到的最大
数据范围
输入样例1
4 0
1 100 2 3
输出样例1
2
样例1解释
Bessie 不能引用任何她曾经写过的论文。上文中提到,
输入样例2
4 1
1 100 2 3
输出样例2
3
样例2解释
如果 Bessie 引用她的第三篇论文,引用数会变为
解题思路
降序排序,找到最大的
C++代码
#include <bits/stdc++.h>
using namespace std;
const int N = 100010;
int n, L;
int c[N];
int main() {
scanf("%d%d", &n, &L);
for (int i = 1; i <= n; i++) scanf("%d", &c[i]);
sort(c + 1, c + n + 1);
reverse(c + 1, c + n + 1);
int h = 0;
for (int i = 1; i <= n; i++) {
if (c[i] >= i) h = i;
else break;
}
if (c[h + 1] < h) {
printf("%d\n", h);
return 0;
}
int cnt = 0;
for (int i = 1; i <= h + 1; i++)
if (c[i] == h)
cnt++;
if (cnt <= L)
printf("%d\n", h + 1);
else
printf("%d\n", h);
/* 双指针做法
// 关于 h
// 1. 最小值大于等于 h-1
// 2. h-1 的个数小于等于 L
int res = 0;
for (int i = 1, j = n; i <= n; i++) {
while (j && c[j] < i) j--;
if (c[i] >= i - 1 && i - j <= L)
res = i;
}
cout << res << endl;
*/
return 0;
}
2.[AcWing1238.日志统计]
题目描述
小明维护着一个程序员论坛。现在他收集了一份”点赞”日志,日志共有
其中每一行的格式是:
ts id
表示在
具体来说,如果存在某个时刻
给定日志,请你帮助小明统计出所有曾是“热帖”的帖子编号。
输入格式
第一行包含三个整数
以下
输出格式
按从小到大的顺序输出热帖
每个
数据范围
输入样例
7 10 2
0 1
0 10
10 10
10 1
9 1
100 3
100 3
输出样例
1
3
解题思路
双指针。使用数对数组按照时间排序,在时间区间内维护
C++代码
#include <bits/stdc++.h>
using namespace std;
const int N = 100010;
typedef pair<int, int> PII;
#define ts first
#define id second
int n, D, K;
PII q[N];
bool st[N];
int cnt[N];
int main() {
scanf("%d%d%d", &n, &D, &K);
for (int i = 1; i <= n; i++)
scanf("%d%d", &q[i].ts, &q[i].id);
sort(q + 1, q + n + 1);
for (int i = 1, j = 1; i <= n; i++) { // i 是右指针 j 是左指针
cnt[q[i].id]++; // 点赞次数+1
while (q[i].ts - q[j].ts >= D) { // 保证时间区间
cnt[q[j].id]--;
j++;
}
if (cnt[q[i].id] >= K) st[q[i].id] = true;
}
for (int i = 0; i < N; i++)
if (st[i])
printf("%d\n", i);
return 0;
}
本文来自博客园,作者:Cocoicobird,转载请注明原文链接:https://www.cnblogs.com/Cocoicobird/p/18054621
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架