信息工程大学第五届超越杯程序设计竞赛(同步赛)vp

news2024/11/27 22:38:58

目录

信息工程大学第五届超越杯程序设计竞赛(同步赛)_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ

A.遗失的旋律

C.财政大臣

D.实验室有多少人

E.在雾中寻宁静

F.不规则的轮回

G.完美数字

M.Monika's game


A.遗失的旋律

思路:模拟即可

代码如下:

#include<bits/stdc++.h>

using namespace std;
#define fs first
#define sc second
#define all(x) x.begin(),x.end()
typedef long long ll;
typedef pair<int,int> PII;

const int mod = 998244353;

int main()
{
    cin.tie(0);cout.tie(0);
    ios::sync_with_stdio(0);

    int n,q;
    cin>>n>>q;
    
    string s;
    cin>>s;
    
    while(q--)
    {
        int op;
        cin>>op;
        if(op==1)
        {
            int y;cin>>y;
            s[y-1]^=1;
        }
        else
        {
            int x,l,r;
            cin>>x>>l>>r;
            l--,r--;
            for(int i=l;i<=r;i++)
            {
                if(s[i]=='0')x=(x+1)%mod;
                else x=(2*x)%mod;
            }
            cout<<x<<endl;
        }
    }
    return 0;
}

C.财政大臣

思路:用邻接表来存图,用数组存每个点的money,每次有变动从根结点dfs一下,记录变化值。

代码如下:

#include<bits/stdc++.h>

using namespace std;
#define fs first
#define sc second
#define all(x) x.begin(),x.end()
typedef long long ll;
typedef pair<int,int> PII;

const int N = 1e5+10,M = 2*N;

int e[M],ne[M],h[N],idx;

int n,m;

int v[N];//记录每个城市的money

ll range[N];//变化值

void add(int a,int b)
{
    e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}

void dfs(int u,int fa)//fa表示父亲,不能向上搜索;s表示当前这个结点的变化量(从根结点向下累加)
{
    range[u]+=range[fa];
    for(int i=h[u];~i;i=ne[i])
    {
        int j=e[i];
        if(j!=fa)dfs(j,u);   
    }
}
void solve()
{
    memset(h,-1,sizeof(h));
    cin>>n>>m;
    for(int i=0;i<n-1;i++)
    {
        int a,b;cin>>a>>b;
        add(a,b),add(b,a);
    }

    for(int i=1;i<=n;i++)
    {
        int x;cin>>x;
        v[i]=x;
    }

    while(m--)
    {
        int op,u,x;
        cin>>op>>u>>x;
        if(op==1)range[u]+=x;
        else range[u]-=x;
    }

    dfs(1,0);

    for(int i=1;i<=n;i++)cout<<v[i]+range[i]<<" ";
}
int main()
{
    cin.tie(0);cout.tie(0);
    ios::sync_with_stdio(0);

    solve();
    
    return 0;
}

D.实验室有多少人

思路:用pair维护信息,排序然后遍历即可,1为到达,2为离开

代码如下:

#include<bits/stdc++.h>

using namespace std;
#define fs first
#define sc second
#define all(x) x.begin(),x.end()
typedef long long ll;
typedef pair<int,int> PII;

const int N = 1e6+10;

bool cmp(PII a,PII b)
{
    if(b.fs==a.fs)return a.sc<b.sc;
    return a.fs<b.fs;
}
void solve()
{
    int n;
    cin>>n;
    
    vector<PII> b;
    
    for(int i=0;i<n;i++)
    {
        int st,ed;
        cin>>st>>ed;
        b.push_back({st,1});
        b.push_back({ed,2});
    }
    
    sort(all(b),cmp);
    
    int ans=0,cnt=0;
    for(auto x:b)
    {
        if(x.sc==1)cnt++;
        else cnt--;
        ans=max(ans,cnt);
    }
    
    cout<<ans<<endl;
}
int main()
{
    cin.tie(0);cout.tie(0);
    ios::sync_with_stdio(0);

    int t=1;
    
    while(t--)
    {
        solve();
    }
    return 0;
}

E.在雾中寻宁静

思路:正序dfs即可完成覆盖

代码如下:

#include<bits/stdc++.h>

using namespace std;
#define fs first
#define sc second
#define all(x) x.begin(),x.end()
typedef long long ll;
typedef pair<int,int> PII;

const int N = 2e5+10, M = 2*N;

int e[M],ne[M],h[N],idx;

int n,q,col[N];

void add(int a,int b)
{
    e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}

void dfs(int u,int color)
{
    col[u]=color;
    for(int i=h[u];~i;i=ne[i])
    {
        int j=e[i];
        dfs(j,color);
    }
}
void solve()
{
    memset(h,-1,sizeof(h));
    cin>>n;
    for(int i=1;i<=n-1;i++)
    {
        int x;cin>>x;
        add(x,i+1);
    }

    cin>>q;

    vector<PII> a(q);
    for(int i=0;i<q;i++)
    {
        int x,y;
        cin>>x>>y;
        a[i]={x,y};
    }
    for(int i=0;i<q;i++)
    {
        int x=a[i].fs,y=a[i].sc;
        dfs(x,y);
    }

    for(int i=1;i<=n;i++)cout<<col[i]<<" ";
}
int main()
{
    cin.tie(0);cout.tie(0);
    ios::sync_with_stdio(0);

    int t=1;

    while(t--)
    {
        solve();
    }
    return 0;
}

F.不规则的轮回

思路:模拟,O(1)查询

代码如下:

#include<bits/stdc++.h>

using namespace std;
#define fs first
#define sc second
#define all(x) x.begin(),x.end()
typedef long long ll;
typedef pair<int,int> PII;

const int N = 1e4+10;

int a[N][N];

void solve()
{
   int n;
   cin>>n;

   for(int i=0;i<n;i++)
   {
    int x,y;
    cin>>x>>y;
    a[x][y]++;
    while(x!=y)
    {
        if(x>y)x-=y;
        else if(x<y)y-=x;
        a[x][y]++;
    }
   }

   int q;
   cin>>q;

   while(q--)
   {
    int qx,qy;
    cin>>qx>>qy;
    cout<<a[qx][qy]<<endl;
   }
}
int main()
{
    cin.tie(0);cout.tie(0);
    ios::sync_with_stdio(0);

    int t=1;
    
    while(t--)
    {
        solve();
    }
    return 0;
}

G.完美数字

思路:考虑10的因子是2和5,也就是两个数字含有2,5因子的乘积可以构成10,那么min(t2,t5)就是10的个数,也就是0的个数.

copy一下好的题解qaq

代码如下:

#include<bits/stdc++.h>

using namespace std;
#define fs first
#define sc second
#define all(x) x.begin(),x.end()
typedef long long ll;
typedef pair<int,int> PII;

const int N = 2e5+10;

int a[N],a2[N],a5[N];

int sum2[N],sum5[N];//遍历区间要用到区间内的因子数量

ll res;

void cal(int x,int i)
{
    int t=x;
    while(t%2==0)t/=2,a2[i]++;
    t=x;
    while(t%5==0)t/=5,a5[i]++;
}
void solve()
{
    int n,k;
    cin>>n>>k;

    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        cal(a[i],i);//统计a[i]中,2和5因子的数量
    }

    for(int i=1;i<=n;i++)
    {
        sum2[i]=sum2[i-1]+a2[i];
        sum5[i]=sum5[i-1]+a5[i];
    }

    for(int l=1;l<=n;l++)
    {
        for(int r=l;r<=n;r++)//一个区间可以有1个数,所以r可以从l开始
        {
            int t2=sum2[r]-sum2[l-1];
            int t5=sum5[r]-sum5[l-1];
            int sum=min(t2,t5);
            if(sum>=k)//如果成立,那么把他后面的数字加上去也成立,所以区间数量为n-r+1
            {
                res+=n-r+1;
                break;
            }
        }
    }
    cout<<res<<endl;
}
int main()
{
    cin.tie(0);cout.tie(0);
    ios::sync_with_stdio(0);

    int t=1;

    while(t--)
    {
        solve();
    }
    return 0;
}

M.Monika's game

思路:n*(n-1)/2

代码如下:

#include <bits/stdc++.h>
using namespace std;
int main(){
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    long long t, n;
    long long summ;
    
    cin >> t;
    for(int i = 1; i <= t; i++){
        cin >> n;
        summ = n*(n-1)/2;
        printf("%lld\n", summ);
    }

    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Golang 开发实战day09 - package Scope

&#x1f3c6;个人专栏 &#x1f93a; leetcode &#x1f9d7; Leetcode Prime &#x1f3c7; Golang20天教程 &#x1f6b4;‍♂️ Java问题收集园地 &#x1f334; 成长感悟 欢迎大家观看&#xff0c;不执着于追求顶峰&#xff0c;只享受探索过程 Golang 教程09 - package Sc…

大学英语ab级题搜题软件?分享7个支持答案和解析的工具 #笔记#其他

合理利用学习辅助工具和资料&#xff0c;可以帮助大学生更好地组织学习内容、掌握知识点和提升学术水平。 1.智能翻译官 这是一款多语言在线翻译神器&#xff0c;除了最基础的英语以外&#xff0c;还支持日语、德语、俄语、法语等几十种语言文本翻译和拍照翻译&#xff0c;并…

Your file appears not to be a valid OLE2 document

前言 org.apache.poi.poifs.filesystem.NotOLE2FileException:Invalid header signature; read 0x0000000000000000, expected 0xE11AB1A1E011CFD0 - Your file appears not to be a valid OLE2 document解决 Excel兼容模式打开老版本文件造成文件损坏&#xff0c;大多说的是点…

期货量化交易软件:模式搜索的暴力方法(第六部分)循环优化

概述 考虑到我上一篇文章中的材料&#xff0c;我赫兹量化软件可以说这只是我在算法中引入的所有函数的肤浅描述。它们不仅涉及EA创建的完全自动化&#xff0c;还涉及诸如结果优化和选择的完全自动化以及随后用于自动交易&#xff0c;或者我赫兹量化稍后将展示的更先进的EA的创…

关于Ansible模块 ⑤

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 继《关于Ansible的模块 ①》、《关于Ansible的模块 ②》与《关于Ansible的模块 ③》之后&#xff0c;继续学习ansible常用模块之…

高效测试丨怿星RTP协议测试解决方案

近几年&#xff0c;车内音视频娱乐系统不断发展&#xff0c;功能不断丰富&#xff0c;对于音视频的传输需求也逐渐增多&#xff0c;随着车载以太网的日渐成熟&#xff0c;各主机厂逐步方案落地、成本逐步降低&#xff0c;基于车载以太网的音视频传输也在逐步应用&#xff0c;常…

python代码使用过程中使用快捷键注释时报错

1.代码 2.代码报错 3.代码注释后的结果 4. 原因

【C++进阶】哈希的应用之位图和布隆过滤器

位图和布隆过滤器 一&#xff0c;位图1. 实现2. 位图的应用 二&#xff0c;布隆过滤器1. 使用场景2. 模拟实现 三&#xff0c;海量数据面试题哈希切分 四&#xff0c;总结 这一节我们来看哈希的应用 一&#xff0c;位图 先来看一个面试题 这里如果用unordered_set来解决&…

程序员如何搞副业

目录 1.概述 2.个人项目开发 3.在线教育和培训 4.技术博客和内容创作 1.概述 程序员通过副业实现个人价值最大化和增加收入的途径多种多样&#xff0c;以下是一些方法&#xff1a; 自由职业: 程序员可以在业余时间提供自由职业服务。包括为客户开发软件、网站或应用程序、…

初学python记录:力扣2009. 使数组连续的最少操作数

题目&#xff1a; 给你一个整数数组 nums 。每一次操作中&#xff0c;你可以将 nums 中 任意 一个元素替换成 任意 整数。 如果 nums 满足以下条件&#xff0c;那么它是 连续的 &#xff1a; nums 中所有元素都是 互不相同 的。nums 中 最大 元素与 最小 元素的差等于 nums.…

java 开发环境配置 JAVA_HOME 和 MAVEN_HOME

java 开发环境配置 JAVA_HOME 和 MAVEN_HOME 介绍JAVA_HOMEMAVEN_HOME 配置环境1. 创建Java Home2. 创建Maven Home3. 设置环境变量4. 验证安装 没有 Maven 看这里 介绍 在Java和Maven的开发环境中&#xff0c;JAVA_HOME和MAVEN_HOME是非常重要的环境变量&#xff0c;它们帮助…

iOS 开发中上传 IPA 文件的方法(无需 Mac 电脑

引言 在 iOS 开发中&#xff0c;将 IPA 文件上传到苹果开发者中心是一个重要的步骤。通常情况下&#xff0c;我们需要使用 Mac 电脑上的 Xcode 或 Application Loader 工具来完成这个任务。然而&#xff0c;如果你没有 Mac 电脑&#xff0c;也没有关系&#xff0c;本文将介绍一…

JAVA毕业设计135—基于Java+Springboot+Vue的服装商城(源代码+数据库+万字论文)

毕设所有选题&#xff1a; https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootVue的服装商城(源代码数据库万字论文)135 一、系统介绍 本项目前后端分离&#xff0c;分为管理员、用户两种角色 1、用户&#xff1a; 注册、登录、服装购买、…

Centos7搭建 SkyWalking 单机版

介绍 Skywalking是应用性能监控平台&#xff0c;可用于分布式系统&#xff0c;支持微服务、云原生、Docker、Kubernetes 等多种架构场景。 整体架构如图 Agent &#xff1a;在应用中&#xff0c;收集 Trace、Log、Metrics 等监控数据&#xff0c;使用 RPC、RESTful API、Kafk…

解决PyCharm更新到2024.1版本后不能运行项目的问题

先来看看这个问题的表现吧。 1、运行和调试按钮是灰色的&#xff0c;并且显示编辑器中的文件不可运行&#xff0c;代码也是灰色的&#xff0c;还有我们的python文件的图标和文本文件的图标一样。 当然右键也是没有运行、调试选项。 2、无法创建新的项目和py文件&#xff0c;能…

Teachable Machine模型之TensorFlow使用篇

前言: 使用在teachable machine训练的h5格式模型 tensorflow使用篇 1. 使用teachable machine训练模型 地址: 传送门, 需要梯子翻一下 训练后, 导出的时候可以选择三种类型 导出模型文件 converted_keras.zip (py版) 解压后得到 2. py项目中使用模型 根据你当时使用tea…

简介:基于Web的产品3D

基于 Web 的产品 3D 通过可视化界面获得各种选项来个性化他们的产品&#xff0c;例如颜色、材料、尺寸、文字、徽标、零件等。 在过去几年中&#xff0c;随着 3D 建模和渲染软件的出现&#xff0c;3D 渲染现在更常用于营销和促销目的。设计师、制造商和营销人员使用 3D 产品渲…

20240408通过win32diskimager给TF卡写入Ubuntu Core 16.04

20240408通过win32diskimager给TF卡写入Ubuntu Core 16.04 2024/4/8 20:48 IMG固件使用&#xff1a;h3-eflasher-friendlycore-xenial-4.14-armhf-20210618.img 固件不能放倒中文目录里/只能放到英文目录内&#xff01; 【也不能放到网络磁盘里】映射网络驱动器&#xff01; Wi…

大模型日报|今日必读的7篇大模型论文

大家好&#xff0c;今日必读的大模型论文来啦&#xff01; 1.CT-LLM&#xff1a;仅 20 亿参数&#xff0c;基于中文的大型语言模型 来自开源研究社区 Multimodal Art Projection、复旦大学和香港科技大学的研究团队及其合作者&#xff0c;推出了一个 20 亿参数的大型语言模型…

c++配置libtorch

这里写目录标题 LibTorch下载Vistual Studio环境配置C部署Libtorch出现问题、错误汇总检测环境是否配置成功 LibTorch下载 安装LibTorch非常简单&#xff0c;只需要从其官网选择相应的版本即可&#xff0c;具体页面如下图所示。 如果需要加载PyTorch训练的模型文件&#xff0…