信息与未来2017真题笔记
T1. 龟兔赛跑
题目描述
兔子又来找乌龟赛跑啦!同样的错误兔子不会犯两次,所以兔子提出赛跑的时候,乌龟就觉得这场比赛很不公平。于是兔子进一步放宽了条件,表示他可以在比赛开始以后先睡 t t t 分钟再开始追乌龟。
乌龟这下没办法确定比赛到底公平不公平了,所以请你来帮忙。假设乌龟每分钟可以跑 x x x 米,兔子每分钟跑 y y y 米 ( x < y ) (x\lt y) (x<y)。他希望你计算最大的整数赛跑距离 (米),满足乌龟能在兔子先睡 t t t 分钟的前提下,比兔子更早或同时到达终点。
输入格式
三个整数 x , y , t x,y,t x,y,t。
输出格式
一个整数,表示要求的最长赛跑距离。
样例 #1
样例输入 #1
11 21 7
样例输出 #1
161
提示
1 ≤ x < y ≤ 100 , t ≤ 1000 1\leq x\lt y\leq 100,t\leq 1000 1≤x<y≤100,t≤1000。
本题原始满分为 15 pts 15\text{pts} 15pts。
正解
简单的追及问题,答案是 x × t + 1.0 × x × t ÷ ( y − x ) × x x\times t+1.0\times x\times t\div(y-x)\times x x×t+1.0×x×t÷(y−x)×x。
代码
#include <bits/stdc++.h>
using namespace std;
int x,y,t;
int main()
{cin >> x >> y >> t;cout << int(x * t + 1.0 * x * t / (y - x) * x);return 0;
}
T2. 基因组分析
题目描述
乌龟得到了他的基因组,一个只包含 A T C G \tt{ATCG} ATCG 四种字母的字符串。乌龟想起科学家说,基因组中很多片段都多次重复出现,而且这种重复是很有意义的,于是他想计算一下自己基因组里片段的重复情况。
给定一个基因组,其中一个长度为 k k k 的子串称为一个“ k k k-片段”。乌龟希望你计算出基因组中不同的 k k k-片段数量。例如,基因组 T A C A C \tt{TACAC} TACAC 的 2 2 2-片段有 T A , A C , C A , A C \tt{TA,AC,CA,AC} TA,AC,CA,AC,其中不同的片段数量有 3 3 3 个。
试题中使用的生成数列 R R R 定义如下:整数 0 ≤ R 1 < 201701 0\leq R_1\lt 201701 0≤R1<201701 在输入中给出。
对于 i > 1 , R i = ( R i − 1 × 6807 + 2831 ) m o d 201701 i\gt 1,R_i=(R_{i−1}\times 6807+2831)\mod 201701 i>1,Ri=(Ri−1×6807+2831)mod201701。
输入格式
整数 n , k , R 1 n,k,R_1 n,k,R1,表示基因组的长度、片段的长度和数列生成的首项。基因组第 i ( 1 ≤ i ≤ n ) i(1\leq i\leq n) i(1≤i≤n) 个字符在 R i m o d 4 R_i \mod 4 Rimod4 的值为 0 , 1 , 2 , 3 0,1,2,3 0,1,2,3 时分别为 A , T , C , G \tt{A,T,C,G} A,T,C,G。
输出格式
一个整数,表示不同的 k k k-片段的数量。
样例 #1
样例输入 #1
20 2 37
样例输出 #1
10
提示
30 % 30\% 30% 的数据满足 n ≤ 100 n\leq100 n≤100;
100 % 100\% 100% 的数据满足 1 ≤ n ≤ 1 0 5 , 1 ≤ k ≤ 10 1\leq n\leq 10^5,1\leq k\leq 10 1≤n≤105,1≤k≤10。
本题原始满分为 20 pts 20\text{pts} 20pts。
正解
直接根据题意暴力枚举即可,时间复杂度为 O ( n m ) O(nm) O(nm),不会超。
代码
#include <bits/stdc++.h>
#define int long long
using namespace std;int a,b,c;
string s = "ATCG";
map <string,int> mp;
string t;
int sum;void solve()
{cin >> a >> b >> c;for (int i = 0;i < a;i++)t += s[c%4],c = (c*6807+2831) % 201701;for (int i = 0;i < a-b+1;i++){string n = "";for (int j = i;j <= i+b-1;j++)n += t[j];if (mp[n] != 1)mp[n] = 1,sum++;}cout << sum;
}signed main()
{int TTT;
// cin >> TTT;TTT = 1;while (TTT--) solve();return 0;
}
T3. 任务调度
题目描述
乌龟因为动作太慢,有 n n n 个任务已经超过截止日期了。乌龟处理第 i i i 个任务需要 a i a_i ai 单位时间。从 0 0 0 时刻开始,乌龟可以选择某项任务,完成它,然后再开始另一项任务,如此往复直到所有任务都被完成。
由于已经超过截止日期,乌龟会为此受到一定的惩罚,惩罚值等于所有任务完成时刻之和。例如,有 2 个任务分别需要 10 10 10 和 20 20 20 单位时间完成。如果先完成任务 1,惩罚值为 10 + 30 = 40 10+30=40 10+30=40;如果先完成任务 2,惩罚值为 20 + 30 = 50 20+30=50 20+30=50。
乌龟希望你求出惩罚值最小的完成任务的顺序。
试题中使用的生成数列 R R R 定义如下:整数 0 ≤ R 1 < 201701 0\leq R_1\lt 201701 0≤R1<201701 在输入中给出。
对于 i > 1 , R i = ( R i − 1 × 6807 + 2831 ) m o d 201701 i\gt 1,R_i=(R_{i−1}\times 6807+2831)\mod 201701 i>1,Ri=(Ri−1×6807+2831)mod201701。
输入格式
两个整数 n , R 1 n,R_1 n,R1,表示任务的数量和生成数列的首项。处理任务 i ( 1 ≤ i ≤ n ) i(1\leq i\leq n) i(1≤i≤n) 的时间 a i = ( R i m o d 100 ) + 1 a_i=(R_i\bmod 100)+1 ai=(Rimod100)+1。
输出格式
一个整数,表示完成所有任务的最小惩罚值。
样例 #1
样例输入 #1
10 2
样例输出 #1
1641
提示
对于 100 % 100\% 100% 的数据, 1 ≤ n ≤ 1 0 3 1\leq n\leq10^3 1≤n≤103。
本题原始满分为 15 pts 15\text{pts} 15pts。
正解
直接根据题意模拟即可。
代码
#include <bits/stdc++.h>
#define int long long
using namespace std;int n,m;
int a[1010],b[1010];void solve()
{cin >> n >> m;b[1] = m;for (int i = 2;i <= n;i++)b[i] = (b[i-1]*6807+2831) % 201701;for (int i = 1;i <= n;i++)a[i] = b[i] % 100 + 1;sort(a+1,a+n+1);int ans = 0,sum = 0;for (int i = 1;i <= n;i++)sum += a[i],ans += sum;cout << ans;
}signed main()
{int TTT;
// cin >> TTT;TTT = 1;while (TTT--) solve();return 0;
}
T4. 密码锁
题目描述
乌龟给自己的贵重物品上了密码锁。密码锁上有 5 5 5 个数字拨盘。每个数字拨盘每次向上拨使数字增加 1 1 1 ( 9 9 9 向上拨得到 0 0 0),向下拨使数字减少 1 1 1 ( 0 0 0 向下拨得到 9 9 9)。
拨盘上的数字组成一个 5 5 5 位数。只要拨盘上的数字变为素数,密码锁就会被解开。素数 (又称质数) 是只能被 1 1 1 和它自身整除的大于 1 1 1 的自然数。因为乌龟动作实在太慢,他希望你帮他计算如何开锁,使得拨动的总次数最少。
输入格式
一个 5 5 5 位数,表示拨盘的初始数字。
输出格式
一个 5 5 5 位素数,表示开启密码锁使用的素数(拨动次数最少)。如有多组解,输出满足条件的最大数。
样例 #1
样例输入 #1
01210
样例输出 #1
01319
提示
本题原始满分为 15 pts 15\text{pts} 15pts。
正解
根据题意模拟即可。
代码
#include <bits/stdc++.h>
#define int long long
using namespace std;int n,ans,mi = 1e18,idx;
int check(int x)
{if (x == 1) return 0;for (int i = 2;i * i <= x;i++)if (x % i == 0)return 0;return 1;
}void solve()
{cin >> n;int na = n / 10000,nb = n / 1000 % 10,nc = n / 100 % 10,nd = n / 10 % 10,ne = n % 10;for (int i = 2;i <= 99999;i++)if (check(i)){int ia = i / 10000,ib = i / 1000 % 10,ic = i / 100 % 10,id = i / 10 % 10,ie = i % 10;ans += min((na-ia+10)%10,(ia-na+10)%10);ans += min((nb-ib+10)%10,(ib-nb+10)%10);ans += min((nc-ic+10)%10,(ic-nc+10)%10);ans += min((nd-id+10)%10,(id-nd+10)%10);ans += min((ne-ie+10)%10,(ie-ne+10)%10);if (mi > ans) mi = ans,idx = i;else if (mi == ans && idx < i) idx = i;ans = 0;}if (idx < 10000) cout << 0;if (idx < 1000) cout << 0;if (idx < 100) cout << 0;if (idx < 10) cout << 0;cout << idx;
}signed main()
{int TTT;
// cin >> TTT;TTT = 1;while (TTT--) solve();return 0;
}
T5. 房屋积水
题目描述
乌龟家的屋顶是凹凸不平的,所以每次雨后都会积水。为了知道屋顶是否会在暴雨后塌掉,他把屋顶的形状给了你,希望你帮他计算暴雨后屋顶的积水总量。
乌龟的屋顶由顺次排在同一水平线上的 n n n 个宽度为 1 1 1、高度为整数 (分别给出) 的瓦片组成。例如给定 n = 5 n=5 n=5,瓦片的高度分别为 4 , 2 , 3 , 5 , 1 4,2,3,5,1 4,2,3,5,1,屋顶可以画在下图所示的网格中,灰色格子为瓦片。
暴雨过后,如果一个方格向左右两侧延伸都能到达瓦片占据的方格,它就会积水。所以图中波浪线格子在暴雨后会积水,屋顶的积水方格总数为 3 3 3。
试题中使用的生成数列 R R R 定义如下:整数 0 ≤ R 1 < 201701 0\leq R_1\lt 201701 0≤R1<201701 在输入中给出。
对于 i > 1 , R i = ( R i − 1 × 6807 + 2831 ) m o d 201701 i\gt 1,R_i=(R_{i−1}\times 6807+2831)\mod 201701 i>1,Ri=(Ri−1×6807+2831)mod201701。
输入格式
两个整数 n , R 1 n,R_1 n,R1,表示屋顶的宽度和生成数列的首项。从左向右数第 i ( 1 ≤ i ≤ n ) i(1\leq i\leq n) i(1≤i≤n) 个瓦片的高度 a i = R i m o d 10 a_i=R_i\bmod 10 ai=Rimod10。
输出格式
一个整数,表示暴雨后屋顶积水方格的总数。
样例 #1
样例输入 #1
10 1
样例输出 #1
23
提示
1 ≤ n ≤ 100 1\leq n\leq100 1≤n≤100。
本题原始满分为 15 pts 15\text{pts} 15pts。
正解
通过正序房屋的最大值、倒序房屋的最大值,来求出中间部分的数量。
代码
#include <bits/stdc++.h>
#define int long long
using namespace std;int n,sum;
int a[111],b[111],c[111],r[111];void solve()
{cin >> n >> r[1];for (int i = 2;i <= n;i++)r[i] = (r[i-1]*6807+2831) % 201701;for (int i = 1;i <= n;i++)a[i] = r[i] % 10;for (int i = 1;i <= n;i++)b[i] = max(b[i-1],a[i]);for (int i = n;i >= 1;i--)c[i] = max(c[i+1],a[i]);for (int i = 1;i <= n;i++)sum += min(b[i],c[i]) - a[i];cout << sum;
}signed main()
{int TTT;
// cin >> TTT;TTT = 1;while (TTT--) solve();return 0;
}
相关文章:

信息与未来2017真题笔记
T1. 龟兔赛跑 题目描述 兔子又来找乌龟赛跑啦!同样的错误兔子不会犯两次,所以兔子提出赛跑的时候,乌龟就觉得这场比赛很不公平。于是兔子进一步放宽了条件,表示他可以在比赛开始以后先睡 t t t 分钟再开始追乌龟。 乌龟这下没…...

前端基础知识-ES6解构赋值(将数组内元素、字符串内字符、对象内属性值快速赋值给其他变量)
前言: 将数组、字符串、对象进行展开,并将展开的数据赋值给指定变量,以达到语法简化的目的,日常开发中可以大大提升我们的效率。 主要语法: 一、[变量1,变量2。。。]目标数组 将数组里面的内容赋给其他变量 场景1…...

【SpringBoot整合系列】SpringBoot整合RabbitMQ-消息可靠性
目录 确保消息的可靠性RabbitMQ 消息发送可靠性分析解决方案开启事务机制发送方确认机制单条消息处理消息批量处理 失败重试自带重试机制业务重试 RabbitMQ 消息消费可靠性如何保证消息在队列RabbitMQ 的消息消费,整体上来说有两种不同的思路:确保消费成…...

Hbase 常用shell操作
目录 1、创建表 1.1、启动HBase Shell 1.2、创建表 1.3、查看表 1.4、删除表 2、插入数据 2.1、put命令 3、查看数据 3.1、get命令 3.2、查询数据中文显示 4、更新数据 4.1、使用put来更新数据 5、删除数据 5.1、delete命令 5.2、删除指定列的数据 5.3、delete…...

数据库被攻击后出现1044 - access denied for user ‘root‘@‘% ‘ to database table
MySQL数据库被攻击后,数据库全部被删除,并且加一个一个勒索的数据,向我索要btc, 出现这个问题就是我的数据库密码太简单了,弱密码,被破解了,并且把我权限也给修改了 导致我操作数据库时&#…...

在哪里打印资料比较便宜
在数字时代,我们常常需要在各种文档、资料之间穿梭,然而,有时候我们需要的并不是数字版,而是纸质版。那么,在哪里打印资料比较便宜呢? 琢贝云打印以其超低的价格,优质的打印服务,赢…...

leetcode 2606.找到最大开销的子字符串
思路:dp 这道题是不是很像最大子数组和那道题呢?从这里我们其实能看出来一类题的蹊跷规律来: 也就是说,在涉及到子字符串,子数组这样的字眼的时候,并且有最值问题,我们可以基本上确定是动态规划…...

超标量处理器设计:重排序缓存(ROB)
★超标量处理器的很多地方用到了重排序缓存,但是我对它不是很了解,所以我整理一下重排序缓存的知识点。 重排序缓存(ROB)在确保乱序执行的指令能够正确地完成和提交(Commit),也可以用来寄存器重命名。 ROB是一个先进先出的表,每个…...

nginx常用内置变量
名称说明$arg_name请求中的name参数$args请求中的参数$content_lengthhttp请求信息里的"Content-Length"$content_type请求信息里的"Content-Type"$host请求信息中的"Host",如果请求中没有Host,则等于设置的服务器名$host…...

MySQL技能树学习——数据库组成
数据库组成: 数据库是一个组织和存储数据的系统,它由多个组件组成,这些组件共同工作以确保数据的安全、可靠和高效的存储和访问。数据库的主要组成部分包括: 数据库管理系统(DBMS): 数据库管理系…...

OpenCV入门1:Python基础编程
目录 环境配置 Python基础语法 import 与 from...import If ... Else 语句 While 循环 For 循环 集合数据类型 列表 函数 类和对象 环境配置 详情请参考:Pycharm环境配置完整教程 Python基础语法 import 与 from...import 在 python 用 import 或者 f…...

C++ Builder XE EnumWindowsProc遍历所有窗口的名称
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) { // 这里可以添加你的处理逻辑 // 例如,将句柄添加到列表中或者其他操作 // 这里我们仅仅输出到调试窗口 OutputDebugString(L"枚举窗口句柄: "); char windowHandle[10];…...

Qt QInputDialog详解
1.简介 QInputDialog是一个对话框类,用于从用户那里获取一个单一的值。这个值可以是字符串、数字、或者一个列表中的选项。QInputDialog提供了一个方便的方式来快速创建一个输入对话框,无需自己从头开始构建。 QInputDialog支持多种输入类型࿱…...

最新盘点!2024年20大好用的项目管理软件(后续持续更新)
项目管理软件,作为一种高效的项目管理工具,正逐渐成为企业运营中不可或缺的一环。它包括任务分配、进度跟踪、团队协作、风险预测等多个方面,为企业提供了全方位的项目管理解决方案。 在如今竞争激烈的市场环境下,企业要想在有限…...

Linux:配置客户端默认autofs服务
Linux:配置客户端autofs服务 安装autofs软件 [rootserver200 ~]# dnf install autofs -y开启并设置开机自启autofs服务 [rootserver200 ~]# systemctl enable --now autofs访问默认autofs挂载机制 当autofs启动后系统默认会在/net目录中访问nfs服务器 [rootser…...

Kotlin版本的Gradle全局配置init.gradle.kts及参考文档
工欲善其事, 必先利其器。 文章目录 init.gradle.ktsGroovy版本的init.gradle其他有用的settings.gradle.ktskotlin 与 compose 版本对应关系agp 与 gradle 版本对应关系gradle下载器 直接在.gradle文件夹下添加文件init.gradle / init.gradle.kt for kotlin dsl. …...

react18【实战】tab切换,纯前端列表排序(含 lodash 和 classnames 的安装和使用)
技术要点 动态样式 className{tabItem ${currentType item.value && "active"}}安装 lodash npm i --save lodash使用 lodash 对对象数组排序(不会改变源数组) _.orderBy(dataList, "readNum", "desc")src\De…...

C++学习第二十七课:C++ 输入输出流详解:从基础到高级应用
在 C 中,流(stream)是一种用于实现输入输出操作的抽象概念。流可以看作是字节的流动,这些字节可以从一个地方流向另一个地方,例如从键盘输入到程序中,或者从程序输出到屏幕。C 提供了一套完整的流库来处理各…...

【Unity AR开发系列】介绍如何使用这个支持热更的AR开发插件,快速地开发AR应用
预告 Unity开发AR系列 本专栏将介绍如何使用这个支持热更的AR开发插件,快速地开发AR应用。 更新 二、使用插件一键安装HybridCLR和ARCore 三、配置带HybridCLR的ARCore开发环境...

Nginx - 配置文件结构(一)
安装Nginx 以 Ubuntu 为例,安装命令为 sudo apt install nginx常用指令 # 检查配置文件是否有问题 nginx -t# 热加载配置文件 nginx -s reload# 等待处理完当前请求并退出 nginx -s quit# 快速退出 nginx -s stop目录结构 nginx 默认安装位置一般在 /etc/nginx …...

暗区突围进不去/游戏无法启动/掉帧卡顿/报错的解决方法
暗区突围是一款高拟真硬核射击手游,打造了全新的沉浸式暗区战局体验,发行商是腾讯公司。这个游戏名词虽然看起来有些陌生,但其本身的玩法内核毫无疑问的是,这款游戏在画面质量和枪械操作方面,都是手游市场上同类游戏中…...

基于FPGA的视频矩阵 视频拼接 无缝切换解决方案
视频矩阵 视频矩阵 视频拼接 无缝切换 1. 最大支持144路HDMI视频输入,最大支持144路路HDMI输出,完全交叉切换。 2. 与包括1080p/60的所有HDTV分辨率和高达1920*1200的PC的分辨率兼容; 3. 支持HDMI 1.3a、HDCP 1.3、HDCP 1.4、以及DVI 1.0协…...

LeetCode 513.找树左下角的值
LeetCode 513.找树左下角的值 1、题目 题目链接:513. 找树左下角的值 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1示例 2: 输入: [1,2,3,4,null…...

redis分片java实践、redis哨兵机制实现、redis集群搭建
redis分片java实践 linux安装redishttps://mp.csdn.net/mp_blog/creation/editor/134864302复制redis.conf配置文件成redis1.conf、redis2.conf、redis3.conf 修改redis的端口信息和存pid文件的路径。存pid文件的路径只要不同就行了,没什么特别要求。 指定配置文件…...

2024年四千价位段最具统治力的投影仪,坚果N1S 4K: 4K+三色激光=下一代4K
更高的亮度与分辨率、更强的对比度、更广的色域、更低的价格,家用智能投影企业在性能和价格上加速内卷。作为该领域的龙头和“卷王之王”,坚果投影率先将激光投影仪的价格拉入万元内,近期其又祭出一把杀手锏——坚果N1S 4K。该产品是首款4000…...

MySQL8.3升级踩坑记录
之前用的mysql5.7,目前被省公司发现有漏洞,需要升级mysql8.3,无奈只好升级,记录下踩坑经过 1、安装完以后设置环境变量,网上操作一大堆,以便于方便使用client 2、双击client 登录,开启远程访问…...

你写的每条SQL都是全表扫描吗
你写的每条SQL都是全表扫描吗?如果是,那MySQL可太感谢你了,每一次SQL执行都是在给MySQL上压力、上对抗。MySQL有苦难言:你不知道索引吗?你写的SQL索引都失效了不知道吗?慢查询不懂啊?建那么多索…...

每日两题 / 24. 两两交换链表中的节点 25. K 个一组翻转链表(LeetCode热题100)
24. 两两交换链表中的节点 - 力扣(LeetCode) 定义三个指针,交换前先保存ntnt指针为next->next,cur和next两个节点,然后将pre->next指向next 若pre为空,说明当前交换的节点为头两个节点,…...

【Linux】模拟实现bash(简易版)
👦个人主页:Weraphael ✍🏻作者简介:目前正在学习c和算法 ✈️专栏:Linux 🐋 希望大家多多支持,咱一起进步!😁 如果文章有啥瑕疵,希望大佬指点一二 如果文章对…...

C++ | Leetcode C++题解之第67题二进制求和
题目: 题解: class Solution { public:string addBinary(string a, string b) {string ans;reverse(a.begin(), a.end());reverse(b.begin(), b.end());int n max(a.size(), b.size()), carry 0;for (size_t i 0; i < n; i) {carry i < a.siz…...