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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

CSP认证201709-2公共钥匙盒[C++题解]:结构体、排序、枚举

發(fā)布時(shí)間:2025/4/5 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CSP认证201709-2公共钥匙盒[C++题解]:结构体、排序、枚举 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

      • 題目解答
      • 題目鏈接

題目解答



來(lái)源:acwing

分析:
采用結(jié)構(gòu)體來(lái)存每個(gè)操作,保存啥呢?三個(gè)成員鑰匙id操作的類型:1表示還鑰匙,0表示取鑰匙;操作的時(shí)間tm; 然后結(jié)構(gòu)體內(nèi)部排序,先按照操作時(shí)間從小到大排序,操作時(shí)間相同的情況下,還鑰匙優(yōu)先,然后還是相同的話,按照鑰匙id從小到大排序。直接在結(jié)構(gòu)體內(nèi)部重載小于號(hào)可以實(shí)現(xiàn)。

然后就是排序。接著就是遍歷處理即可。

ac代碼

#include<bits/stdc++.h> using namespace std; const int N = 1010; int n,m; int q[N]; bool st[N]; struct Op{int tm, type, id;bool operator<(const Op& t)const{if(tm != t.tm) return tm < t.tm;// 1表示還鑰匙,0表示取鑰匙if(type != t.type) return type > t.type;return id < t.id;} }op[N * 2];int main(){cin >> n >> m; int k = 0;while(m--){int id, start, remain;cin >> id >> start >> remain;op[k ++] = {start, 0, id}; // 0表示取鑰匙op[k ++] = {start + remain, 1, id}; //1表示還鑰匙}sort(op, op + k);for(int i = 1; i <= n; i ++) q[i] = i;for(int i = 0; i < k; i ++){int id = op[i].id; // 鑰匙的idif(!op[i].type){ // 取鑰匙for(int j = 1; j <= n; j ++){if(q[j] == id){q[j] = 0;break;}}}else{ // 還鑰匙for(int j = 1; j <= n; j ++)if(!q[j]){q[j] = id;break;}}}for(int i = 1; i <= n; i++) cout << q[i] <<" ";}

題目鏈接

https://www.acwing.com/problem/content/3251/

總結(jié)

以上是生活随笔為你收集整理的CSP认证201709-2公共钥匙盒[C++题解]:结构体、排序、枚举的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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