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

devtools/2024/10/23 22:00:24/

文章目录

  • 写在前面
  • 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/devtools/128261.html

相关文章

回溯法求解简单组合优化问题

此为课题组所指导本科生和低年级硕士生学习组合优化问题汇报所用教材&#xff1a;北京大学屈婉玲教授《算法设计与分析》课程资料&#xff1a;https://www.icourse163.org/course/PKU-1002525003 承诺不用于任何商业用途&#xff0c;仅用于学术交流和分享 更多内容请关注许志伟…

【动手学深度学习】7.6. 残差网络(ResNet)(个人向笔记)

1. ResNet精读论文视频的Introduction部分 深度卷积神经网络好&#xff0c;好在可以叠加很多层&#xff0c;每一层都可以提取不一样的特征但是网络特别深的时候&#xff0c;梯度要么爆炸要么消失&#xff0c;我们能做的就是将参数随机初始化做好&#xff0c;或者是在中间加一些…

Qt | http获取网页文件(小项目)

点击上方"蓝字"关注我们 ctrl+r 运行 URL可以自己替换一个试一试 【源码获取】 链接:https://pan.baidu.com/s/1QzHKZPXjkpx2p5TWUS_acA?pwd=5xsd 提取码:5xsd 01、QProgressDialog >>> QProgressDialog 是 Qt 框架中的一个类,主要用于显示一个进…

数据标准化与归一化:解锁数据处理的奥秘

引言 在数据科学和机器学习领域&#xff0c;数据预处理是一个不可或缺的步骤。而在这其中&#xff0c;数据标准化与归一化更是两个经常被提及但又容易被误解的概念。无论是进行特征缩放以优化模型性能&#xff0c;还是在数据可视化时保持图形的可读性&#xff0c;数据标准化与…

MT4跟单系统开发

文章目录 前言一、managerAPI方式跟单1、轮训的方式2、Pumping的方式 二、serverAPI方式跟单三、逆向抓包模拟客户端方式跟单 前言 如果有问题可以联系我**&#xff1a;https://gitee.com/xiaoyuren/gpt3 本文讲解一下MT4跟单软件的开发的几种方法以及原理。 一、managerAPI方式…

Python 如何处理大规模数据库表的迁移与数据迁移的高效执行

Python 如何处理大规模数据库表的迁移与数据迁移的高效执行 引言 在现代应用开发中&#xff0c;随着业务需求的增长&#xff0c;数据库表结构和数据往往需要进行迁移和更新。迁移&#xff08;Migration&#xff09;是指对数据库表的结构、数据类型、索引、约束等进行修改或更新…

知识付费小程序:轻松实现一站式运营,开启知识变现之旅

在当今数字化时代&#xff0c;知识付费已成为一种趋势&#xff0c;为内容创作者和知识提供者提供了广阔的商业机会。而知识付费小程序的出现&#xff0c;更是为实现一站式运营和开启知识变现之旅提供了便捷高效的解决方案。 一、便捷的内容创作与管理 知识付费小程序为创作者…

MYSQL基础快速入门

1. SQL类型 1.1 DDL DDL:data definition language(操作数据库或表时需加database或table)用来定义数据库对象&#xff1a;数据库&#xff0c;表&#xff0c;列等&#xff0c;例如创建、删除、修改&#xff1a;数据库、表结构等 规范&#xff1a; 1.不要使用关键字命名一个表…