第一题 糖果,二分找到最小满足的天数#include <bits/stdc++.h>using i64 = long long;int main() {    std::ios::sync_with_stdio(0);    std::cin.tie(0);    std::cout.tie(0);    i64 n, a, b;    std::cin >> n >> a >> b;    std::vector<i64> c(n);    for (int i = 0; i < n; i++) {     std::cin >> c[i];    }    auto check = [&](i64 mid) -> bool {     i64 sum = 0;     for (int i = 0; i < n; i++) {      sum += c[i] * mid / b;     }     return sum >= a;    };    i64 l = 0, r = 1e14;    while (l < r) {     i64 mid = (l + r) / 2;     if (check(mid)) r = mid;     else l = mid + 1;    }    std::cout << l << "\n";        return 0;}第二题 字符串哈希,因为不出现包含的情况,所以一个字符串的前缀和后缀必然不会存在于同一个字符串里面(有点绕,具体可看代码)#include <bits/stdc++.h>using i64 = long long;int main() {    std::ios::sync_with_stdio(0);    std::cin.tie(0);    std::cout.tie(0);    int n;    std::cin >> n;    std::vector<std::string> S(n);    for (int i = 0; i < n; i++) {     std::cin >> S[i];    }    std::map<std::string, bool> pre, suf;    for (auto s : S) {     for (int i = 1; i < s.size(); i++) {      pre[s.substr(0, i)] = true;      suf[s.substr(i, s.size() - i)] = true;     }    }    std::set<std::string> ans;    for (auto s : S) {     for (int i = 1; i < s.size(); i++) {      if (suf[s.substr(0, i)] && pre[s.substr(i, s.size() - i)]) {       ans.insert(s);       break;      }     }    }    std::cout << ans.size() << "\n";    for (auto res : ans) {     std::cout << res << "\n";    }        return 0;}
点赞 7
评论 3
全部评论

相关推荐

脑子烧了,这是什么规律啊。1,10,19,37,64,( )
hl7:0*9+1 1*9+1 2*9+1 4*9+1 7*9+1,9的系数是前两个系数相加再加1?
投递美团等公司10个岗位
点赞 评论 收藏
分享
牛客37328580...:个人感觉项目只是列出来了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务