2024年马蹄杯专科组第三场初赛 解题报告 | 珂学家


前言

在这里插入图片描述


题解

VP了这场比赛,整体还是偏简单,最难的题是数论相关,算一道思维题。

也看了赛时榜单,除了数论,大模拟和图论题也是拦路虎。



打工人

有趣的一道数学题,有点绕

很像数列和

∑ i = 1 i = n i = n ∗ ( n + 1 ) / 2 \sum_{i=1}^{i=n} i=n*(n+1)/2 i=1i=ni=n(n+1)/2

从公式结合时间复杂度,可以 n \sqrt n n 求解单次查询,时间复杂度 O ( q ∗ n ) O(q * \sqrt n) O(qn )是可行的。

对于区间 [ L , R ] [L, R] [L,R]问题,转化为函数差

f ( x ) = [ 1 , x ] 的累加和 f(x) = [1, x]的累加和 f(x)=[1,x]的累加和
g ( l , r ) = f ( r ) − f ( l − 1 ) g(l, r) = f(r) - f(l - 1) g(l,r)=f(r)f(l1)

关键在于如何求解这个函数 f ( x ) f(x) f(x)

#include <bits/stdc++.h>

using namespace std;

using int64 = long long;

// 时间复杂度为O(\sqrt n)
int64 f(int v) {
    int64 r = 0;
    int acc = 0;
    for (int i = 1; acc <= v; i++) {
        r += (i * min(v - acc, i));
        acc += i;
    }
    return r;
}

int main() {
    int q;
    cin >> q;
    while (q-- > 0) {
        int l, r;
        cin >> l >> r;
        int64 r1 = f(l - 1);
        int64 r2 = f(r);
        cout << r2 - r1 << endl;
    }
    return 0;
}

当然这题是可以把单次查询优化为 O ( 1 ) O(1) O(1)


P序列

其实是一道思维题。

可以从构造的角度,去解这道题,就会发现很容易。

因为其是一种山峰状的数组, 左侧非严格递增,右侧非严格递减。

对数进行分组,按值排序,然后放置于数组。

  1. 最大值先放于中间
  2. 按序依次放置其他数 v i v_i vi,若个数为 c n t v i cnt_{v_i} cntvi,其放置左右侧的方案数总共为 c n t v i + 1 cnt_{v_i} + 1 cntvi+1

根据乘法原理,最终的总方案数为

∏ ( c n t v i + 1 ) , v i ≠ v m a x {\prod (cnt_{v_i} + 1), v_i \ne v_{max}} (cntvi+1),vi=vmax

#include <bits/stdc++.h>

using namespace std;

using int64 = long long;

int64 mod = 998244353l;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;
    map<int, int> hp;

    int mz = -0x3f3f3f3f;
    for (int i = 0; i < n; i++) {
        int x;
        cin >> x;
        hp[x]++;
        mz = max(mz, x);
    }

    long long res = 1l;
    for (auto &[k, v] : hp) {
        if (k != mz) {
            res = res * (v + 1) % mod;
        }
    }
    cout << res << endl;

    return 0;
}


多项式输入

思路: 模拟

对于这类模拟题,最好的方式是拆分

多项式和拆分成

  • 符号
  • 系数
  • 指数

这三部分,然后分别处理,这样就会很清晰。

然后这边需要加入一个特例

就是全是 0 的情况 就是全是0的情况 就是全是0的情况

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int n;
    cin >> n;
    vector<int> vec(n + 1);
    for (int &x: vec) cin >> x;

    string s;
    bool first = true;

    for (int i = 0; i <= n; i++) {
        if (vec[i] == 0) continue;
        // 1. 处理符号
        if (first) {
            s.append(vec[i] > 0 ? "": "-");
        } else {
            s.append(vec[i] > 0 ? "+" : "-");
        }

        // 2. 系数部分
        int x = abs(vec[i]);
        if (i != n && x > 1) {
            s.append(to_string(x));
        } else if (i == n) {
            s.append(to_string(x));
        }
        // 3. 指数部分
        if (i < n - 1) {
            s.append("x^");
            s.append(to_string(n - i));
        } else if (i == n - 1) {
            s.append("x");
        } 
        first = false;
    }
    // 特别处理0这个特例
    if (s.length() == 0) {
        s = "0";
    }

    cout << s << endl;

    return 0;
}

写在最后

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

14-20 Vision Transformer用AI的画笔描绘新世界

概述 毫无疑问,目前最受关注且不断发展的最重要的主题之一是使用人工智能生成图像、视频和文本。大型语言模型 (LLM) 已展示出其在文本生成方面的卓越能力。它们在文本生成方面的许多问题已得到解决。然而,LLM 面临的一个主要挑战是它们有时会产生幻觉反应。 最近推出的新模…

06-6.4.5 关键路径

&#x1f44b; Hi, I’m Beast Cheng &#x1f440; I’m interested in photography, hiking, landscape… &#x1f331; I’m currently learning python, javascript, kotlin… &#x1f4eb; How to reach me --> 458290771qq.com 喜欢《数据结构》部分笔记的小伙伴可以…

Apispec,一个用于生成 OpenAPI(Swagger)规范的 Python 库

目录 01什么是 Apispec&#xff1f; 为什么选择 Apispec&#xff1f; 安装与配置 02Apispec 的基本用法 生成简单的 API 文档 1、创建 Apispec 实例 2、定义 API 路由和视图 3、添加路径到 Apispec 集成 Flask 和 Apispec 1、安装…

Buuctf之SimpleRev做法

首先&#xff0c;查个壳&#xff0c;64bit&#xff0c;那就丢进ida64中进行反编译进来之后&#xff0c;我们进入main函数&#xff0c;发现里面没什么东西&#xff0c;那就shiftf12搜索字符串&#xff0c;找到关键字符串&#xff0c;双击进入然后再选中该字符串&#xff0c;ctrl…

东莞惠州数据中心机房搬迁方案流程

进入21世纪以来&#xff0c;数据中心如雨后春笋般在各行各业兴建起来&#xff0c;经过近20年的投产运行&#xff0c;大量的数据中心机房存在容量不足、机房陈旧、设备老化无法支撑业务发展的情况&#xff0c;产生机房改造、搬迁需求。为安全、可靠地完成机房搬迁&#xff0c;减…

【JVM 的内存模型】

1. JVM内存模型 下图为JVM内存结构模型&#xff1a; 两种执行方式&#xff1a; 解释执行&#xff1a;JVM是由C语言编写的&#xff0c;其中有C解释器&#xff0c;负责先将Java语言解释翻译为C语言。缺点是经过一次JVM翻译&#xff0c;速度慢一点。JIT执行&#xff1a;JIT编译器…

7 动态规划

下面的例子不错&#xff1a; 对于动态规划&#xff0c;能学到不少东西&#xff1b; 你要清楚每一步都在做什么&#xff0c;划分细致就能够拆解清楚&#xff01; xk. - 力扣&#xff08;LeetCode&#xff09; labuladong的算法笔记-动态规划-CSDN博客 动态规划是一种强大的算法…

nginx的正向代理和反向代理以及tomcat

nginx的正向代理和反向代理&#xff1a; 正向代理以及缓存配置&#xff1a; 代理&#xff1a;客户端不再是直接访问服务端&#xff0c;通过代理服务器访问服务端。 正向代理&#xff1a;面向客户端&#xff0c;我们通过代理服务器的IP地址访问目标范围端。 服务端只知道代理…

绝区叁--如何在移动设备上本地运行LLM

随着大型语言模型 (LLM)&#xff08;例如Llama 2和Llama 3&#xff09;不断突破人工智能的界限&#xff0c;它们正在改变我们与周围技术的互动方式。这些模型早已集成到我们的手机中&#xff0c;但到目前为止&#xff0c;它们理解和处理请求的能力还非常有限。然而&#xff0c;…

【C++】模板进阶--保姆级解析(什么是非类型模板参数?什么是模板的特化?模板的特化如何应用?)

目录 一、前言 二、什么是C模板&#xff1f; &#x1f4a6;泛型编程的思想 &#x1f4a6;C模板的分类 三、非类型模板参数 ⚡问题引入⚡ ⚡非类型模板参数的使用⚡ &#x1f525;非类型模板参数的定义 &#x1f525;非类型模板参数的两种类型 &#x1f52…

使用 ESP32-WROOM + DHT11 做个无屏温湿度计

最近梅雨天&#xff0c;有个房间湿度很大&#xff0c;而我需要远程查看温湿度&#xff0c;所以无所谓有没有显示屏&#xff0c;某宝上的温湿度计都是带屏的&#xff0c;如果连WIFI查看温湿度操作也比较麻烦&#xff0c;还需要换电池&#xff0c;实在不能满足我的需求&#xff0…

剖析DeFi交易产品之UniswapV3:交易路由合约

本文首发于公众号&#xff1a;Keegan小钢 SwapRouter 合约封装了面向用户的交易接口&#xff0c;但不再像 UniswapV2Router 一样根据不同交易场景拆分为了那么多函数&#xff0c;UniswapV3 的 SwapRouter 核心就只有 4 个交易函数&#xff1a; exactInputSingle&#xff1a;指…

Vue进阶(四十五)Jest集成指南

文章目录 一、前言二、环境检测三、集成问题汇总四、拓展阅读 一、前言 在前期博文《Vue进阶&#xff08;八十八&#xff09;Jest》中&#xff0c;讲解了Jest基本用法及应用示例。一切顺利的话&#xff0c;按照文档集成应用即可&#xff0c;但是集成过程中遇到的问题可能五花八…

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第55课-芝麻开门(语音 识别 控制3D纪念馆开门 和 关门)

【WEB前端2024】3D智体编程&#xff1a;乔布斯3D纪念馆-第55课-芝麻开门&#xff08;语音识别控制3D纪念馆开门和关门&#xff09; 使用dtns.network德塔世界&#xff08;开源的智体世界引擎&#xff09;&#xff0c;策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtn…

KVM使用命令行添加新磁盘(注:支持热插拔)

1、使用qemu-img创建格式为qcow2的磁盘 [rootkvm ~]# qemu-img create -f qcow2 /var/lib/libvirt/images/test-disk.qcow2 15G 2、显示虚拟机硬盘列表&#xff0c;查看未使用的target [rootkvm ~]# virsh domblklist kvm-client 3、添加硬盘到kvm-client虚拟机中 [rootkvm…

SpringBoot | 大新闻项目后端(redis优化登录)

该项目的前篇内容的使用jwt令牌实现登录认证&#xff0c;使用Md5加密实现注册&#xff0c;在上一篇&#xff1a;http://t.csdnimg.cn/vn3rB 该篇主要内容&#xff1a;redis优化登录和ThreadLocal提供线程局部变量&#xff0c;以及该大新闻项目的主要代码。 redis优化登录 其实…

html+css+js图片手动轮播

源代码在界面图片后面 轮播演示用的几张图片是Bing上的&#xff0c;直接用的几张图片的URL&#xff0c;谁加载可能需要等一下&#xff0c;现实中替换成自己的图片即可 关注一下点个赞吧&#x1f604; 谢谢大佬 界面图片 源代码 <!DOCTYPE html> <html lang&quo…

C++继承初识

一。继承 1.继承本质是复用相同的代码&#xff08;属性&#xff09; 2.格式&#xff1a;class 类名&#xff1a;继承方式 父类 3.继承方式的规律&#xff1a; 父类的&#xff1a; 对于私有成员&#xff0c;不管哪种继承方式都不可见--->不想被子类继承的成员 对于保护…

代码随想录——划分字母区间(Leetcode763)

题目链接 贪心 class Solution {public List<Integer> partitionLabels(String s) {int[] count new int[27];Arrays.fill(count,0);// 统计元素最后一次出现的位置for(int i 0; i < s.length(); i){count[s.charAt(i) - a] i;}List<Integer> res new Ar…

非对称加密算法原理与应用2——RSA私钥加密文件

作者:私语茶馆 1.相关章节 (1)非对称加密算法原理与应用1——秘钥的生成-CSDN博客 第一章节讲述的是创建秘钥对,并将公钥和私钥导出为文件格式存储。 本章节继续讲如何利用私钥加密内容,包括从密钥库或文件中读取私钥,并用RSA算法加密文件和String。 2.私钥加密的概述…