AtCoder Beginner Contest 280 老年人复建赛

news2024/9/21 10:46:41

好久没更新了,因为最近p事实在是有点多,让人心烦意乱

还是安安心心打比赛舒服

A,B,C就不讲啦

D - Factorial and Multiple

大意:

给定一个数字k<=1e12,求最小的数字n满足n!%k=0;

思路1:

不难想到对质因数进行处理。对于k的每一个质因数pi,不妨假设k的质因数分解中pi的指数为num,则n!中每一个数字的质因数分解对应的pi的指数和一定>=num,所以只要对每一个质因数贪心求一下它对应的上界,然后总体取最大就好了。复杂度大概是sqrt(k)*log(k)

思路2:二分

二分上界就是k<=1e12,然后judge函数的话,跟上一个思路其实差不多,对指数判一下就好了。

思路1代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'
const ll N=1e5+10;
ll n,cnt,sum,sd;
void solve()
{
	cin>>n;
	ll ma=0;
	for(ll i=2;(i*i)<=n;++i)
	{
		if(n%i) continue;
		cnt=0;
		while(n%i==0)
		{
			n/=i;
			cnt++;
		}
		sum=0;
		while(cnt>0)
		{
			sum+=i;
			sd=sum;
			while(sd%i==0) 
			{
				sd/=i;
				cnt--;
			}
		}
		ma=max(ma,sum);
	}
	ma=max(ma,n);
	cout<<ma<<endl;
}
int main()
{
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	solve();
	return 0;
}

E - Critical Hit 

大意:

给定初始数字n,每次操作有p/100的概率变为n-2,有1-p/100的概率变成n-1,求n<=0的期望次数

思路:
好像是做过的最水的E题了,六七分钟就切了。

就是一个最基础的期望递推

设dp【i】表示数字为i时达到要求的期望次数,考虑到每次最多减少2,可以让n++,这样最终合法状态就是0或者1了。然后向后递推的话,

dp[i]=(dp[i-2]+1)*p/100+(dp[i-1]+1)*(1-p/100)

然后求一个逆元就结束了 

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'
const ll N=2e5+10;
const ll mod=998244353;
ll ksm(ll x,ll y)
{
	ll ans=1;
	while(y)
	{
		if(y&1) ans=ans*x%mod;
		x=x*x%mod;
		y>>=1;
	}
	return ans;
}
ll inv(ll x)
{
	return ksm(x,mod-2);
}
ll dp[N];
ll p,n;
void solve()
{
	cin>>n>>p;
	ll in=inv(100);
	n++;
	dp[1]=0;dp[0]=0;
	for(int i=2;i<=n;++i)
	{
		dp[i]=((dp[i-2]+1)%mod*p%mod*in%mod+(dp[i-1]+1)%mod*(100-p)%mod*in%mod)%mod;
	}
	cout<<dp[n]<<endl;
}
int main()
{
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	solve();
	return 0;
}

 F - Pay or Receive

大意:
给定一张图,每条边正向走时获得权值dis,反向走时获得权值-dis,q次询问求给定两点之间的最最大权值,如果无法到达输出nan,如果获得权值可以达到无限则输出inf

思路:

首先看nan的情况吧,如果两个点不在一个连通块里面,那么结果显然是nan,所以接下来我们都只考虑连通的情况。

这里,如果A到B有两条路径,且一条的权值为a,另一条的权值为b的话,如果a!=b,那么会发生什么?这就意味着a-b不为0,所以这两条路径产生的环,从某一个方向走的话,总权值就是正的了,那么我们就可以一直走来刷分,那么结果就是inf,考虑到连通块上的其他点也能从环上任意一点到达,所以这整个连通块上的点的答案就都是inf了。

如此我们得到一个结论:从A到B的答案不为inf当且仅当A到B的所有路径的总权值都是相等的,这就是说这里不存在dis更新的问题,因为能更新就意味着inf,这个我们可以在最后直接判掉。

这样的话,我们只用跑一遍dfs,在每一个连通块上随便找一个点以它为根跑一颗生成树为其他点的权值赋值,再判一下哪几个连通块存在路径更新就好了。不是nan也不是inf的话就直接是两点之间的dis之差

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'
const ll N=1e5+10;
struct ty
{
	ll t,l,next;
}edge[N<<1];
ll cn=0;
ll head[N];
void add(ll a,ll b,ll c)
{
	edge[++cn].t=b;
	edge[cn].l=c;
	edge[cn].next=head[a];
	head[a]=cn;
}
ll n,m,q;
ll a,b,c;
ll vis[N];
ll dis[N];
ll cnt=0;//连通块数量 
ll col[N];//所在连通块 
ll wr[N];
void dfs(ll id,ll nu)
{
	col[id]=nu;
	vis[id]=1;
	for(int i=head[id];i!=-1;i=edge[i].next)
	{
		ll y=edge[i].t;
		if(vis[y]) continue;
		dis[y]=dis[id]+edge[i].l;
		dfs(y,nu);
	}
}
void solve()
{
	memset(head,-1,sizeof head);
	cin>>n>>m>>q;
	for(int i=1;i<=m;++i)
	{
		cin>>a>>b>>c;
		add(a,b,c);
		add(b,a,-c);
	}
	for(int i=1;i<=n;++i)
	{
		if(vis[i]) continue;
		dfs(i,++cnt);
	}
	for(int i=1;i<=n;++i)
	{
		if(wr[col[i]]) continue;
		for(int j=head[i];j!=-1;j=edge[j].next)
	    {
	    	ll y=edge[j].t;
	    	if(dis[y]!=dis[i]+edge[j].l) wr[col[i]]=1;
		}
	}
	while(q--)
	{
		cin>>a>>b;
		if(col[a]!=col[b])
		{
			cout<<"nan"<<endl;
			continue;
		}
		if(wr[col[a]])
		{
			cout<<"inf"<<endl;
			continue;
		}
		cout<<dis[b]-dis[a]<<endl;
	}
}
int main()
{
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	solve();
	return 0;
}

 

 

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

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

相关文章

hadoop完全分布式环境搭建详细版

1. hadoop集群规划 1.准备3台客户机(关闭防火墙&#xff0c;静态ip&#xff0c;主机名称) 2.安装jdk 3.配置环境变量 4.安装hadoop&#xff0c;hadoop版本是3.1.3,包名为hadoop-3.1.3.tar.gz 5.配置环境变量 6.配置集群 7.单点启动 8.配置ssh 9.群起集群并测试集群 注意: NameN…

Ubuntu20.04静态路由表连通局域网各网段主机 Vmware WorkStation

文章目录示例拓扑虚拟机的三种网络模式虚拟网络编辑器的设置虚拟主机与虚拟路由设置细节Ubuntu20.04设置静态IP给R1添加双网卡给R1、R2开启转发功能配置路由表References示例拓扑 宿主机是Windows11 PC与Router均为 Ubuntu20.04系统。 虚拟机的三种网络模式 虚拟机默认是只初…

如何利用InVest模型估算区域产水量

1.什么是InVEST模型 InVEST模型&#xff08;Integrated Valuation of Ecosystem Services and Tradeoffs &#xff09;是生态系统服务评估与权衡模型的简称&#xff0c;是美国自然资本项目组开发的、用于评估生态系统服务功能量及其经济价值、支持生态系统管理和决策的一套模型…

十四、使用 Vue Router 开发单页应用(1)

本章概要 感受前端路由 HTML 使用路由模块开发使用路由 传统的 Web 应用程序不同页面间的跳转都是向服务器发起请求&#xff0c;服务器处理请求后向浏览器推送页面。 在单页应用程序中&#xff0c;不同视图&#xff08;组件的模板&#xff09;的内容都是在同一个页面中渲染&…

golang 琐碎知识

golang 琐碎知识&#xff08;持续进行&#xff09; 时间格式 time.now.Format("2006-01-02T 15:04:05")make声明切片bug Golang&#xff1a;statusList : make([]*model.StatusList, 6) 会声明一个长为6的null切片&#xff0c;使用append添加时不会将null覆盖掉去掉切…

JMeter入门教程(10) --函数助手

文章目录1.CSVRead2.Random3.RandomString4.RandomDate5.time在JMeter的选项菜单中有一个“函数助手对话框”&#xff0c;点击打开“函数助手”对话框&#xff0c;使用函数助手&#xff0c;我们可以从“选择一个功能”下拉列表中选择一个函数&#xff0c;并为其参数设定值。表格…

SQL函数之分割

数据库中有一张地区数据统计表,但是并不规则 ,记录类似于,225100:02:3:20160725是一串代码,以:分割,第1位为地区代码,第2位为分类代码,第3位为数量,第4位为日期 地区代码含义225100-上海 225200-江苏 225300-浙江 为可能有某些位不存在,缺位时计算规则如下: 1、…

Golang开发习惯:变量、常量声明使用惯例

《Go语言精进之路》第二、三章部分内容学习记录笔记。 1.基本原则 Golang开发中&#xff0c;可遵守简单且一致的命名原则&#xff0c;力求命名精简、易懂和一致。 package声明 Golang的package声明以小写形式的单个词进行命名&#xff1a; shopservice、utils、logs、tcc、l…

计算机毕业论文java毕业设计选题源代码

&#x1f496;&#x1f496;更多项目资源&#xff0c;最下方联系我们✨✨✨✨✨✨ 目录 Java项目介绍 资料获取 Java项目介绍 《【论文】S2SH药膳馆会员管理系统》该项目采用技术jsp、strust2、Spring、hibernate、tomcat服务器、mysql数据库 &#xff0c;项目含有源码、论…

十四、使用 Vue Router 开发单页应用(2)

本章概要 动态路由匹配 查询参数 路由匹配语法 参数的自定义正则表达式可重复参数可选参数 嵌套路由 14.2 动态路由匹配 实际项目开发时&#xff0c;经常需要把匹配某种模式的路由映射到同一个组件。例如&#xff0c;有一个 Book 组件&#xff0c;对于所有 ID 各不相同的图书…

MOOC 大数据Note

MOOC 大数据NoteSparkSpark 一个软件栈满足不同交互场景Lineage 血缘关系创建 转换 动作ShuffleMapStageSpark的部署和应用方式RDD操作分为转换&#xff08;Transformation&#xff09;和动作&#xff08;Action&#xff09;两种类型&#xff0c;下列属于动作&#xff08;Actio…

开发工具——gcc/g++

开发工具gcc/g 完成代码的编写完后&#xff0c;要形成可执行程序&#xff0c;需要编译工具进行对代码的编译。 C语言的编译工具是gcc&#xff0c;c的编译工具是g。 如果g没有的话&#xff0c;可以切换到root执行命令yum install -y gcc-c C语言和C的编译&#xff1a; gc…

「点燃我,温暖你」用Python制作一个动态爱心效果

最近「点燃我&#xff0c;温暖你」这部剧非常火&#xff0c;讲述的是程序员的爱情故事。 其中陈飞宇饰演的男主李峋&#xff0c;在剧中用程序做出的爱心跳动效果&#xff0c;非常炫。 网上各个大佬也是纷纷给出看法&#xff0c;综合就是不太可能用C语言来实现的。 大概率是AE…

Reg注册表读写

在Windows 95及其后继版本中&#xff0c;采用了一种叫做“注册表”的数据库来统一进行管理&#xff0c;将各种信息资源集中起来并存储各种配置信息。按照这一原则&#xff0c;Windows各版本中都采用了将应用程序和计算机系统全部配置信息容纳在一起的注册表&#xff0c;用来管理…

Java内存溢出故障案例及Linux内存机制探究

文章目录Java内存溢出故障案例及Linux内存机制探究OOM Killer触发机制分析如何避免系统触发OOM Killer这部分内容属于demo案例分享&#xff0c;解决线上运维问题&#xff0c;思路是最重要的 Java内存溢出故障案例及Linux内存机制探究 这是一个线上数据分析应用故障案例&#…

Java—反射

文章目录什么是反射反射定义java创建对象的三个阶段反射过程反射第一步&#xff1a;获取类对象获取类对象的三种方式反射第二步&#xff1a;获取类信息如何获取类信息&#xff1f;1、获取成员变量&#xff1a;2、获取方法&#xff1a;3、获取构造器反射第三步&#xff1a;使用反…

vue学习笔记——简单入门总结(四)

文章目录1.Vue3的特性和变化1.1.创建vue3项目1.2.分析main.js变化&#xff1a;1.3.setup--组合式api的开端1.4.ref函数和reactive函数&#xff1a;1.5.watch监视属性1.5.watchEffect函数1.6.vue3生命周期&#xff1a;1.Vue3的特性和变化 1.1.创建vue3项目 1.这里我们使用脚手架…

RegAD-Registration based Few-Shot Anomaly Detection论文学习

摘要 本文为少样本异常检测&#xff08;FSAD&#xff09;&#xff0c;这是一种实用但尚未被研究的异常检测&#xff08;AD&#xff09;&#xff0c;少样本意味着在训练中只为每个类别提供有限数量的正常图像。 现有的少样本异常检测的研究主要使用的是 一类别一模型 学习范式…

李宏毅《DLHLP》学习笔记7 - Voice Conversion

视频链接&#xff1a;https://www.youtube.com/watch?vJj6blc8UijY&listPLJV_el3uVTsO07RpBYFsXg-bN5Lu0nhdG&index9&ab_channelHung-yiLee 课件链接&#xff1a;https://speech.ee.ntu.edu.tw/~tlkagk/courses/DLHLP20/Voice%20Conversion%20(v3).pdf 1. 语音转…

JAVA+MySQL 图书馆借阅信息管理系统

图书馆是当下很多大学生和有志青年学习和借阅图书的场所,图书馆每天都有大量的人员需要接待,如何能够更好的对用户的这些借阅信息进行信息化的管理是当下大多数图书馆管理人员所关心的问题 本系统是通过JAVA和MYSQL来进行开发的,通过本系统可以对图书馆内的图书信息,用户信息以…