第四届辽宁省大学生程序设计竞赛

比赛经历:2024.5.14简单vp了一个小时只写出了签到题4个然后跑路了

补题:感觉其他题有点太抽象了主要补了一题,在区间问题中数据结构的使用

比赛链接[点我即可]

目录

A.欢迎来到辽宁省赛

B.胜率

F.隔板与水槽

H.取石子

L.区间与绝对值

M.让二追三


A.欢迎来到辽宁省赛

void solve(){
     
    cout << 27 << endl;
    return ;
}

没啥好说的直接输出即可

B.胜率

我们首先看一下是最后答案是四舍五入保留两位小数,可以判断出来答案一定是在10000局可以做到的,同时小数并不好判断我们直接把小数变成整数跑循环暴力找答案即可

// 数学公式要变形
// 莫急莫急先读题
#include <bits/stdc++.h>
using namespace std;
#define lowbit(x) (x&(-x))
#define endl "\n"
#define ios ios::sync_with_stdio(0); cin.tie(0),cout.tie(0);
#define LF(x)   fixed<<setprecision(x)// c++ 保留小数
#define den(a) cout << #a << " = " << a << "\n";
#define deg(a) cout << #a << " = " << a << " ";
typedef long long LL;
typedef pair<int, int> PII;
const int N=1000010,M=10010,INF=0x3f3f3f3f,mod=1e9+7;
const double pai=acos(-1.0);// pai
map<int,int> mp;
int t,n,m;
const double esp = 1e-3;
void solve(){
    
    int pos = M;
    double res; cin>>res;
    int t = res * 100;
    for(int i=0;i<M;i++){
        for(int j=1;j<M;j++){
            double now = 1.0*i/j*100;
            now += 0.005;
            int yes = now*100;
            if(yes==t){
                pos = min(pos,j);
            }
        }
    }
    cout << pos << endl;
    return ;
}
signed main ()
{
    ios// 不能有printf puts scanf
    int t=1;
    while(t--){
    	 solve();
    }
}

F.隔板与水槽

我们观察数据范围可以发现应该在n^2级别,同时左右是独立的,所以我们可以枚举中间位置去记录其左右最大值即可

LL a[N];
LL L[N],R[N];
 
void solve(){
     
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
     
    for(int i=2;i<=n;i++){
        for(int j=1;j<i;j++){
            L[i]=max(L[i],min(a[i],a[j])*(i-j));
        }
    }
    for(int i=n-1;i>=1;i--){
        for(int j=n;j>i;j--){
            R[i]=max(R[i],min(a[i],a[j])*(j-i));
        }
    }
    LL ans = 0;
    for(int i=2;i<n;i++) ans = max(ans,L[i]+R[i]);
    cout << ans << endl;
    return ;
}

H.取石子

我们通过对式子分析可以得出,无论如何选择,两个人能取出的石头都是奇数个数,那么结果就之和给出的奇偶有关系了,简单做个判断即可

void solve(){
    
    int a,b,n; cin>>a>>b>>n;
    
    cout << (n&1? "Alice" : "Bob") << endl;

    return ;
}

L.区间与绝对值

对于区间问题我们如果有式子可以简单推理一下,由式子得到就是区间中的每一个数互相做减法的绝对值之和,我们看一下对于一个区间如何计算贡献,不妨这样想如果我把右端点加一个数如何计算新的区间贡献,可以发现新来的数带来的贡献为2*(a_{new} *cnt_{[l,r](a_i<a_{new})} - sum_{[l,r](ai<a_{new})}) 

int g[N],a[N];
LL tr[N][2],res[N],ans;
struct code{
    int l,r,id;
    bool operator<(const code&t)const{
        return g[l]==g[t.l] ?  r<t.r : l < t.l;
    }
}Q[N];
void add(int op,int k,int x){
    for(int i=k;i<N;i+=lowbit(i)) tr[i][op]+=x;
}
LL query(int op,int k){
    LL res = 0;
    for(int i=k;i;i-=lowbit(i)) res += tr[i][op];
    return res;
}
void add(int x){
    x = a[x];
    ans += query(0,x-1)*x - query(1,x-1);
    ans += (query(1,N-1)-query(1,x)) - (query(0,N-1)-query(0,x))*x;
    add(0,x,1);
    add(1,x,x);
}
void del(int x){
    x = a[x];
    ans -= query(0,x-1)*x - query(1,x-1);
    ans -= (query(1,N-1)-query(1,x)) - (query(0,N-1)-query(0,x))*x;
    add(0,x,-1);
    add(1,x,-x);
}
void solve(){
     
    cin>>n>>m;
    int block = sqrt(n);
    for(int i=1;i<=n;i++){
        cin>>a[i];
        g[i]=(i-1)/block+1;
    }
     
    for(int i=1;i<=m;i++){
        int l,r; cin>>l>>r;
        Q[i]={l,r,i};
    }
    sort(Q+1,Q+1+m);
     
    int L = 1 ,R = 0;
    for(int i=1;i<=m;i++){
        auto [l,r,id]=Q[i];
        while(L<l) del(L++);
        while(L>l) add(--L);
        while(R>r) del(R--);
        while(R<r) add(++R);
        res[id]=2*ans;
    }
    for(int i=1;i<=m;i++) cout << res[i] << endl;
    return ;
}

这样的话我们可以发现实际上维护的就是区间中小于这个数的数量,和小于这个数的和,可以知道树状数组就具有这个功能,但是对于多个区间如何操作,我们可以看到时间是4s,那么对于多个区间问题我们可以考虑使用莫队算法来优化本题

最后时间复杂度就是n\sqrt{n}*log(N)

M.让二追三

概率可以直接按照一次比赛打五次直接算出来,但是注意的是在n个比赛中,那么当n<5时是无解的,大于5的时候有n-4个符合题意的可以

LL qmi(LL a,LL b,LL p){
    LL res = 1;
    while(b){
        if(b&1) res=res*a%p;
        b>>=1;
        a=a*a%p;
    }
    return res;
}
LL inv(LL x){
    return qmi(x,mod-2,mod);
}
void solve(){
    
    int a,b,n; cin>>a>>b>>n;
    if(n<5){
        cout << 0 << endl;
        return ;
    }
    LL fm = qmi(b,5,mod);
    LL fz = qmi(b-a,2,mod)*qmi(a,3,mod)%mod;
    LL ans = fz%mod*inv(fm)%mod*(n-4)%mod; // 每次发生的概率是一样的
    // 就是
    cout << ans << endl;
    return ;
}

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

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

相关文章

第188题|幂级数的展开的常规方法(一)|武忠祥老师每日一题

解题思路&#xff1a;求幂级数有两种方法&#xff0c;一种是直接法&#xff0c;这里显然不太好求&#xff0c;还有一种是利用现有展开式展开&#xff0c;我们看到分母 可以分解因式成(x6)(x-1),进而拆解成一次式。拆解成一次式的目的是为了使用一下两个展开式。 第一步&#xf…

NARUTO 复现记录

1 环境配置 下载项目&#xff0c;一定要 git 下载全项目&#xff0c;下载完后要检查third_parities 里面的coslam和neural_slam_eval 文件全不全。 git clone --recursive https://github.com/oppo-us-research/NARUTO.git 环境配置 注意 bash scripts/installation/conda…

【哔哩哔哩下载】Bilidown,B站下载工具网站,永久免费使用NO.98

本文一共:448 个字,需要阅读:2 分钟,更新时间:2024年5 月14日,部分内容具有时效性,如有失效请留言,阅读量:0 输入B站视频网址就可以下载了 除了可以下载视频&#xff0c;还能获取弹幕、查看封面&#xff0c;如果你想解锁1080P画质&#xff0c;就需要扫码登录。 点击右下角的齿…

python “名称空间和作用域” 以及 “模块的导入和使用”

七、名称空间和作用域 可以简单理解为存放变量名和变量值之间绑定关系的地方。 1、名称空间 在 Python 中有各种各样的名称空间&#xff1a; 全局名称空间&#xff1a;每个程序的主要部分定义了全局的变量名和变量值的对应关系&#xff0c;这样就叫做全局名称空间 局部名称…

0508GoodsContent的Maven项目

0508GoodsContent的Maven项目包-CSDN博客 数据库字段 页面需求

OFDM802.11a的FPGA实现(十五)短训练序列:STS(含Matlab和verilog代码)

原文链接&#xff08;相关文章合集&#xff09;&#xff1a;OFDM 802.11a的xilinx FPGA实现 1.前言 在之前已经完成了data域数据的处理&#xff0c;在构建整个802.11a OFDM数据帧的时候&#xff0c;还剩下前导码和signal域的数据帧&#xff0c;这两部分的内容。 PLCP的前导部分…

八年前端开发之路中遇到的一些实用技巧分享——代码思路及通用场景

在开发中比较有用的代码思路 1. 链式编程2. 高阶函数应用-(添加数据并提供删除方法)3. 利用Promise链切入&#xff08;延迟执行&#xff09;4. 通过中间层来解决问题&#xff08;装饰者模式&#xff09;5. 单例模式 1. 链式编程 所谓链式编程即是函数调用后返回对象本身 let …

LoRA Land: 310个经微调的大语言模型可媲美GPT-4

摘要 低秩自适应 (LoRA) 已成为大语言模型 (LLM) 参数有效微调 (PEFT) 中最广泛采用的方法之一。LoRA 减少了可训练参数的数量和内存使用,同时达到了与全面微调相当的性能。该研究旨在评估在实际应用中训练和服务使用 LoRA 微调的 LLM 的可行性。首先,该研究测量了在 10 个基础…

搞什么副业可以月入过万?

月入过万的副业不是一件容易的事情&#xff0c;它需要你付出很多努力和时间。以下是一些可能能够实现月入过万的副业 1. 自媒体运营 通过开设自己的公众号、博客或YouTube频道&#xff0c;积累一定的粉丝和流量&#xff0c;然后通过广告、赞助、商品销售等方式赚取收入。 2. …

110份财务常用excel模板(个税、采购、报销、预算),超实用!

如果你还在为报表头疼&#xff0c;那你一定不能错过这篇干货满满的分享&#xff01; 个税报表 个人所得税&#xff0c;听起来就头大&#xff1f;别担心&#xff0c;掌握这些技巧&#xff0c;轻松搞定&#xff01; - 记录员工收入&#xff0c;确保数据准确无误 - 计算应纳税…

【Redis7】10大数据类型之Bitfield类型

文章目录 1. Bitfield简介2. BITFIELD key [GET type offset]3. BITFIELD key [SET type offset value]4. BITFIELD key [INCRBY type offset increment] 1. Bitfield简介 Bitfield(位域)命令可以将一个 Redis 字符串看作是一个由二进制位组成的数组&#xff0c; 并对这个数组…

Qwen-VL环境搭建推理测试

引子 这几天阿里的Qwen2.5大模型在大模型圈引起了轰动&#xff0c;号称地表最强中文大模型。前面几篇也写了QWen的微调等&#xff0c;视觉语言模型也写了一篇CogVLM&#xff0c;感兴趣的小伙伴可以移步Qwen1.5微调-CSDN博客。前面也写过一篇智谱AI的视觉大模型&#xff08;Cog…

c++编程(11)——string类的模拟实现

欢迎来到博主的专栏——c编程 博主ID&#xff1a;代码小豪 文章目录 前言string类的模拟实现string的成员对象构造、赋值、析构访问成员对象的接口访问字符串中的元素迭代器对字符序列的插入、删除元素操作mystring类的相关操作 mystring类的所有模拟实现以及测试案例 前言 本…

云服务器和主机的区别

在今天的数字化时代&#xff0c;对于个人和企业来说&#xff0c;选择适当的服务器托管解决方案至关重要。然而&#xff0c;很多人对于云服务器和传统主机之间的区别不太清楚。本文将为您提供一个详细的指南&#xff0c;帮助您理解云服务器与主机之间的区别&#xff0c;以便您能…

光耦 IS314W中文资料 IS314W引脚图及功能说明

IS314W是一款IGBT/MOSFET输出型光耦&#xff0c;由Isocom公司制造。它主要用于驱动用于电机控制和电源系统变频器的功率IGBT和MOSFET。以下是该产品的部分功能和参数&#xff1a; - 两个独立的光耦输出通道 - 轨对轨输出电压 - 最大峰值输出电流&#xff1a;1.0A - 最小峰值输…

一文扫盲(13):电商管理系统的功能模块和设计要点

电商管理系统是一种用于管理和运营电子商务平台的软件系统。它提供了一系列功能模块&#xff0c;帮助企业进行商品管理、订单管理、会员管理、营销推广、数据分析等工作。本文将从以下四个方面介绍电商管理系统。 一、什么是电商管理系统 电商管理系统是一种集成了各种功能模块…

Moveit Noetic的运动规划组python接口

Moveit Noetic的运动规划组python接口 记录学习如何使用moveit的python API进行机械臂的控制 &#x1f680; 环境配置 &#x1f680; ubuntu 20.04ros noeticmoveit noetic法奥机械臂 frcobot_fr5 文章目录 Moveit Noetic的运动规划组python接口1. 设置moveit功能包2. 编写M…

springboot月度员工绩效考核管理系统

摘要 本月度员工绩效考核管理系统采用java语言做为代码编写工具&#xff0c;采用mysql数据库进行系统中信息的存储与处理。框架采用springboot。 本系统的功能分为管理员和员工两个角色&#xff0c;管理员的功能有&#xff1a; &#xff08;1&#xff09;个人中心管理功能&am…

解决OpenHarmony设备开发Device Tools工具的QUICK ACCESS一直为空

今天重新安装了OpenHarmony设备开发的环境&#xff0c;在安装过程中&#xff0c;到了工程之后&#xff0c;QUICK ACCESS一直为空。如下图红色大方框的内容一开始没有。 解决方案&#xff1a; 在此记录我的原因&#xff0c;我的原因主要是deveco device tools的远程连接的是z…

Spring Bean的生命周期 五步 七步 十步 循序渐进

&#x1f468;‍&#x1f3eb; 参考视频地址 &#x1f496; 五步版 实例化 bean&#xff08;构造方法&#xff09;属性注入&#xff08;set() 方法&#xff09;初始化方法&#xff08;自定义&#xff09;使用bean销毁方法&#xff08;自定义&#xff09; &#x1f496; 七步版…