第十四届蓝桥杯省赛Python组真题(未完)

AcWing 4965. 三国游戏 - AcWing

法1:dfs的时间复杂度是2^n 对于每一个我们有选与不选两种 

//法1:dfs
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define x first
#define y second
typedef pair<int, int> PII;const int N=1e5+7;
int n;
int a[4][N];
int x,y,z; 
int ans=0;
int len=0;
void dfs(int dep){if(x>(y+z)||y>(x+z)||z>(y+x)){ans=max(len,ans);}if(dep==n+1)return ;x+=a[1][dep];y+=a[2][dep];z+=a[3][dep];len++;dfs(dep+1);len--;x-=a[1][dep];y-=a[2][dep];z-=a[3][dep];dfs(dep+1);return ;
}
void solve(){cin>>n;for(int i=1;i<=n;i++)cin>>a[1][i];for(int i=1;i<=n;i++)cin>>a[2][i];for(int i=1;i<=n;i++)cin>>a[3][i];dfs(1);cout<<(ans==0?-1:ans);return ;
}
signed main(){int t=1;while(t--)solve();return 0;
} 

法2:分三个国家赢的情况讨论

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e5 + 10;
int a[N], b[N], c[N], t[N], n;
//t[i]计算差值
int get(int x[], int y[], int z[]) {for (int i = 1; i <= n; i ++) {t[i] = x[i] - y[i] - z[i];}sort(t + 1, t + 1 + n, greater<>());//大的在左边for (int i = 1; i <= n; i ++) {t[i] += t[i - 1];//加上这个数if (t[i] <= 0) return i - 1;//如果和小于等于0的话那么就不行了 返回上一个最后>0的长度 i-1}return n;//一直没有返回那么全部都符合条件
}
signed main () {cin >> n;for (int i = 1; i <= n; i ++) cin >> a[i];for (int i = 1; i <= n; i ++) cin >> b[i];for (int i = 1; i <= n; i ++) cin >> c[i];int res = max({get(a, b, c), get(b, a, c), get(c, a, b)});//max可以用于数组判最大cout << (res == 0 ? -1 : res) << '\n';return 0;
}

5395. 平均 - AcWing题库

//解法:排序加贪心
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define x first
#define y second
typedef pair<int, int> PII;
const int N=1e5+7;
int n;
vector<int>v[10];
int num[10];//记录每个数出现的次数 
void solve(){cin>>n; int sur=n/10;for(int i=1;i<=n;i++){int a,b;cin>>a>>b;v[a].push_back(b);num[a]++; }int ans=0;for(int i=0;i<=9;i++)sort(v[i].begin(),v[i].end());for(int i=0;i<=9;i++){if(num[i]>sur){int temp=num[i]-sur;//多出来temp个数需要改ans+=accumulate(v[i].begin(),v[i].begin()+temp,0);//注意后面的这个位置到不了  0-(temp-1)这是temp个数 }}cout<<ans;return ;
}
signed main(){int t=1;while(t--)solve();return 0;
} 

 4967. 翻转 - AcWing题库

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define x first
#define y second
typedef pair<int, int> PII;
const int N=1e5+7;
int n;
vector<int>v[10];
int num[10];//记录每个数出现的次数 
char change(char ch){if(ch=='1')return '0';return 1;
}
void solve(){string t,s;cin>>t>>s;//把s变成t int len=t.size();if(s[0]!=t[0]||s[len-1]!=t[len-1]){cout<<-1<<'\n';return ;}//特判一下int cnt=0;for(int i=1;i<len-1;i++){if(s[i]!=t[i]){if(s[i-1]==s[i+1]&&s[i-1]!=s[i]&&s[i-1]==t[i]){cnt++;s[i]=change(t[i]);}else{cout<<-1<<'\n';return ;}}}cout<<cnt<<'\n';return ;
}
signed main(){int tt=1;cin>>tt;while(tt--)solve();return 0;
} 

 154. 滑动窗口 - AcWing题库

#include <iostream>
using namespace std;
const int N = 1000010;
int a[N], q[N], hh=1, tt = 0;
//q[i]用来存下标
//一般hh设在第一个元素 tt设在hh的前面一位
void getMinWindow(int n, int k) {for (int i = 1; i <= n; ++i) {cin >> a[i];//右端点是i 长度是k 左端点是i-k+1>q[hh]的时候while(tt>=hh&&i-k+1>q[hh])hh++;//队首元素出队while (hh <= tt && a[i] <= a[q[tt]]) --tt;//维护队首元素是最小值q[++tt] = i;if (i >= k) cout << a[q[hh]] << " ";//形成了一个窗口}cout << '\n';
}void getMaxWindow(int n, int k) {hh = 1; tt = 0;for (int i = 1; i <= n; ++i) {while(tt>=hh&&i-k+1>q[hh])hh++;while (hh <= tt && a[i] >= a[q[tt]]) --tt;q[++tt] = i;if (i >= k) cout << a[q[hh]] << " ";}
}int main() {int n, k;cin >> n >> k;getMinWindow(n, k);getMaxWindow(n, k);return 0;
}

 4964. 子矩阵 - AcWing题库

#include<iostream>
#include<cstring>
using namespace std;
const int N=1010,mod=998244353;
int g[N][N],min1[N][N],min2[N][N],max1[N][N],max2[N][N];
int n,m,a,b;void getmin1(int id){int q[N],tt=-1,hh=0;for(int i=1;i<=m;i++){while(tt>=hh&&i-k+1>q[hh])hh++;//队首元素的下标<窗口左端点时候while(tt>=hh&&g[id][q[tt]]>=g[id][i])tt--;q[++tt]=i;//维护每一行的最小值if(i>=b)min1[id][i]=g[id][q[hh]];//形成了一个窗口}
}void getmin2(int id){int q[N],tt=-1,hh=0;for(int i=1;i<=n;i++){while(tt>=hh&&i-q[hh]+1>a)hh++;while(tt>=hh&&min1[q[tt]][id]>=min1[i][id])tt--;q[++tt]=i;//对于min1数组维护每一列的最小值 就得到了这个区间的最小值min1[i][j]就是以第i行第j列为右端点时候的最小值if(i>=a)min2[i][id]=min1[q[hh]][id];}
}void getmax1(int id){int q[N],tt=-1,hh=0;for(int i=1;i<=m;i++){while(tt>=hh&&i-q[hh]+1>b)hh++;while(tt>=hh&&g[id][q[tt]]<=g[id][i])tt--;q[++tt]=i;if(i>=b)max1[id][i]=g[id][q[hh]];}
}void getmax2(int id){int q[N],tt=-1,hh=0;for(int i=1;i<=n;i++){while(tt>=hh&&i-q[hh]+1>a)hh++;//超过了要出队while(tt>=hh&&max1[q[tt]][id]<=max1[i][id])tt--;q[++tt]=i;if(i>=a)max2[i][id]=max1[q[hh]][id];}
}int main(){scanf("%d%d%d%d",&n,&m,&a,&b);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)scanf("%d",&g[i][j]);for(int i=1;i<=n;i++) getmin1(i);for(int i=b;i<=m;i++)getmin2(i);for(int i=1;i<=n;i++)getmax1(i);for(int i=b;i<=m;i++)getmax2(i);long long res(0);for(int i=a;i<=n;i++)for(int j=b;j<=m;j++) res+=((long long)min2[i][j]*max2[i][j])%mod,res%=mod;
//不断队mod取模printf("%d\n",res);return 0;
}

5021. 阶乘的和 - AcWing题库

//本题需要找到合并阶乘的规律
//如果题目中没有A[i]阶乘加和的条件,那么m就是数组A中的最小值
//而如果要对A[i]的阶乘加和,可能出现两个较小的数的阶乘合并成一个较大数的阶乘的现象
//如3个2的阶乘可以合并成3的阶乘,4个3的阶乘可以合并成4的阶乘
//故得到规律:若数字num出现了cnt次,且num可以被(cnt+1)整除,那么就可以合并成(num+1)的阶乘
//如样例中的2 2 2,可以将其合并成一个3,转化为数字3出现了一次 
//用map容器存储<数字,出现的次数>,再逐个数字验证是否满足如上规律,
//若满足则合并,并更新其出现的次数,若有不满足的数字则直接输出即可 
//元素个数不能超过1e5那么 最大可以被凑出来的阶乘就是100000!
//若所有数都大于1e5那么能整除的就只能是其中最小的 
//对于x>=k 则x!一定可以被k!整除 反之则不行 
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+10;
map<ll,int>mp;//这个数字和这个数字出现的次数 
int main(){int n;scanf("%d",&n);for(int i=1;i<=n;i++){ll tmp;scanf("%lld",&tmp);mp[tmp]++;//用map记录每个数字出现的次数 }    map<ll,int>::iterator it;for(it=mp.begin();it!=mp.end();it++){//自动按照元素从小到大的顺序遍历 ll num=it->first;//取出当前元素 int cnt=it->second;//取出当前元素出现的次数 if(cnt%(num+1)==0){//满足阶乘合并的条件 mp[num+1]+=cnt/(num+1);//例如3个2的阶乘合并成1个3的阶乘,3的出现次数加1   num+1出现的次数加上cnt/(num+1)}else{printf("%lld\n",num);//否则到此为止,不能再合并阶乘,当前(最小)元素就是要找的m return 0;}}return 0;
}

 5391. 奇怪的数 - AcWing题库

4971. 子树的大小 - AcWing题库

5394. 反异或01串 - AcWing题库

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

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

相关文章

使用docker-compose搭建wordpress博客

1、从远程仓库拉取worldpress镜像到本地 2、新建一个项目&#xff0c;然后在新建的项目目录里面新建一个docker-compose.yml模版文件。 3、编写docker-compose.yml文件 4、docker-compose up 运行项目。 5、在浏览器测试 使用docker-compose搭建wordpress博客实验成功。

Rust 实战练习 - 1. 输入,输出,环境变量,字符,字符串

目标&#xff1a; 获取程序命令行参数标准输入输出获取环境变量字符串&#xff0c;字符初步学习 cargo传递参数&#xff0c;需要加上-- use std::{env, ffi::OsString, io, io::Write};fn main() {println!("OS Env: {:?} > {:?}", env::current_dir().unwra…

VUE3——watch函数

与Vue2.x中watch配置功能一致 两个小“坑”&#xff1a; 监视reactive定义的响应式数据时&#xff1a;oldValue无法正确获取、强制开启了深度监视&#xff08;deep配置失效&#xff09;。监视reactive定义的响应式数据中某个属性时&#xff1a;deep配置有效。 //情况一&#x…

配置wss和隐藏端口号(WebSocket通信)

修改宝塔面板配置文件&#xff1a; 添加这几行代码&#xff1a; location /wss{proxy_pass http://127.0.0.1:23481; # 根据自己的socket端口号修改proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "Upgrade";proxy_s…

小技巧系列——Ubuntu下查看Eigen版本的一种方法(一)

小技巧系列——Ubuntu下查看Eigen版本的一种方法&#xff08;一&#xff09; 说明命令 说明 如何在Ubuntu下查看Eigen版本 命令 pkg-config --modversion eigen3

全网最详细的 Ubuntu 18.04 安装Livox mid-360驱动,测试 fast_lio2

目录 一、前言 二、依赖的环境 三、 安装Livox-SDK2&#xff0c;fast_lio2 和 livox_ros_driver2 (1) 安装Livox-SDK2 (2) 安装 fast_lio2 和 livox_ros_driver2 四、mid-360 设备硬件设置 五、运行设备 六、topic信息查看 一、前言 Livox mid-360需要使用Livox-SDK2…

【OceanBase OBCP题目解析17】关于OceanBase事务引擎一致性特点,描述正确的是

本文为云贝教育郭一军&#xff08;微信&#xff1a;guoyJoe&#xff09;原创&#xff0c;请尊重知识产权&#xff0c;转发请注明出处&#xff0c;不接受任何抄袭、演绎和未经注明出处的转载。 关于OceanBase事务引擎一致性特点&#xff0c;描述正确的是 &#xff1f; A. 保证…

海外媒体宣发:企业出海最有“范儿”的几大媒体

1. 雅虎财经&#xff08;Yahoo Finance&#xff09; 雅虎&#xff08;英文名称&#xff1a;Yahoo&#xff0c;NASDAQ&#xff1a;YHOO&#xff09;是美国著名的互联网门户网站&#xff0c;也是20世纪末互联网奇迹的创造者之一。其服务包括搜索引擎、电邮、新闻等&#xff0c;业…

【面试经典150 | 动态规划】零钱兑换

文章目录 Tag题目来源解题思路方法一&#xff1a;动态规划 写在最后 Tag 【动态规划】【数组】 题目来源 322. 零钱兑换 解题思路 方法一&#xff1a;动态规划 定义状态 dp[i] 表示凑成总金额的最少硬币个数。 状态转移 从小到大枚举要凑成的金额 i&#xff0c;如果当前…

openssl3.2 - exp - BIO_push()超过2个节点的应用- 以(aes-128-cbc + base64)为例

文章目录 openssl3.2 - exp - BIO_push()超过2个节点的应用- 以(aes-128-cbc base64)为例概述笔记END openssl3.2 - exp - BIO_push()超过2个节点的应用- 以(aes-128-cbc base64)为例 概述 BIO_push()形成了一个链. 理论上, 多个BIO连在一起, 只需要向BIO链头写数据, 然后B…

详解ARP攻击原理、类型、机制、欺骗主机、仿冒网关、泛洪攻击,以及网络攻击中如何快速判断客户端是否存在恶意连接?

详解ARP攻击原理、类型、机制、欺骗主机、仿冒网关、泛洪攻击,以及网络攻击中如何快速判断客户端是否存在恶意连接? ARP攻击(Address Resolution Protocol attack)是一种网络攻击技术,它利用了ARP协议的设计缺陷来实施攻击。ARP是网络协议中用于将网络层的IP地址解析为链路…

舵机烧录

舵机烧录 一、硬件连接1、准备物资2、连接&#xff08;1&#xff09;舵机线一侧连接舵机控制板&#xff0c;另一侧连接舵机&#xff08;2&#xff09;老安卓线一侧连接舵机控制板&#xff0c;一侧连接电脑&#xff08;3&#xff09;接上低压电池 二、软件使用1、打开舵机烧录软…

表格中的状态类型值(tag)

一&#xff1a;数字转换为简单的中文值 ** 不用转换直接用find()方法&#xff1a;在statusList里找&#xff1b; **lastHandleCode是对应的获取到的每行数据的code值&#xff1b; vue: <el-table-column label"执行状态" align"center"><templat…

Vmware虚拟机无法用root直连说明

Vmware虚拟机无法用root直连说明 背景目的SSH服务介绍无法连接检查配置 背景 今天在VM上新装了一套Centos-stream-9系统&#xff0c;网络适配器的连接方式采用的是桥接&#xff0c;安装好虚拟机后&#xff0c;在本地用ssh工具进行远程连接&#xff0c;ip、用户、密码均是成功的…

【Java程序设计】【C00384】基于(JavaWeb)Springboot的民航网上订票系统(有论文)

【C00384】基于&#xff08;JavaWeb&#xff09;Springboot的民航网上订票系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;已经做了六年的毕业设计程序开发&#x…

如何简单在手机上/移动端测试web程序

也许你在搜索到如何在手机上测试web的方法是&#xff1a; Chrome DevTools模拟手机调试 岩鼠平台真机调试 weinre远程调试工具 等等等待 但也许只是需要在手机上简单试用一下我们开发的web 目录 一、前置条件 二、安装Live Server扩展 三、以Live Server运行程序 四、访问…

JS快速排序模板

912. 排序数组 给你一个整数数组 nums&#xff0c;请你将该数组升序排列。 示例 1&#xff1a; 输入&#xff1a;nums [5,2,3,1] 输出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 输入&#xff1a;nums [5,1,1,2,0,0] 输出&#xff1a;[0,0,1,1,2,5] 提示&#xff1a; 1 <…

(vue)el-table表格回显返回的已勾选的数据

(vue)el-table表格编辑时回显返回的已勾选的数据 tableData数据&#xff1a; el-tableref"multipleTable":data"tableData"... >...<el-table-column prop"result" label"相关.." align"center" width"220"…

2022 年甘肃省职业院校技能大赛 高职组 网络系统管理竞赛 网络构建模块试题

2022 年甘肃省职业院校技能大赛 高职组网络系统管理竞赛 网络构建模块试题 目 录 考试说明… 3 任务描述… 3 任务清单… 3 &#xff08;一&#xff09;基础配置… 3 &#xff08;二&#xff09;有线网络配置… 4 &#xff08;三&#xff09;无线网络配置… 6 &#xff08;四&a…

数据拨号失败之CLIENT_END

问题 今天运维同事反馈了一个数据拨号超时的问题&#xff0c;抓了modem日志&#xff0c;需要分析下原因。 分析 首先看到attach过程是成功的&#xff1a; [0xB0ED] OTA LOG 04:05:09.086400 LTE NAS EMM Plain OTA Outgoing Mes…