每日一题 - 240117 - B. Bus of Characters

本文介绍了如何在C++中使用STL的优先队列数据结构,并展示了如何通过重载运算符实现自定义比较函数,以解决特定问题。时间复杂度分析为O(N*logN)。

  • TAG - 算法 − 【 S T L − 优先队列、重载运算符】 算法 - 【STL - 优先队列、重载运算符】 算法STL优先队列、重载运算符】
  • 时间复杂度 - O ( N ∗ log ⁡ N ) O(N \ast \log N) O(NlogN)
//
#include <bits/stdc++.h>
using namespace std;
// #define int long long

const int N = 2e5 + 6;
struct A {
    int idx, w;
} in[N];

struct cmp0 {
    bool operator()(const A& x, const A& y) const { return y.w < x.w; }
};

struct cmp1 {
    bool operator()(const A& x, const A& y) const { return y.w > x.w; }
};

void solve() {
    int n;
    scanf("%d", &n);
    for (int i = 1; i <= n; i++) {
        int ai;
        scanf("%d", &ai);
        in[i] = (A){i, ai};
    }

    priority_queue<A, vector<A>, cmp0> q0;
    priority_queue<A, vector<A>, cmp1> q1;

    for (int i = 1; i <= n; i++) q0.push(in[i]);

    string s;
    cin >> s;
    for (int i = 0; i < s.size(); i++) {
        if (s[i] == '0') {
            A tt = q0.top(); q0.pop();

            printf("%d%c", tt.idx, " \n"[i == s.size() - 1]);
            q1.push(tt);
        } else if (s[i] == '1') {
            A tt = q1.top(); q1.pop();

            printf("%d%c", tt.idx, " \n"[i == s.size() - 1]);
        }
    }
}

signed main() {
    int t = 1;
    // scanf("%d", &t);
    while (t--) solve();

    return 0;
}

实现细节

  • `

参考示意图

  • `

参考链接


作者 | 乐意奥AI

由于给定的参考引用内容与该问题无关,下面提供一些通用的解决这些服务启动失败和套接字监听失败问题的方法: ### 查看服务状态和日志 使用 `systemctl status` 命令查看具体服务的状态,获取更多错误信息。例如查看 `gnome - remote - desktop.service` 的状态: ```bash systemctl status gnome-remote-desktop.service ``` 使用 `journalctl` 命令查看服务的详细日志,例如查看 `dbus.service` 的日志: ```bash journalctl -u dbus.service ``` 根据日志中的错误信息来定位问题。 ### 重新启动服务 尝试重新启动服务,看是否能解决问题。例如重新启动 `power - profiles - daemon.service`: ```bash systemctl restart power-profiles-daemon.service ``` ### 检查依赖关系 某些服务可能依赖于其他服务或软件包。检查这些服务的依赖关系是否满足。例如,`dbus.service` 是很多服务的基础,确保其依赖的软件包都已正确安装。 ### 重新加载系统管理器配置 有时候系统管理器的配置可能出现问题,使用以下命令重新加载配置: ```bash systemctl daemon-reload ``` ### 检查套接字配置 对于 `dbus.socket` 监听失败的问题,检查其配置文件 `/etc/systemd/system/sockets.target.wants/dbus.socket` 是否正确。可以尝试重新启动套接字: ```bash systemctl restart dbus.socket ``` ### 检查资源占用 确保系统资源(如内存、磁盘空间等)充足,某些服务启动失败可能是由于资源不足导致的。可以使用 `df -h` 查看磁盘空间,`free -h` 查看内存使用情况。 ### 检查SELinux或AppArmor 如果系统启用了SELinux或AppArmor,这些安全机制可能会阻止服务的正常启动。可以临时禁用它们来进行测试: ```bash # 临时禁用SELinux setenforce 0 # 临时禁用AppArmor sudo systemctl stop apparmor ``` ### 检查服务文件 检查服务文件(通常位于 `/lib/systemd/system` 或 `/etc/systemd/system`)是否被修改或损坏。可以尝试恢复默认的服务文件。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值