Y2期末测试

目录

    • 总结:
    • 题目
      • 1.划分区间
      • 2.序列操作
        • 题目描述:
        • 题解:
        • 代码:
      • 3.划分区间
        • 题目描述:
        • 题解:
        • 代码:
      • 4.数字匹配
        • 题目描述:
        • 题解:
        • 代码:

总结:

本次模拟未达到目标,第一题做题时间太长了,随后又在第二题上浪费时间,导致后面的题都没来及看,一二题是思维题,后面的题也没想到有什么好的算法,还是要多练

题目

1.划分区间

主要是一个找规律的题,找到第一个r的位置和最后一个l的位置,在这之间的都不可行,其余的都可行,随后考虑全是l或全是r的输入,就可以了,当时想复杂了,导致做了很长时间

2.序列操作

题目描述:

给定一个长度为 n 的序列 a,然后进行 q 次操作 ,然后打印次操 q 作后序列最小值的位置。
操作一:输入方式为1 l r,表示将序列[l,r] 区间的全部元素全部升序排列。
操作二:输入方式为2 l r,表示将序列 [l,r] 区间的全部元素全部降序排列。
操作三:输入方式为3 l r,表示将序列 [l,r] 区间的全部元素进行翻转。
操作四:输入方式为4 l r k,表示将序列 [l,r] 区间的全部元素按照swap(a[i],a[i+k])规则进行交换
保证 r+k≤n,1≤k并且最终答案唯一,即序列中不存在相同元素。
输入T组数据
1≤T≤10,1≤n,q≤2×1e5
1≤a​i​​ ≤1e9
​​输入:
1
6 5
1 2 3 4 5 6
2 1 4
1 2 3
3 2 4
4 1 3 2
4 1 2 3
输出:
1

题解:

这个题主要还是找规律。可以先将数列里最小值的位置找到,设最小值的位置为ans,在操作一中,从小到大排序,可以看做ans=l,在操作二中,从大到小排序,可以看做ans=r,在操作三中,翻转操作,可以看做ans=l+r-ans,那么在操作四中,就要分类讨论,具体看代码详解。

代码:
#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
const int maxn=2e6+10;
int a[maxn],mn=INT_MAX;
int main(){int t;cin>>t;while(t--){int n,q,ans;cin>>n>>q;for(int i=1;i<=n;i++){cin>>a[i];if(mn>a[i]){mn=a[i];ans=i;}}while(q--){int x;cin>>x;if(x==1){int l,r;cin>>l>>r;if(l<=ans&&ans<=r) ans=l;}if(x==2){int l,r;cin>>l>>r;if(l<=ans&&ans<=r) ans=r;}if(x==3){int l,r;cin>>l>>r;if(l<=ans&&ans<=r) ans=l+r-ans;}if(x==4){int l,r,k;cin>>l>>r>>k;if(k<=r-l){if(l<=ans&&ans<l+k){int t=(int)((r-ans+k)/k);ans+=k*t;}else if(l+k<=ans&&ans<=r+k) ans-=k;}if(k>=r-l+1){if(l<=ans&&ans<=r) ans+=k;else if(l+k<=ans&&ans<=r+k) ans-=k;continue;}}}cout<<ans<<"\n";mn=INT_MAX;}return 0;
}

3.划分区间

题目描述:

给定一个包含n个区间的集合 S,请你将 S 划分为一个或多个区间组,每个区间属于且仅属于一个区间组内, 同一个区间组内的任意两个区间不相交。区间相交指两个区间无重叠部分。例如区间 [2, 4] 与区间 [3, 5] 是重叠的,区间 [2, 3] 与区间 [4, 5] 是不重叠的。请问集合 S 最少可以划分为多少区间组?
输入:
5
5 10
6 8
1 5
2 3
1 10
输出:
3

题解:

本题我们考虑贪心的策略,尽量让靠得近的两个区间为一个组。首先将所有区间按左端点排序,第一个区间分一个组,随后我们比较下一个的区间,如果下一个的区间的左端点大于某个组的最大右端点,我们就把他放进这个组里,更新这个组的最大右端,如果找遍所有组都没有合适的,哪个我们就把它自成一个组,最终答案就是组的数量。

代码:
#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
const int maxn=1e6+10;
struct aaa{int x,y;
}s[maxn];
bool cmp(aaa a,aaa b){return a.x<b.x;
}
int f[maxn];
int main(){int n;cin>>n;for(int i=1;i<=n;i++){cin>>s[i].x>>s[i].y;}sort(s+1,s+n+1,cmp);int ans=0;ans++;f[ans]=s[1].y;for(int i=2;i<=n;i++){bool flag=false;for(int j=1;j<=ans;j++){if(s[i].x>f[j]){flag=true;f[j]=s[i].y;break;}}if(flag==false){ans++;f[ans]=s[i].y;}}cout<<ans<<"\n";return 0;
}

4.数字匹配

题目描述:

给定 m 个长度为 n 且仅有0和1构成的字符串构成集合 S,集合 S 可能有重复,再给定一个长度为 n 的整数序列 w。关于两个字符串 s、t 匹配方案的定义如下所示:
1:设字符串 s 的各位字符从左到右依次为 s1 到 s​n​​ 。
2:设字符串 t 的各位字符从左到右依次为 t​1到tn​​ 。
3:定义两个字符串的匹配收益为 V,且初始时 V=0。
4:对于所有 i(1≤i≤n),如果 s​i​​ =t​i​​ ,则 V 加上 w​i​​ 。
现在,给出 q 个询问,每个询问包含一个长度为 n 的 01 字符串 t 以及一个整数 k,具体询问内容为:请你计算并输出集合 S 中有多少个元素满足,与给定字符串 t 的匹配价值不大于 k。
注意,如果集合中多个相同的元素均满足询问条件,则每个元素均应被计数。
输入:

题解:

可以考虑二进制的转换,将01串当成二进制转化为整数,随后可以做预处理,即提前就加好,
随后做前缀和,输出。

代码:
#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
int a[15];
char str[15];
int cnt[5000];
int f[5000][110];
int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n,m,q;cin>>n>>m>>q;for(int i=0;i<n;i++) cin>>a[n-i-1];while(m--){cin>>str;	int s=0;for(int i=0;i<n;i++){if(str[i]=='1') s=s*2+1;else s*=2;}cnt[s]++;}for(int i=0;i<1<<n;i++){if(cnt[i]==0) continue;for(int j=0;j<1<<n;j++){int sum=0,s=i^j;for(int k=0;k<n;k++){if((s>>k&1)==0) sum+=a[k];}if(sum<=100) f[j][sum]+=cnt[i];}}for(int i=0;i<1<<n;i++){for(int j=1;j<=100;j++){f[i][j]+=f[i][j-1];}}while(q--){int k;cin>>str>>k;int s=0;for(int i=0;i<n;i++){if(str[i]=='1') s=s*2+1;else s*=2;}cout<<f[s][k]<<"\n";} return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/25111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[图解]建模相关的基础知识-06

1 00:00:00,790 --> 00:00:03,480 下一个概念&#xff0c;就是基数的概念 2 00:00:04,390 --> 00:00:11,560 cardinality&#xff0c;表示有限集合中元素的数量 3 00:00:12,200 --> 00:00:14,790 我们可以用一个井号 4 00:00:14,800 --> 00:00:18,320 在前面表示…

数据结构--递归和数组

个人介绍 hello hello~ &#xff0c;这里是 code袁~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的…

10.邮票问题

上海市计算机学会竞赛平台 | YACSYACS 是由上海市计算机学会于2019年发起的活动,旨在激发青少年对学习人工智能与算法设计的热情与兴趣,提升青少年科学素养,引导青少年投身创新发现和科研实践活动。https://www.iai.sh.cn/problem/625 题目描述 有四种面值的邮票,分别是 …

使用 Django 创建 App

文章目录 步骤 1&#xff1a;创建 Django 项目步骤 2&#xff1a;创建 App步骤 3&#xff1a;配置 App步骤 4&#xff1a;编写代码步骤 5&#xff1a;运行服务器 在 Django 中&#xff0c;App 是组织代码的基本单元&#xff0c;它可以包含模型、视图、模板等组件&#xff0c;帮…

树1----7-3 列出叶结点

对于给定的二叉树&#xff0c;本题要求你按从上到下、从左到右的顺序输出其所有叶结点。 输入格式&#xff1a; 首先第一行给出一个正整数 n&#xff08;≤10&#xff09;&#xff0c;为树中结点总数。树中的结点从 0 到 n−1 编号。随后 n 行&#xff0c;每行给出一个对应结…

Web前端编程网站:探索编程世界的新窗口

Web前端编程网站&#xff1a;探索编程世界的新窗口 在数字化时代的浪潮中&#xff0c;Web前端编程网站如雨后春笋般涌现&#xff0c;为编程爱好者们打开了一扇探索编程世界的新窗口。这些网站不仅提供了丰富的学习资源&#xff0c;还搭建了一个交流与分享的平台&#xff0c;让…

git版本控制工具常用命令

一、本地仓库管理 push 向远程推送代码 pulll 拉取代码 二、远程仓库管理 三、分支操作 本地主分支master 远程主分支main head指向当前分支 查看&#xff1a;git branch 创建分支: git branch 名字 切换分支&#xff1a;git checkout 名字 合并分支&#xff1a;git…

FPGA SPI采集ADC7606数据

一,SPI总线的构成及信号类型 SPI总线只需四条线(如图1所示)就可以完成MCU与各种外围器件的通讯: 1)MOSI – Master数据输出,Slave数据输入 2)MISO – Master数据输入,Slave数据输出 3)SCK – 时钟信号,由Master产生 4)/CS – Slave使能信号,由Master控制。 在一个SPI时…

gdb调试器

目录 一、前言 debug和release 二、调试操作 2.1、退出 quit 2.2、调试 run 2.3、打断点 b 2.4、查看断点 info b 2.5、查看代码 l 2.6、删除断点 d 2.7、逐过程 n 2.8、打印变量内容 p 2.9、逐语句&#xff08;进入函数&#xff09; s 2.10、查看函数调用堆栈 …

Spring (47)如何在Spring Cloud中实现服务发现

在Spring Cloud中&#xff0c;服务发现的功能通常是通过Eureka、Consul或Zookeeper等服务发现工具来实现的。这些工具提供了运行时的服务注册、发现和健康检查等功能。我们将以Eureka为例来深入解析如何在Spring Cloud中实现服务发现。 Eureka的核心概念 Eureka Server: 服务…

【GD32F303红枫派使用手册】第十一节 ADC-电源电压单通道ADC检测实验

11.1 实验内容 通过本实验主要学习以下内容&#xff1a; ADC的简介 GD32F303 ADC工作原理 查询方式实现ADC单通道采样 11.2 实验原理 11.2.1 ADC原理 我们知道&#xff0c;自然界中有非常多的模拟信号&#xff0c;比如上一节提到的光照强度&#xff0c;还有其他的例如温…

Python的动态类型系统是什么

Python的动态类型系统是指Python语言在运行时确定变量类型的一种特性&#xff0c;而非在编译时。以下是关于Python动态类型系统的详细解释&#xff1a; 动态类型的定义&#xff1a; 动态类型指的是在运行时&#xff0c;变量的数据类型可以根据其赋值的内容动态确定。这与静态类…

RTOS笔记--任务通知+软件定时器

任务通知的本质 对于之前使用过的几种互斥操作方式队列&#xff0c;互斥量&#xff0c;信号量&#xff0c;事件组&#xff0c;他们都是黑箱操作&#xff0c;对于写入和读取的任务来说并不知道对方是哪个任务&#xff0c;只是操作环形缓冲区和链表。 而任务通知的方式就是通知方…

LeetCode-day07-312. 戳气球

LeetCode-day07-312. 戳气球 题目描述示例示例1&#xff1a;示例2&#xff1a; 思路代码 题目描述 有 n 个气球&#xff0c;编号为 0 到 n - 1&#xff0c;每个气球上都标有一个数字&#xff0c;这些数字存在数组 nums 中。 现在要求你戳破所有的气球。戳破第 i 个气球&#…

【CS.AL】算法复杂度分析 —— 时间复杂度详解

文章目录 1 概述2 时间复杂度的详细分析2.1 常数时间复杂度&#xff08;O(1&#xff09;&#xff09;2.2 对数时间复杂度&#xff08;O(log n)&#xff09;2.3 线性时间复杂度&#xff08;O(n)&#xff09;2.4 线性对数时间复杂度&#xff08;O(n log n)&#xff09;2.5 平方时…

程序的基本结构、cout语句(c++语言)

一、如何下载Dev C 登录网站&#xff1a;ht.51goc.com 二、安装Dev C 一、启动Dev C 双击桌面的图标 二、新建一个程序 三、复制一个程序 请你复制以下代码到“程序编辑区” #include<bits/stdc.h> using namespace std; int main() { cout<<"Hell…

详解MySQL完整性约束

完整性约束条件是对字段进行限制&#xff0c;要求用户对该属性进行的操作符合特定的要求。如果不满足完整性约束条件&#xff0c;数据库系统将不再执行用户的操作。MySQL 完整性约束常用的操作有六大操作&#xff1a; 主键约束唯一约束 unique非空 not null默认值约束(default…

计网仿真综合实验 实验十二

实验十二 综合网络实验 实验过程 IP配置说明参考连线配置OSPF使公司内部联通 路由器R1的OSPF配置路由器R2的OSPF配置路由器R3的OSPF配置R1、R2、R3的相关解释路由器R4的OSPF配置路由器R5的OSPF配置路由器R6的OSPF配置R4、R5、R6解释: 路由器R2的RIP配置路由器R7的RIP配置 总结 …

MicroPython esp32 连接wifi 配网

整体流程&#xff1a; 1&#xff09;开启STA 和 AP 模式 2&#xff09;扫描周围wifi 保存在 变量 wifi_list&#xff08;后面要用到&#xff09; 3) 尝试STA模式连接Wifi&#xff0c;并查寻状态。 4) 如果STA 无法连网&#xff0c;就用AP模式&#xff0c;创建热点。 5&a…

Radash 轻量级的函数工具集

Radash 是一个现代的 JavaScript 实用程序库&#xff0c;旨在提供高效、轻量级的函数工具集&#xff0c;类似于 Lodash&#xff0c;但更加现代化和模块化。Radash 通过提供一系列常用的工具函数&#xff0c;帮助开发者更轻松地处理数组、对象、函数等操作。 以下是一些 Radash…