Codeforces Round #496 (Div. 3)

使用静态库在嵌入式系统中进行开发 静态库是一种包含预编译对象代码的文件,它可以与应用程序链接在一起,并在编译时将库的代码复制到最终的可执行文件中。静态库是包含预编译对象代码的文件,可以与应用程序链接在一起,并在编译时将库的代码复制到最终的可执行文件中。需要注意的是,由于嵌入式系统的资源限制,开发人员应该仔细选择需要包含在静态库中的功能,并避免引入不必要的依赖关系。需要注意的是,由于嵌入式系统的资源限制,开发人员应该仔细选择需要包含在静态库中的功能,并避免引入不必要的依赖关系。的静态库文件,可以在嵌入式系统的应用程序中使用它了。 阅读详情

A.
统计1的个数即可,注意最后一个数必定是某个台阶的最后一级也就是级数即可。

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
int main()
{
    int n,i,j,k;
    vector<int>c,ans;
    cin>>n;
    if(n==1){
        cout<<1<<endl<<1<<endl;return 0;
    }
    int cnt=0;
   for(i=1;i<=n;i++){
        cin>>j;c.push_back(j);if(j==1)cnt++;
    }
    cout<<cnt<<endl;
    for(i=0;i<c.size()-1;i++){
       if(c[i+1]==1)cout<<c[i]<<' ';
   }
   cout<<c.back()<<endl;

    return 0;
}

B.
把两个字符串反转以后统计最长的公共前缀即可,剩下的就是必须砍掉的长度

#include<cstdio>
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
    string str1,str2;
    int i,j,k;
    cin>>str1>>str2;
    reverse(str1.begin(),str1.end());reverse(str2.begin(),str2.end());
    for(i=0;i<min(str1.size(),str2.size());i++){
        if(str1[i]!=str2[i])break;
    }
    cout<<str1.size()+str2.size()-i*2<<endl;

    return 0;
}

C.
预处理所有范围内2的幂次的值,然后扫一遍所有数,存入set中,同时一个map计数。
再扫一遍,对于每个数,在set里面查找2的幂次与其的差是否存在。注意如果2的幂次恰好是该数的两倍时还要注意是否真的存在两个相同的数。
时间复杂度n*30logn

#include <iostream>
#include <set>
#include <map>
#include <math.h>
#include <algorithm>
using namespace std;
int main() {
    int n, q1, q2, ans=0;
    int b[35], in[120005];
    set<int>a;
    map<int,int>num;
    cin >> n;
    b[0] = 1;
    for (int i = 1; i <= 30; i++) {
        b[i] = b[i - 1] * 2;
    }
    for (int i = 1; i <= n; i++) {
        scanf("%d",&in[i]);
        a.insert(in[i]);num[in[i]]++;
    }
    for (int i = 1; i <= n; i++) {
        bool ck = false;
        for (int j = 0; j <= 30; j++) {
            if (a.find(b[j] - in[i]) != a.end())
            {
                if (( b[j] != in[i] * 2 ) || (b[j] == in[i] * 2 && num[in[i]] > 1)) {//注意是否真的有两个相同的数
                    ck = true;
                    break;
                }
            }
        }
        if (!ck)
            ans++;
    }
    cout << ans<<endl;

    return 0;
}

D.
动态规划。
令f[i+1]表示以str[i]为右端点的最大划分数,那么对于每一个f[i],它首先可以由f[i-1]转移而来,即他不是某个3的倍数的划分的情况。
然后往前找到第一个左端点使这个区间能被3整除就是包含在某个整除3的划分中的情况,此时就可以break,因为之前的情况肯定不会大于之后的。(可以发现一个更长的3划分是肯定不如一个比较短的划分的)
所以找到第一个之后之前的就都不需要再找了(事实上如果不break会tle)。

#include<cstdio>
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int f[200005];
int main()
{
    string str;int i,j,k;
    cin>>str;
    for(i=0;i<str.size();i++){
        int sum=0;f[i+1]=f[i];
        for(j=i;~j;j--){
            sum+=str[j]-'0';
            if(sum%3==0){
                f[i+1]=max(f[i+1],f[j]+1);break;
            }
        }
    }
    cout<<f[str.size()]<<endl;

    return 0;
}

E1.
对于每一个区间,如果他的中位数是给定的m,意味着这个区间中小于等于m的数的个数等于大于m的个数或者大1,那么其实对于每一个区间我们只要统计这两种数的个数就可以了,因此朴素的想法就是枚举每一个空间并统计。不幸的是这依然会tle,因此需要优化。
我们可以先统计位于中位数数列位置中左边的所有位置的两种数的个数的差,用一个map来统计。然后从中位数的数列位置往右扫,对于每一个位置我们会得到两种数的差(默认为小的数的个数-大的数的个数),记为k。于是如果左边的差中存在一个n使得n+k=0||n+k=1,那么左边差为n的位置数就可以加进答案里。注意单纯用左边也是有可能搞出符合条件的中位数的,因此答案要加上map[1]+map[0]。
以及,如果中位数位于数列的最右边,需要特判一下。

#include<cstdio>
#include<iostream>
#include<vector>
#include<algorithm>
#include<map>
using namespace std;
int main()
{
    //vector<int>s,ma;
    int s=0,ma=0;
    int n,m,i,j,k;long long ans=0;
    cin>>n>>m;
    int num[200005];int pos;
    map<int,int>mp1;
    for(i=1;i<=n;i++){
        scanf("%d",&num[i]);
        if(num[i]==m)pos=i;
    }
    int l,r;
    for(l=pos;l;l--){
        if(num[l]<=num[pos])s++;
        else ma++;
        mp1[s-ma]++;
    }
    if(pos==n){
        ans=mp1[0]+mp1[1];cout<<ans<<endl;return 0;
    }
    s=0;ma=0;int cnt=0;
    for(r=pos+1;r<=n;r++){
        if(num[r]<=num[pos])s++;
        else ma++;
        if(mp1.count(1-(s-ma)))ans+=mp1[1-(s-ma)];
        if(mp1.count(0-(s-ma)))ans+=mp1[0-(s-ma)];
    }
    cout<<ans+mp1[1]+mp1[0]<<endl;

    return 0;
}
Java中使用工厂模式和策略模式优雅消除if-else语句(UML类图+案例分析) 在最近的后端开发中,多多少少会发现有很多if-else语句,如果条件过多则会造成整体代码看起来非常臃肿。本篇博客汇总了我对工厂模式和策略模式的理解,以及我是如何把它们巧妙运用在实际项目当中的一些技巧进行了分享,如有问题,欢迎评论区讨论! 阅读详情

相关推荐

从网格划分到端口接地:一份给ADS新手的Momentum RF仿真避坑实操指南

本文为ADS新手提供Momentum RF仿真的实用指南,涵盖网格划分、端口接地、特殊结构处理等关键设置技巧。通过30-50 cells/λ原则、1/10波长限制等黄金法则,帮助用户平衡仿真精度与效率,避免常见错误,提升电磁仿真结果的准确性。

weixin_33692284的博客 505

Codeforces Round 496 (Div. 3)

我们对于求解满足要求的区间数量首先分析,要求是恰好中位数是m的区间数,如果直接求解这样的区间数量是难以解决的,但是我们利用前缀和的思维我们可以简单求解出中位数大于等于m的区间个数,[l,r]对于这个区间只要。最短路径树,我们可以直接按照dijkstra的方式求解即可因为我们要的是根节点到其他的点的路径的最小值,所以不同于最小生成树,同时考虑存起来每一个点的前驱节点。题目是判断是否是存在2的幂次,可以简单得到对于x如果y是对应数,那么对于y,x也是他的对应数。

qq_73575281的博客 422

使用光流进行 Warp 的流程

光流描述了图像帧中每个像素的运动。前向光流:描述了帧中每个像素在帧中的移动位置。后向光流:描述了帧中每个像素在帧​ 中的移动位置。水平方向的位移(x 方向),即每个像素水平移动了多少像素。垂直方向的位移(y 方向),即每个像素垂直移动了多少像素。使用光流进行 Warp 的流程Warp 是通过光流对图像进行变换的操作,旨在将前一帧的像素根据光流场映射到下一帧的对应位置。Step 1: 计算光流我们首先需要通过光流网络(如 RAFT)来估算两帧之间的光流。我们可以获得前向光流(从帧​ 到帧。

qq_44199605的博客 2108

Codeforces Round #496 (Div. 3) (A+B+C+D+E1+F)

A题 题目链接 (签到) 题意:给定一个序列,问可以分成多少段,满足从1开始,遇到1或末尾元素结束。 比如 1 2 | 1 2 3 | 1 分成3段 1 | 1 | 1 | 1 分成4段 思路:直接找每个1,当前1的下标减去上一个1的下标就是一段的长度。 #include<iostream> #include<algorithm> #include<cstdio> #include<stdlib.h> #include<string.h> #inc

矮纸斜行闲作草 297

Win11系统重装全记录:从备份Office激活到搞定RAID阵列,我的微星笔记本复活记

本文详细记录了Win11系统重装的完整过程,从数据备份到RAID阵列配置,特别针对微星笔记本的特殊硬件驱动问题提供了解决方案。文章涵盖了Office激活状态备份、BIOS设置、驱动安装顺序等关键步骤,帮助用户顺利完成系统重装并优化性能。

weixin_31421613的博客 309

ZYNQ Petalinux编译系统启动文件实战指南

本文提出的混合编译加速方案实测可将编译时间从45分钟缩短至18分钟,QSPI双启动方案已在工业控制领域成功应用。Xilinx官方UG1144文档(最新v2023.1版)正点原子《ZYNQ嵌入式开发实战》开源项目Meta-Petalinux(GitHub趋势项目)未来展望:随着Versal平台的普及,Petalinux将支持更多AI加速器原生驱动,值得持续关注。

QQ_778132974的博客 811

Codeforces Round #496 (Div. 3) 解题报告

http://codeforces.com/contest/1005 好久没有刷题了···今天做了这一套div3找找手感。 做题还是不能断啊,哎。 A. Tanya and Stairways time limit per test 1 second memory limit per test 256 megabytes input standard input output ...

森林海的博客 590

OpenGL ES 3.0 开发(一):绘制一个三角形

该原创文章首发于微信公众号:字节流动 什么是 OpenGLES OpenGLES 全称 OpenGL for Embedded Systems ,是三维图形应用程序接口 OpenGL 的子集,本质上是一个跨编程语言、跨平台的编程接口规范,主要应用于嵌入式设备,如手机、平板等。由科纳斯(Khronos)组织定义和推广,科纳斯是一个图形软硬件行业协会,该协会主要关注图形和多媒体方面的开放标准。 O...

字节流动 8万+

Codeforces Round #496 (Div. 3)(暂时只有前五道)

                Codeforces Round #496 (Div. 3) A. Tanya and Stairwaystime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputLittle girl Tanya climbs the s...

你的代码 受命于你 517

YOLO26全网首发:CVPR2026 FAA| 解决YOLO Neck跨尺度方向冲突--- FAAFusion频域对齐融合模块 | 暴力涨点篇

本文改进:FAAFusion引入YOLO neck ,代替nn.Upsample和Concat

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 641

基于Python的二手奢侈品电商平台商品保值率数据爬取与分析

本文旨在探讨如何利用Python网络爬虫技术获取二手奢侈品电商平台商品数据,并通过数据分析研究奢侈品的保值率特性。研究将使用最新的爬虫技术(包括Playwright、异步处理和数据清洗技术)来高效获取数据,并利用Pandas、Matplotlib等数据分析库进行深入的数据可视化分析。本文详细介绍了爬虫的设计思路、实现过程以及数据分析方法,为奢侈品投资和消费提供数据参考。关键词:Python爬虫、奢侈品保值率、数据分析、Playwright、异步处理。

2201_76125261的博客 511

【Codeforces Round #496 (Div. 3)】D. Polycarp and Div 3

题目链接:http://codeforces.com/problemset/problem/1005/D 题意:给出一个大数,数位在2e5内,然后要求我们割分这串大数,使尽可能多的数可以被3整除。 题解: 0除外,所有3的倍数都有一个特点就是每位上的数值相加的和与0对模3同余。 (a+b)%c=(a%c+b%c)%c,所以我们可以先将大数的每一位做模3的预处理 考虑到所有情况: 0 1 0 1...

L_X_ 209

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Codeforces Round #496 (Div. 3) C D E1 E2 F

Codeforces Round #496 (Div. 3) Problem A 题意: 思路: Problem B 题意: 思路: Problem C 题意: 给出n个数,询问最少删除几个数使得剩下的每一个数总能找到对应的另一个数使得两个数的和是2x2^x2x(x为非负整数) 思路: 枚举每个数形成 202^020~小于2*1e9的最大的2x2^x2x所需的另一个数,只要存在...

shadiao.的博客 358

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

寒假训练第三天-Codeforces Round #496 (Div. 3)

寒假训练第三天-Codeforces Round #496 (Div. 3) 前言:最近家里事情太多了,模拟赛就放到了晚上,也没有太多时间补题,这场比赛就A了4道,前3道题35分钟写完,然后卡D,调了有一个小时才ac,就先把前四道的题解写一下吧,周日会把这些天没补的题都补出来 题目链接-https://codeforces.com/contest/1005 A-Tanya and Stairways 题意:给你一个序列,求这个序列有几段递增的区间(递增的区间相邻元素差值为1且从1开始)长度。 题解:遍历记录

Siyue1999的博客 253

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Codeforces Round #496 (Div. 3) A,B,C,D,E1,F

昨天晚上睡不着,起床,开了一套cf, 题目链接:https://codeforces.com/contest/1005 5题滚粗。都是些简单题。。只是记录下刷题记录 E题可能有点难想。。。 A. Tanya and Stairways 题意:上楼梯,每上一楼梯则喊出一个数,例如:12341234 当重新从1开始喊时代表开始新的台阶。 问走过台阶的个数和输出高度 找到一个递减计入答案即...

ccsu_deer 592

Codeforces Round #496 (Div. 3) D题 Polycarp and Div 3思维

题目链接 题意: 给一个数(位数不超过200000)。如今我们可以把这个切开,如:12388 我们可以切成123 88 等等。问我们最多能切出多少个数能被3整除。 思路: 1.能被3整除,即每个数的和为3的倍数。那么我们先贪心,所有能直接被3整除的数,直接切出来,(把更多的数让出来,贪心正确的原因)。 2.那么剩下的数,如果是一个俩位数,把其第一位模3,第二位模3,如果相加起来为3,则切出来(模数...

give it a try 183

Codeforces Round #496 (Div. 3) ABCDE1

http://codeforces.com/contest/1005id:threeh20A数1出现的个数,水题B从尾部遍历记录后缀一样部分的长度C用map记录哪些数字出现过,并且出现了几次。然后对于每一个数字,用2^0-2^32这32个数字去减,看剩下的数字在map中存不存在。要注意如果剩下的数字和本来这个数字一样,那么map的值应该&gt;1 才可以Ddp[i]记录前i个中能够分割出能被三整除...

三水的鱼塘♂ 281

Codeforces Round #496 (Div. 3) D. Polycarp and Div 3

Polycarp likes numbers that are divisible by 3. He has a huge numberss. Polycarp wants to cut from it the maximum number of numbers that are divisible by33. To do this, he makes an arbitrary number...

本该如此 200

校赛Codeforces Round #496 (Div. 3)

补题补题 出去耍了一题没写 补题补题冲冲 A题 #include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #include<cmath> #include<vector> #include<queue> using nam...

qq_45810570的博客 166

Polycarp and Div 3【Codeforces Round #496 (Div. 3)【D题】】【贪心】

题目链接:点击打开链接 题目的意思是给你一串数字长度为(1~2e5),当然由于它的这一串数字是不打空格的输入,所以我用了string 定义了个字符串然后仅需要对字符串操作即可。题目要求得到的是:给你一串数组,你要找的是这串数组上能有多少段能被3整除的数,譬如3121,可以分成「3」、「1、2」、「1」,但最后的时候由于1不是3的倍数,所以ans=2;再举个有0的例子,100000可以分成「1」、「...

reallsp的博客 253

Codeforces Round #496 (Div. 3) A B C D题解

A. Tanya and Stairways description:谭妮亚每次上一次楼梯时,在每次走上一个台阶之后都会从1到当前的阶梯数报数。请根据她的报数规律推断出,她一共上了多少个楼梯,每个楼梯的阶梯数是多少。 link:http://codeforces.com/contest/1005/problem/A 思路:定义全局变量,初始均为零,这样利于统一处理数组的最后一个数字。 AC c...

Light2Chasers的博客 346

Codeforces Round #496 (Div. 3) 解题报告 D. Polycarp and Div 3 DP 数字理论

http://codeforces.com/contest/1005/problem/D解题思路:1.能被3整除的单个数字(0,3,6,9……)2.对3取模的数字做两个计数器,当余数1的个数或余数2的个数出现连续三个时3.当余数1和2的个数各有一个4.满足以上三种情况则令目标计数器+1,然后把两个余数计数器清零重新计算import java.util.Scanner; public class ...

三生锁链 242

Codeforces Round #496 (Div. 3) ABCDE

A. Tanya and Stairways 题意 给你一个序列,序列是按照1−a,1−b,1−c...1−a,1−b,1−c...1-a,1-b,1-c...的顺序出现的,输出所有的a,b,c…. 做法 直接遍历,出现1的前一位就要输出,特判最后一位 A. Tanya and Stairways 代码 #include&lt;iostream&gt; #include&lt;st...

lajiyuan的博客 248

Codeforces Round #496 D. Polycarp and Div 3

题意: 给你一个序列,问你怎样分割让他们分割出来的数是3的倍数最多。 思路: 我先预处理一下,让每个数都%3,只是统计有多少个0,多少个 1,2 多少个 2,1 多少个 111,222就行了 代码: #include &lt;bits/stdc++.h&gt; using namespace std; const int maxn = 2e5+10; int sum[maxn]; i...

wjmwsgj的博客 159

Codeforces Round #496 (Div. 3)【未完结】

2022.3.5 题目地址:https://codeforces.com/contest/1005 目录A. Tanya and Stairways【找规律】B. Delete from the Left【模拟】C. Summarize to the Power of Two【哈希表】 A. Tanya and Stairways【找规律】 #include<bits/stdc++.h> using namespace std; const int N=1e5+10; int n,a[N].

辉小歌的博客 543
上一篇: (模板)Splay 平衡树
下一篇: (模板)Splay维护区间序列(洛谷P3391)
HumveeA6
博客等级 码龄17年 12粉丝 175原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值