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

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

目录

信息工程大学第五届超越杯程序设计竞赛(同步赛)_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];//记录每个城市的moneyll 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;
}

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



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

相关文章

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

每日一题|牛客竞赛|四舍五入|字符串+贪心+模拟

每日一题|四舍五入 四舍五入 心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C++学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴水可以击穿顽石。 四舍五入 题目: 牛牛发明了一种新的四舍五入应用于整数,对个位四舍五入,规则如下 12345->12350 12399->12400 输入描述: 输入一个整数n(0<=n<=109 ) 输出描述: 输出一个整数

C语言程序设计(数据类型、运算符与表达式)

一、C的数据类型 C语言提供的数据类型: 二、常量和变量 2.1常量和符号常量 在程序运行过程中,其值不能被改变的量称为常量。 常量区分为不同的类型: 程序中用#define(预处理器指令)命令行定义变量将代表常量,用一个标识符代表一个常量,称为符合常量。 2.2变量 变量代表内存中具有特定属性的一个存储单元,用来存放数据,在程序运行期间,这些值是可以 改变的。 变

C语言程序设计(选择结构程序设计)

一、关系运算符和关系表达式 1.1关系运算符及其优先次序 ①<(小于) ②<=(小于或等于) ③>(大于) ④>=(大于或等于 ) ⑤==(等于) ⑥!=(不等于) 说明: 前4个优先级相同,后2个优先级相同,关系运算符的优先级低于算术运算符,关系运算符的优先级高于赋值运算符 1.2关系表达式 用关系运算符将两个表达式(可以是算术表达式或关系表达式,逻辑表达式,赋值表达式,字符

MySQL主从同步延迟原理及解决方案

概述 MySQL的主从同步是一个很成熟的架构,优点为: ①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力; ②在从主服务器进行备份,避免备份期间影响主服务器服务; ③当主服务器出现问题时,可以切换到从服务器。 相信大家对于这些好处已经非常了解了,在项目的部署中也采用这种方案。但是MySQL的主从同步一直有从库延迟的问题,那么为什么会有这种问题。这种问题如何解决呢? MyS

2024年AMC10美国数学竞赛倒计时两个月:吃透1250道真题和知识点(持续)

根据通知,2024年AMC10美国数学竞赛的报名还有两周,正式比赛还有两个月就要开始了。计划参赛的孩子们要记好时间,认真备考,最后冲刺再提高成绩。 那么如何备考2024年AMC10美国数学竞赛呢?做真题,吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一。通过做真题,可以帮助孩子找到真实竞赛的感觉,而且更加贴近比赛的内容,可以通过真题查漏补缺,更有针对性的补齐知识的短板。

使用条件变量实现线程同步:C++实战指南

使用条件变量实现线程同步:C++实战指南 在多线程编程中,线程同步是确保程序正确性和稳定性的关键。条件变量(condition variable)是一种强大的同步原语,用于在线程之间进行协调,避免数据竞争和死锁。本文将详细介绍如何在C++中使用条件变量实现线程同步,并提供完整的代码示例和详细的解释。 什么是条件变量? 条件变量是一种同步机制,允许线程在某个条件满足之前进入等待状态,并在条件满

mysql创建新表,同步数据

import os import argparse import glob import cv2 import numpy as np import onnxruntime import tqdm import pymysql import time import json from datetime import datetime os.environ[“CUDA_VISIBLE_DEVICE