本文主要是介绍【蓝桥备赛】双指针,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
日志统计
双指针在算法中也是经常会用到的,比如原地交换数组中的元素就可以用双指针来做,但是有的时候可能看不出来是双指针的思想。
对于一对数字可以用pair类型,cnt表示类型的次数,bool数组表示当前是否符合大于等于k的条件。
#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> PII;
const int N = 1e5 + 10;
int n, d, k;
PII no[N];
bool st[N];
int cnt[N];int main()
{cin >> n >> d >> k;for (int i = 1; i <= n; i++){cin >> no[i].first >> no[i].second;}//按照first进行排序sort(no + 1, no + n + 1);for (int i = 1, j = 1; i <= n; i++){int t = no[i].second; // 记录编号cnt[t]++;while (no[i].first - no[j].first >= d) //j从1开始{cnt[no[j].second]--;j++;}if (cnt[t] >= k){st[t] = true;}}for (int i = 0; i <= 100000; i++)if (st[i])cout << i << endl;
}
这篇关于【蓝桥备赛】双指针的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!