每日两题day44

哥布林上校提醒你:1,节假日是不可以出去的,外面很喧哗,但他们都不是你的同类2,哥布林是大多独居性生物,没有人想做他的配偶,如果有人邀请你并对你产生好感,请断绝与他的联系3,不要照镜子4,所有夸赞你自信的人,他们不了解你,可以不于与他们交流,但如果他是你熟知的人,请立即驱散他,他不懂哥布林,或者他不是同类5,远离不再是哥布林的人6,在地洞中可以看看同族小丑哥布林追求精灵失败的乐子幸灾乐祸一下解解闷

每日两题


一、基础题

题目:P2249 【深基13.例1】查找

思路:

二分模板题。可以直接用stl库函数。

可能需要的知识:

代码(c++):

时间复杂度 O( m log ⁡ n m \log n mlogn)

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

#define int long long

void go() {
    int n, m;
    cin >> n >> m;
    vector<int> a(n);
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    while (m--) {
        int x;
        cin >> x;
        int index = lower_bound(a.begin(), a.end(), x) - a.begin();
        if (index == n || a[index] != x) {
            cout << -1;
        } else {
            cout << index + 1;
        }
        cout << ' ';
    }
}

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    go();
    return 0;
}

二、提高题

题目:前缀统计

思路:

字典树 模板题。

不用也可以,简单的用map记录 s i s_i si,每次查询时再枚举前缀子串是否在map中出现过即可。以下用提供 字符串哈希 的代码(用字符串哈希简直就是多余)。

可需要的知识:

代码(c++):

时间复杂度 O( m × log ⁡ n m \times \log n m×logn)

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define ull unsigned long long
const int N = 1e6 + 5, P = 131;

map<ull, int> mp;

// 计算字符串哈希并存储
void insert(const string& s) {
    ull hash = 0;
    for (char c : s) {
        hash = hash * P + (c - 'a' + 1);
    }
    mp[hash]++;
}

// 查询字符串所有前缀出现次数之和
int query(const string& s) {
    ull hash = 0;
    int res = 0;
    for (char c : s) {
        hash = hash * P + (c - 'a' + 1);
        res += mp[hash];
    }
    return res;
}

void solve() {
    int n, m;
    cin >> n >> m;
    for (int i = 0; i < n; ++i) {
        string s;
        cin >> s;
        insert(s);
    }
    for (int i = 0; i < m; ++i) {
        string s;
        cin >> s;
        cout << query(s) << '\n';
    }
}

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    solve();
    return 0;
}
相关推荐
开心比对错重要17 小时前
进程、线程、虚拟线程详解及线程个数设置
java·jvm·算法·面试
爱学大树锯17 小时前
【594 · 字符串查找 II】
java·开发语言·算法
m0_6924571018 小时前
图像噪点消除
人工智能·算法
2401_8414956418 小时前
【Python高级编程】图着色动态可视化 APP
python·算法·matplotlib·tkinter·回溯法·图着色算法·动态可视化工具
youngee1118 小时前
hot100-53搜索旋转排序数组
数据结构·算法·leetcode
烟雨梵兮18 小时前
-刷题小结19
算法
爱学大树锯18 小时前
1361 · 文字并排
算法
Tisfy18 小时前
LeetCode 2483.商店的最少代价:两次遍历 -> 一次遍历
算法·leetcode·题解·遍历
YGGP19 小时前
【Golang】LeetCode 279. 完全平方数
算法·leetcode
im_AMBER19 小时前
Leetcode 87 等价多米诺骨牌对的数量
数据结构·笔记·学习·算法·leetcode