蓝桥杯 日志统计 尺取
生活随笔
收集整理的這篇文章主要介紹了
蓝桥杯 日志统计 尺取
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
參考代碼:
#include<bits/stdc++.h> using namespace std; typedef long long ll; vector<int> v[100005]; //定義容器用于存放第i篇帖子被點(diǎn)贊的時(shí)間 int main() {ios::sync_with_stdio(false); int n, d, k;cin >> n >> d >> k;int ts, id;for(int i = 0; i < n; i++) {cin >> ts >> id;v[id].push_back(ts);}for(int i = 0; i < 100005; i++) //最多有個(gè)100000篇帖子,進(jìn)行循環(huán) {int len = v[i].size(); //第i篇帖子收到的點(diǎn)贊數(shù) if(len > 0) {sort(v[i].begin(), v[i].end()); //對(duì)點(diǎn)贊的時(shí)刻數(shù)從小到大排序 //請(qǐng)注意n的值最大也就100000,分配到每個(gè)v[i]數(shù)量不會(huì)很大,因此排序不會(huì)超時(shí) int head = 0, tail = -1, sum = 0; //定義頭尾指針,以及尺取的和 while(tail < len) //循環(huán)條件是尾指針沒有超出邊界 {sum++; //循環(huán)一開始首先尺取和+1,隨后將tail指針向后移動(dòng)一位 tail++; //請(qǐng)注意起初tail指針是-1 if(tail == len)break; //指針沒有到達(dá)邊界退出循環(huán) while(v[i][tail] - v[i][head] > d-1) //當(dāng)頭尾指針尺取的時(shí)間段超出d時(shí),移動(dòng)head指針 {sum--; //移動(dòng)head指針時(shí),需要將尺取的和-1 head++;}if(sum >= k) //當(dāng)尺取和滿足要求,即輸出是熱門帖子 {cout << i << endl;break;}}}}return 0; } 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的蓝桥杯 日志统计 尺取的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 嗓子哑了怎么办
- 下一篇: 一个月可以减肥10斤吗