信息工程大学第五届超越杯程序设计竞赛(同步赛)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

相关文章

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

Linux实现线程同步的多种方式汇总

《Linux实现线程同步的多种方式汇总》本文详细介绍了Linux下线程同步的多种方法,包括互斥锁、自旋锁、信号量以及它们的使用示例,通过这些同步机制,可以解决线程安全问题,防止资源竞争导致的错误,示例... 目录什么是线程同步?一、互斥锁(单人洗手间规则)适用场景:特点:二、条件变量(咖啡厅取餐系统)工作流

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意

Mac备忘录怎么导出/备份和云同步? Mac备忘录使用技巧

《Mac备忘录怎么导出/备份和云同步?Mac备忘录使用技巧》备忘录作为iOS里简单而又不可或缺的一个系统应用,上手容易,可以满足我们日常生活中各种记录的需求,今天我们就来看看Mac备忘录的导出、... 「备忘录」是 MAC 上的一款常用应用,它可以帮助我们捕捉灵感、记录待办事项或保存重要信息。为了便于在不同

查看MySql主从同步的偏移量方式

《查看MySql主从同步的偏移量方式》:本文主要介绍查看MySql主从同步的偏移量方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 1.mysql的主从同步方案mysqlphp为了在实现读写分离,主库写,从库读mysql的同步方案主要是通过从库读取主库的binl

MySQL主从同步延迟问题的全面解决方案

《MySQL主从同步延迟问题的全面解决方案》MySQL主从同步延迟是分布式数据库系统中的常见问题,会导致从库读取到过期数据,影响业务一致性,下面我将深入分析延迟原因并提供多层次的解决方案,需要的朋友可... 目录一、同步延迟原因深度分析1.1 主从复制原理回顾1.2 延迟产生的关键环节二、实时监控与诊断方案

Java注解之超越Javadoc的元数据利器详解

《Java注解之超越Javadoc的元数据利器详解》本文将深入探讨Java注解的定义、类型、内置注解、自定义注解、保留策略、实际应用场景及最佳实践,无论是初学者还是资深开发者,都能通过本文了解如何利用... 目录什么是注解?注解的类型内置注编程解自定义注解注解的保留策略实际用例最佳实践总结在 Java 编程

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Linux搭建Mysql主从同步的教程

《Linux搭建Mysql主从同步的教程》:本文主要介绍Linux搭建Mysql主从同步的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux搭建mysql主从同步1.启动mysql服务2.修改Mysql主库配置文件/etc/my.cnf3.重启主库my

Java中将异步调用转为同步的五种实现方法

《Java中将异步调用转为同步的五种实现方法》本文介绍了将异步调用转为同步阻塞模式的五种方法:wait/notify、ReentrantLock+Condition、Future、CountDownL... 目录异步与同步的核心区别方法一:使用wait/notify + synchronized代码示例关键