Educational Codeforces Round 170 (Rated for Div. 2) (A~C)

ops/2024/10/20 13:58:09/

文章目录

  • 写在前面
  • A. Two Screens
    • 思路
    • code
  • B. Binomial Coefficients, Kind Of
    • 思路
    • code
  • C. New Game
    • 思路
    • code

Educational Codeforces Round 170 (Rated for Div. 2)

写在前面

这场比赛打的巨烂······,前几周没有认真学算法,这周刷了几道题就直接打了这场比赛,结果就是大败而归算法的学习还得是日积月累,隔好几天不敲,不仅手生疏了,连原来的知识储备都忘的一干二净了,在比赛的时候我感觉我脑子空空的,啥都忘记了QWQ。

A. Two Screens

思路

签到题,找出S字符串和T字符串相同的前缀子串,分别计算S、T字符串除去相同前缀子串,剩下子串的个数

code

void solve(){string s,t;cin >> s >> t;int k=-1;for(int i=0;i<s.size() && i<t.size();++i){if(s[i]!=t[i]) break;else k=i;} if(k==-1){cout << t.size()+s.size() << endl;return ;}k++;cout << k+1+(s.size()-k)+(t.size()-k) << endl;return ;
}

B. Binomial Coefficients, Kind Of

思路

考点:打表找规律

将组合数公式: C n m = C n − 1 m + C n − 1 m − 1 C^m_n=C^m_{n-1}+C^{m-1}_{n-1} Cnm=Cn1m+Cn1m1 更改为 C n m = C n m − 1 + C n − 1 m − 1 C^m_n=C^{m-1}_n+C^{m-1}_{n-1} Cnm=Cnm1+Cn1m1
简单的打个表,不难发现 C n k C_n^k Cnk 与n无关,只与k有关,且满足 2 k 2^k 2k 的关系
因此我们只需要用一个快速幂即可

code

int a[N],b[N];
int fpow(int a,int b){int ans=1;while(b){if(b & 1) ans=ans*a%mod;b>>=1;a=a*a%mod;}return ans;
}
void solve(){int n;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){cout << fpow(2,b[i]) << endl;}return ;
}

C. New Game

思路

考点:滑动窗口

首先题目中 a i a_i ai 与当前位置 i i i 无关,那么我们可以用桶的思维将 a i a_i ai 的值放入一个数组中
对于每个 a i a_i ai ,我们都需要判断 a i a_i ai a i + k a_{i+k} ai+k 的个数
我们不妨用滑动窗口的思想先将数组进行排序,从左到右依次遍历
当一个数进入窗口时,我们需要进行判断:

  • 如果当前数减窗口末尾的数的差值大于1,那么更新窗口,窗口只包含当前数
  • 反之,我们就让这个数进入窗口,这时需要判断窗口里面的个数是否超过k,如果超过需要将窗口开头的元素排出去

最后找出窗口移动过程中最大牌数即可

code

void solve(){int n,s;cin >> n >> s;map<int,int> m;for(int i=1;i<=n;++i){int x;cin >> x;m[x]++;}int ans=0,sum=0;int k=0,g=0;for(auto i : m){if(sum==0){sum+=i.se;k=i.fi;g=i.fi;}else{if(i.fi-k==1){sum+=i.se;if(i.fi-g==s){sum-=m[g];g++;}} else{sum=i.se;g=i.fi;}k=i.fi;}ans=max(ans,sum);}cout << ans << endl;return ;
}

http://www.ppmy.cn/ops/126996.html

相关文章

基于SpringBoot+Vue+uniapp微信小程序的校园反诈骗微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

electron-vite_8修改版本号和出品公司名称

当使用electron-builder是打包的时候&#xff0c;只需要在package.json中修改2个地方就可以了; 找到package.json // 版本号 "version": "1.0.0", // 出品公司 "author": "xx科技股份有限公司",怎么判断是否修改成功,win举例 比方说…

CEEMDAN +组合预测模型(Transformer - BiLSTM + ARIMA)

往期精彩内容&#xff1a; 时序预测&#xff1a;LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较 全是干货 | 数据集、学习资料、建模资源分享&#xff01; EMD、EEMD、FEEMD、CEEMD、CEEMDAN的区别、原理和Python实现&#xff08;一&#xff09;EMD-CSDN博客 EMD、EEM…

滚雪球学Redis[5.2讲]:Redis持久化优化深度解析:RDB与AOF的策略选择与实践

全文目录&#xff1a; &#x1f6a6;前言&#x1f4e6;5.2 Redis的持久化优化⚙️5.2.1 Redis持久化的背景与重要性&#x1f527;5.2.2 RDB与AOF的优化策略&#x1f4a1;RDB持久化优化建议&#x1f4a1;AOF持久化优化建议 &#x1f504;5.2.3 磁盘I/O性能的影响与优化&#x1f…

数字化转型的难度是什么?

数字化转型的难度&#xff0c;不仅仅是技术层面的更迭&#xff0c;更是企业文化、组织架构、运营流程乃至员工心态的全面重塑。在这个过程中&#xff0c;我们往往会遇到以下几个维度的难题&#xff1a; 1. 许多企业在数字化转型的过程中&#xff0c;只重视技术的应用和实施&am…

MySQL 安装与配置详细教程

MySQL 安装与配置详细教程 MySQL 是一款流行的关系型数据库管理系统&#xff0c;广泛应用于 Web 应用和应用程序中。在本文中&#xff0c;我们将提供一份详细的 MySQL 安装与配置教程&#xff0c;帮助初学者快速上手。 ## 1. 安装 MySQL 首先&#xff0c;我们需要从 MySQL 官…

C#连接Oracle数据库的方法

C#连接Oracle数据库的方法(Oracle.DataAccess.Client也叫ODP.net)-CSDN博客 .NET连接Oracle数据库踩过的坑 1 常用数据库访问类 一般来说&#xff0c;C#连接Oracle数据库&#xff0c;我们通常会通过封装好的dll调用&#xff0c;目前常用的有三个&#xff1a; &#xff08;1&a…

navicat 3730错误

Navicat 3730 错误通常是由于在执行 SQL 语句时出现了语法错误或者其他问题导致的。具体来说&#xff0c;这个错误通常出现在 Navicat 尝试解析 SQL 语句时发现无法识别的语法或结构错误。 解决步骤 检查 SQL 语句的语法&#xff1a; 确保 SQL 语句语法正确无误。逐条执行 SQL…