日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

ccf-csp #201709-2 公共钥匙盒

發(fā)布時(shí)間:2025/3/20 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ccf-csp #201709-2 公共钥匙盒 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目鏈接:http://118.190.20.162/view.page?gpid=T62

題目思路

  • mark數(shù)組用來存儲第i號鑰匙的位置,優(yōu)先隊(duì)列pq用來存取空掛鉤的位置(每次取最左空位的時(shí)間復(fù)雜度為O(logn)O(logn)O(logn),比直接用線性表的O(n)O(n)O(n)要快速)
  • 我們把每次借用鑰匙和歸還鑰匙的時(shí)刻都當(dāng)作時(shí)間節(jié)點(diǎn),這樣我們就有2?k2*k2?k個(gè)時(shí)間節(jié)點(diǎn)。依照題意,我們按時(shí)間從早到晚,結(jié)合歸還優(yōu)先、鑰匙編號小的優(yōu)先策略對所有時(shí)間節(jié)點(diǎn)進(jìn)行排序
  • 接下來,只要遍歷所有的時(shí)間節(jié)點(diǎn),模擬借鑰匙和還鑰匙的操作就可以了。如果是借鑰匙操作,就把空位在優(yōu)先隊(duì)列中記錄。否則,在優(yōu)先隊(duì)列中讀取最左邊空掛鉤的位置,放回鑰匙并把該位置移出優(yōu)先隊(duì)列。

代碼如下

#include <iostream> #include <cstdio> #include <algorithm> #include <queue> #include <vector> using namespace std; const int maxn = 2005; //用于表示執(zhí)行借用或者歸還的時(shí)間點(diǎn) struct Point{int id, Time, isRet;//isRet等于0表示借用,等于1表示歸還 } a[maxn]; int n, k, w, s, c; //mark[i]表示i存放的位置 int mark[maxn], res[maxn]; //小根堆,表示從左到右的空位 priority_queue<int, vector<int>, greater<int> > pq;bool cmp(const Point &A, const Point &B) {if (A.Time == B.Time) {if (A.isRet == B.isRet) {return A.id < B.id;} else {return A.isRet > B.isRet;}} else {return A.Time < B.Time;} } int main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);cin >> n >> k;for (int i = 1; i <= n; i++) mark[i] = i; for (int i = 1; i <= k; i++) {cin >> w >> s >> c;a[(i<<1)-1].id = w;a[(i<<1)-1].Time = s; //借用的時(shí)間節(jié)點(diǎn)a[(i<<1)-1].isRet = 0; a[i<<1].id = w;a[i<<1].Time = s + c; //歸還的時(shí)間節(jié)點(diǎn)a[i<<1].isRet = 1; }sort(a + 1, a + k * 2 + 1, cmp);int x = 0, y = 0;for (int i = 1; i <= k * 2; i++) {int key = a[i].id;if (a[i].isRet) {//return the keymark[key] = pq.top();pq.pop();} else {// borrow the keypq.push(mark[key]);}}for (int i = 1; i <= n; i++) res[mark[i]] = i;for (int i = 1; i <= n; i++) cout << res[i] << " ";cout << endl;return 0; } 《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的ccf-csp #201709-2 公共钥匙盒的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。