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

2024-04-03 01:12

本文主要是介绍信息工程大学第五届超越杯程序设计竞赛(同步赛),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

赛后补题!!!

M-Monika's game

题意

将数字n进行拆分,求每次拆分之后乘积之和的最大值。

思路

每次都将数字x拆分为1x-1,则1+2+3+......+n-1=n*(n-1)/2。

代码

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(false); cin.tie(0), cout.tie(0);
using namespace std;
const int N=1e5+9;
int main()
{int t;scanf("%d",&t);long long x;for(int i=1;i<=t;i++) {scanf("%lld",&x);printf("%lld\n",x*(x-1)/2);}return 0;
}

F-不规则的轮回

题意

给定n个数对,每个数对中若 x > y , x = x -y ;若 x < y , y = y - x;求所询问的数对出现的次数。

思路

在进行操作的同时记录每对数对出现的次数。

代码

#include<bits/stdc++.h>
using namespace std;
map<pair<int,int>,int> mp;
int main()
{int t;cin>>t;int x,y;for(int i=1;i<=t;i++){cin>>x>>y;while(x!=y){mp[{x,y}]++;if(x>y)x-=y;elsey-=x;}mp[{x,y}]++;} int q;cin>>q;while(q--){cin>>x>>y;cout<<mp[{x,y}]<<endl;}return 0;
}

D-实验室有多少人

题意

给出n个人到达和离开实验室的时间,统计实验室一天最多有多少人。

思路

将n个人到达的时间和离开的时间都进行标记,到达标记为1,离开标记为2,按升序排列,若遇到1则说明实验室人数+1,否则实验室人数-1。

代码

#include<bits/stdc++.h>
#define PII pair<int,int>
using namespace std;
const int N=1e6+9;
bool cmp(PII x,PII y)
{if(x.first==y.first) return x.second<y.second;return x.first<y.first; 
}
int main()
{int n;cin>>n;int x,y;vector<PII> a;for(int i=1;i<=n;i++){cin>>x>>y;a.push_back({x,1});a.push_back({y,2});}sort(a.begin(),a.end(),cmp);int ans=0,res=0;for(auto i:a){if(i.second==1) res++;else res--;ans=max(ans,res);}cout<<ans<<endl;return 0;
}

C-财政大臣

题意

以1号城市为树的根,城市之间相连接:

操作1:以u为根结点的子树中每个值都增加x

操作2:以u为根结点的子树中每个值都减少x

思路

每个节点最终的值:根节点的变化+自身的变化+自身的初始值

将每次以u为根结点的变化都记录下来,最终直接相加即可。

代码

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+9;
vector<int>a[N];
int b[N],c[N];
void check(int u,int fa)
{c[u]+=c[fa];int x;for(int i=0;i<a[u].size();i++){x=a[u][i];if(x==fa) continue;check(x,u);}
}
int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n,q;cin>>n>>q;int x,y;for(int i=1;i<n;i++){cin>>x>>y;a[x].push_back(y);a[y].push_back(x);}for(int i=1;i<=n;i++){cin>>b[i];}int op,u,v;for(int i=1;i<=q;i++){cin>>op>>u>>v;if(op==1){c[u]+=v;}elsec[u]-=v;}check(1,0);for(int i=1;i<=n;i++){cout<<b[i]+c[i]<<" ";}cout<<endl;return 0;	
} 

E-在雾中寻宁静

题意

给定每个子结点的根结点,每次都将以u为根的子树染成v颜色。

思路

记录染色的先后顺序,子节点的颜色为最终其父结点或自身的颜色变化。

代码

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+9;
vector<int> a[N];
int b[N];
pair<int,int> c[N];
void check(int x)
{for(int i=0;i<a[x].size();i++){int j=a[x][i];if(c[j].first<c[x].first){c[j]=c[x];	}check(j);}
}
int main()
{int n;scanf("%d",&n);int x;for(int i=1;i<n;i++){scanf("%d",&x);a[x].push_back(i+1);}int q,u,v;scanf("%d",&q);for(int i=1;i<=q;i++){scanf("%d%d",&u,&v);c[u].first=i;c[u].second=v;}check(1);for(int i=1;i<=n;i++)printf("%d ",c[i].second);printf("\n");return 0;
}

G-完美数字

题意

末尾至少有k个0的数为完美数,若子区间内数字的乘积是完美数,则该区间为完美区间,统计完美区间的个数。

思路

末尾有0的数必定含有2和5,统计2和5的个数,若最小个数>=k,则为完美数,完美数所在的区间都为完美区间。

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=1e6+9;
int a[N],b[N],c[N];
int check(int n,int x)
{int res=0;while(n%x==0){n/=x;res++;}return res;
}
int main()
{int n,k;cin>>n>>k;for(int i=1;i<=n;i++){cin>>a[i];b[i]=check(a[i],2);c[i]=check(a[i],5);}for(int i=1;i<=n;i++){b[i]+=b[i-1];c[i]+=c[i-1];}LL ans=0;for(int l=0;l<=n;l++){for(int r=l+1;r<=n;r++){int t2=b[r]-b[l];int t5=c[r]-c[l];int temp=min(t2,t5);if(temp>=k){ans+=n-r+1;break;}}}cout<<ans<<endl;return 0;
}

这篇关于信息工程大学第五届超越杯程序设计竞赛(同步赛)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/871547

相关文章

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

时间服务器中,适用于国内的 NTP 服务器地址,可用于时间同步或 Android 加速 GPS 定位

NTP 是什么?   NTP 是网络时间协议(Network Time Protocol),它用来同步网络设备【如计算机、手机】的时间的协议。 NTP 实现什么目的?   目的很简单,就是为了提供准确时间。因为我们的手表、设备等,经常会时间跑着跑着就有误差,或快或慢的少几秒,时间长了甚至误差过分钟。 NTP 服务器列表 最常见、熟知的就是 www.pool.ntp.org/zo

Linux-笔记 线程同步机制

目录 前言 实现 信号量(Semaphore) 计数型信号量 二值信号量  信号量的原语操作 无名信号量的操作函数 例子 互斥锁(mutex) 互斥锁的操作函数 例子 自旋锁 (Spinlock) 自旋锁与互斥锁的区别 自旋锁的操作函数 例子 前言         线程同步是为了对共享资源的访问进行保护,确保数据的一致性,由于进程中会有多个线程的存在,

java同步锁以及级别升级的理解

首先简单说下先偏向锁、轻量级锁、重量级锁三者各自的应用场景: 偏向锁:只有一个线程进入临界区;轻量级锁:多个线程交替进入临界区;重量级锁:多个线程同时进入临界区。 还要明确的是,偏向锁、轻量级锁都是JVM引入的锁优化手段,目的是降低线程同步的开销。比如以下的同步代码块:   synchronized (lockObject) { // do something } 上述同步代码块

大学四年三年技术旅途

近三年前从接触技术以来,尝试过许多成熟的技术,最新的技术,高端技术,当然是从低端技术起步的(ps:现在明白能解决问题的技术最重要,没有所谓的技术等级,你用arm开发系统,而别人就用51单片机就解决问了,这很明显),对于新技术的热爱花费了大量时间,造成了不专业,不精通,最后发现最喜欢的是嵌入式系统研制与开发,其次是实时视觉处理以及运动控制。但好处是视野很广,思维变得更加灵活,我发现对于一个问题

线程间通信方式(互斥(互斥锁)与同步(无名信号量、条件变量))

1通信机制:互斥与同步 线程的互斥通过线程的互斥锁完成; 线程的同步通过无名信号量或者条件变量完成。 2  互斥 2.1 何为互斥?         互斥是在多个线程在访问同一个全局变量的时候,先让这个线程争抢锁的资源,那个线程争抢到资源,它可以访问这个变量,没有争抢到资源的线程不能够访问这个变量。那这种只有一个线程能够访问到这个变量的现象称之为线程间互斥。 2.2互斥锁API 1.

湖北民族大学2024年成人高等继续教育招生简章

湖北民族大学,这所承载着深厚文化底蕴和卓越教育理念的学府,在崭新的2024年再次敞开怀抱,热烈欢迎有志于深化学习、提升自我的成人学员们。今年的成人高等继续教育招生,不仅是学校对于终身教育理念的具体实践,更是为广大社会人士提供了一次难得的学习机会。 湖北民族大学,以其悠久的历史、优秀的师资和卓越的教学质量,早已在成人教育领域树立了良好的口碑。学校秉承“博学、博爱、立人、达人”的校训,致力于培养

MapReduce程序设计2

要求 1、数据集stock-daily,包含A股近4000只股票的今年以来的日数据;数据集stock-daily-30d仅包含最近30个交易日数据,根据自己计算机性能选择。 数据来源:https://www.joinquant.com/help/api/help?name=JQData 2、数据集stock-concept,包含A股近4000只股票所有的股票代码、名称和概念。 数据来源:万

▶《强化学习的数学原理》(2024春)_西湖大学赵世钰 Ch5 蒙特卡洛方法【model-based ——> model-free】

PPT 截取必要信息。 课程网站做习题。总体 MOOC 过一遍 1、视频 + 学堂在线 习题 2、 过 电子书 是否遗漏 【下载:本章 PDF GitHub 页面链接 】 【第二轮 才整理的,忘光了。。。又看了一遍视频】 3、 过 MOOC 习题 看 PDF 迷迷糊糊, 恍恍惚惚。 学堂在线 课程页面链接 中国大学MOOC 课程页面链接 B 站 视频链接 PPT和书籍下载网址: 【Gi