两道编程题的题解

密码生成

链接:https://www.nowcoder.com/questionTerminal/96bf0c548a094de7a05919e0b32b1a5a
来源:牛客网

小汪作为一个有数学天分的程序猿,设计了一套密码生成器来搞定自己的密码问题。
密码生成器由N个槽位组成,槽位的下标为0~N-1,每个槽位存储一个数。起初每个槽位都是0。
密码生成器会进行M轮计算,每轮计算,小汪会输入两个数L,R(L<=R),密码生成器会将这两个数作为下标,将两个下标之间(包含)的所有槽位赋值为i(i为当前的轮次,i∈[1,M])。
M轮计算完成后,密码生成器会根据槽位的最终值生成一条密码,密码的生成规则为:
(0*a[0] + 1*a[1] + 2*a[2] + ... + (N-1)*a[N-1]) mod 100000009
其中a[i]表示第i个槽位的最终值。
请帮助小汪把他的密码生成器实现为代码。

输入描述:

第一行为两个整数N,M,表示槽位个数和计算轮数。
接下来M行,每行两个整数Li,Ri,表示第i轮计算的输入。

输出描述:

输出一行,一个整数A,表示小汪的开机密码。

示例1

输入

5 3
2 3
1 2
1 1

输出

10

题解:排序+优先队列

#include <bits/stdc++.h>using namespace std;const int N = (int)2e5 + 5;
const int MOD = 100000009;struct Segment {int l, r, timer;Segment() {}Segment(int _l, int _r, int _timer) : l(_l), r(_r), timer(_timer) {}bool operator< (const Segment& x) const {return timer < x.timer;}
}f[N];
int s[N];priority_queue<Segment> que;int main() {int n, m;scanf("%d %d", &n, &m);for (int i = 0; i < m; i++) {int l, r;scanf("%d %d", &l, &r);f[i] = Segment(l, r, i + 1);}f[m] = Segment(0, n - 1, 0);m++;sort(f, f + m, [&](Segment x, Segment y) {if (x.l == y.l) {return x.r > y.r;}return x.l < y.l;});int cur = 0;for (int i = 0; i < n; i++) {while (cur < m && f[cur].l == i) {que.push(f[cur]);cur++;}while (que.top().r < i) que.pop();s[i] = que.top().timer;}int ans = 0;for (int i = 0; i < n; i++) {ans = (ans + (i * 1LL * s[i]) % MOD) % MOD;}cout << ans << endl;return 0;
}

IP过滤器

链接:https://www.nowcoder.com/questionTerminal/8389e1ccd47d40ba859c2497a428d0ca
来源:牛客网

在搜索引擎后端服务中,需要对恶意的抓取进行限制,其中的一个环节即对访问IP进行限制。请设计一个IP过滤器,实现对访问的IP限制的功能。对IP的限制数据有三种格式:
1.全IP:如222.205.58.16
2.前面带 *:如 *.58.16
3.后面带 *:如 222.205.58.*
带 * 的表示匹配到任意的IP段均可,且 * 可以代表多个ip段,且 * 只能出现在开头或者结尾。
现给出若干条需要过滤的规则,以及若干输入的IP,你需要输出这若干条IP是否会被过滤

输入描述:

输入的第一行是过滤规则的条数N和需要过滤的IP数量M,之后的N行为IP的过滤规则且均合法,再之后的M行为需要进行判断是否被过滤的IP。其中N<100,M<50。

输出描述:

0:该条IP不会被过滤
1:该条IP会被过滤
总共M条需要判断的IP需要以空格作为区分

示例1

输入

5 3
222.205.58.16
*.58.16
222.205.58.*
*.16
224.*
222.205.58.17
222.205.59.19
223.205.59.16

输出

1 0 1

题解:暴力匹配即可

#include <bits/stdc++.h>using namespace std;int main() {int n, m;scanf("%d %d", &n, &m);vector<string> foo, bar;for (int i = 0; i < n; i++) {string ss;cin >> ss;if (ss[0] == '*' || ss.back() == '*') {foo.push_back(ss);} else {bar.push_back(ss);}}auto ok = [&](string s1, string s2) -> bool {if (s1[0] == '*') {reverse(s1.begin(), s1.end());reverse(s2.begin(), s2.end());}int i = 0, j = 0;while (i < (int)s1.size() && j < (int)s2.size()) {if (s1[i] == '*') {return true;}if (s1[i] != s2[j]) {return false;}i++;j++;}return false;};auto check1 = [&](string ss) -> bool {for (string b : bar) {if (ss == b) {return true;}}return false;};auto check2 = [&](string ss) -> bool {for (string f : foo) {if (ok(f, ss)) {return true;}}return false;};for (int i = 0; i < m; i++) {string ss;cin >> ss;if (check1(ss) || check2(ss)) {cout << "1" << " ";} else {cout << "0" << " ";}}cout << endl;return 0;
}

搜狗2020校招【后端】笔试(第二场)相关推荐

  1. Bilibili 2020校招 后端笔试试卷

    Bilibili后端笔试试卷 第一题:原地翻转字符串,要求空间复杂度O(1),时间复杂度 O(n) AC 100% 代码: import java.util.Scanner;/*** @author ...

  2. 数据分析真题日刷 | 商汤科技2018校招C++/算法开发/大数据/后端/运维/测试/数据挖掘开发工程师笔试第二场

    断了大半个月没有刷题,进入「数据分析真题日刷」系列第13篇 . 今日真题 商汤科技2018校招C++/算法开发/大数据/后端/运维/测试/数据挖掘开发工程师笔试第二场 (来源:牛客网) 题型 客观题: ...

  3. 搜狗2020秋招笔试的一道算法题

    搜狗2020秋招的一道算法题 有A,B,C三种样品,凑齐三个样品各一个就可以领取一个奖品.任意两个样品可兑换另一种样品,如AA可兑换一个B或一个C,AB可兑换一个C.输入ABC,问最多可以领取多少奖品 ...

  4. 搜狗2020校招(后端)笔试第一场

    写了两道题 第一题 链接:https://www.nowcoder.com/questionTerminal/40223a1cd2a24b96aaff958e516c49fc 来源:牛客网 关联容器m ...

  5. 为了OFFER | 腾讯2020校招后端《解压字符串》

    @Author:Runsen @Date:2020/9/6 大四刷题拼offer系列,不拼不行啊.自己知道自己的数据结构算法很菜.而且2020/9/6今晚还有腾讯的笔试,祝我好运吧.自己知道成功的可能 ...

  6. 网易游戏(互娱)2020校招在线笔试-游戏研发

    第一题 小A刚学了二进制,他十分激动.为了确定他的确掌握了二进制,你给他出了这样一道题目:给定N个非负整数,将这N个数字按照二进制下1的个数分类,二进制下1的个数相同的数字属于同一类.求最后一共有几类 ...

  7. 【面试题】网易互娱(游戏)2020校招在线笔试-游戏研发第一批[水平线]

    伞屉国是一个以太阳能为主要发电手段的国家,因此他们国家中有着非常多的太阳能基站,链接着的基站会组合成一个发电集群.但是不幸的是伞屉国不时会遭遇滔天的洪水,当洪水淹没基站时,基站只能停止发电,同时被迫断 ...

  8. 网易互娱2017实习生招聘游戏研发工程师在线笔试第二场(神奇的数)

    题意分析: (1)数论的题目,给出一个long long类型的范围[N,M],求出这个范围中满足三个条件的数的个数: ①这个数至少包含('2', '3', '5')中的任意一个数字; ② 这个数不能出 ...

  9. 网易游戏(互娱)2020校招在线笔试-游戏研发第一批-笔试编程题

    [编程题]二进制计数-研发 小A刚学了二进制,他十分激动.为了确定他的确掌握了二进制,你给他出了这样一道题目:给定N个非负整数,将这N个数字按照二进制下1的个数分类,二进制下1的个数相同的数字属于同一 ...

最新文章

  1. [原创]Java性能优化权威指南读书思维导图
  2. Nginx使用http_accesskey_module防盗链,告别referer,告别伪装
  3. 头像裁剪_课堂裁剪|19级油画班油画头像写生作品
  4. WinForm实现窗体最小化后小图标在右边任务栏下
  5. go语言渐入佳境[6]-operator运算符
  6. 松下抛却Jungle掌机研发项目
  7. ora创建物化视图 11g版本
  8. R语言查看某个R包版本号
  9. PG数据库创建视图并授权给新用户
  10. imagemagick 压缩gif的正确姿势
  11. 函数柯里化curry 与合成函数 compose
  12. 第2章 变量、数据类型、运算符
  13. 英语3500词(16/20)trade主题(2022.1.28)
  14. windows redis 假死处理
  15. Linux搭建Postfix邮件服务器
  16. 单元格内容分列多行_『如何将excel单个表格里的多行数据分列』
  17. K8s NetworkPolicy与网络插件flannel、calico详细版
  18. 来自于游戏开发萌新的上路分享
  19. NISP证书换取CISP证书需要哪些条件?
  20. 翻译质量评估的标准与方法

热门文章

  1. 离开腾讯首创业,贾佳亚谈人工智能 2.0 革命,技术究竟该如何变革?
  2. 怎样使控件的背景色为透明色?
  3. 不带www的域名强制跳转到www域名,Nginx服务器rewrite重写
  4. android滑动冲突的解决方案
  5. 网易云音乐前副总裁教你如何做产品 —《幕后产品》读书笔记
  6. 80行代码自己动手写一个表格拆分与合并小工具(文末附工具下载)
  7. 使用FFMPEG将WebM转为MP4或MKV
  8. cmd跑绿色代码_cmd代码大全
  9. 腾讯青浦二期数据中心为啥得到了USGBC的青眼?
  10. 你永远不知道明天和意外哪个先到来