Codeforces Round 921 (Div. 2)补题

We Got Everything Covered!(Problem - A - Codeforces)

题目大意:要求找出一个长度最短的字符串,满足任意由前k个字母组成的长度为n的字符串都是它的子序列。输出字符串。

思路:这道题我本来想的很简单,觉得只要在一个字母前,前k个字母都出现n-1次即可,所以我就让前k个字母按顺序排列作为一组,然后输出n遍,然后就过了。但是写到c题才发现,并不是简简单单的出现n-1次就行,因为如果对于aabbab,n=3,k=2来说,我们虽然满足在最后一个a和最后一个b之前a,b都出现n-1次,但实际上我们凑不出baa这个序列。所以正解应该是前k个字母为一组,一共n组,每次从每组中选一个元素,然后就可以得到任意的顺序。因为每组中都包含了前k个元素。

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		int n,k;
		scanf("%d%d",&n,&k);
		for(int i=1;i<=n;i++)
		{
			for(int j=0;j<k;j++)
			{
				char c='a'+j;
				printf("%c",c);
			}
		}
		printf("\n");
	}
}

A Balanced Problemset?(Problem - B - Codeforces)

题目大意:现有一个数x,我们要把它拆成n个数相加,要求这n个数和为x,同时gcd最大,求出最大gcd是多少。

思路:我最开始想的是gcd最大的话肯定是尽可能地均分,然后如果不能均分的话,我们就令a=x/n,b=x%n,每次a-=1,b+=n,直到a==0,然后每次求出gcd,从中取最大值。但是按照题目给的数据的话会超时。我们再换个角度想想,所有数的gcd与x有什么关系,显然也是x的因数,因为每个数相当于a*g,那么加起来就是(a+b+c+...)*g,所以g一定是x的因数,另外因为我们可以发现均分的时候gcd最大,剩下的时候,gcd只会越变越小,所以我们就在x/n的范围内找x的最大因数即可。用试除法刚好。另外这里n的范围在1e8以内,其实也是暗示了开平方。

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		int x,n;
		scanf("%d%d",&x,&n);
		int a=x/n;
		int ans=0;
		for(int i=1;i<=x/i;i++)
		{
			if(x%i==0)
			{
				if(x/i<=a) ans=max(ans,x/i);
				if(i<=a) ans=max(ans,i);
			}
		}
		cout<<ans<<endl;
	}
}

Did We Get Everything Covered?(Problem - C - Codeforces)

题目大意:现有一个字符串s,我们需要判断是否由前k个字母组成的长度为n的字符串都是它的子串如果是,输出yes,否则输出no,并输出一个例外。

思路:同a的分析一样,我们将包含前k个字母的一段视为一组,看看是否满足大于等于n组,如果满足那么输出yes,不满足,那么就满足的里面随便挑一个字符,不满足的部分看看谁不存在全部挑出来补在后边即可构成一个不满足要求的字符串。

#include<bits/stdc++.h>
using namespace std;
int st[30];
int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		int n,k,m;
		scanf("%d%d%d",&n,&k,&m);
		string s;
		cin>>s;
		memset(st,0,sizeof st);
		string c="";
		for(int i=0;i<s.size();i++)
		{
			st[s[i]-'a']=1;
			int flag=1;
			for(int j=0;j<k;j++)
			{
				if(!st[j])
				{
					flag=0;
					break;
				}
			}
			if(flag)
			{
				c+=s[i];
				memset(st,0,sizeof st);
			}
		}
		if(c.size()>=n) printf("YES\n");
		else
		{
			for(int i=0;i<k;i++)
			{
				if(!st[i])
				{
					while(c.size()<n) c += ('a'+i);
				}
			}
			printf("NO\n");
			cout<<c<<endl;
		}
	}
}

 Good Trip(Problem - D - Codeforces)

题目大意:有n个小朋友,m对友谊关系,老师需要进行k次旅行,每次平等独立地挑选两个小朋友,每对友谊关系地初值为fi,如果一对朋友被带出去,那么回来后他们的友谊值会增加1(如果初始值为0,那么不变),现在要求k次带出去的小朋友的友谊值得期望是多少。

思路:显然容易想到,初始值为0得毫无意义,那么就来看初始值非0的,我们可以一对一对来算,假设第i对小朋友在第j次旅行中被选,同时已经被选了z次,那么它对答案的贡献就是:

那么我们可以如下实现:

for(int i=1;i<=m;i++)
		{
			for(int j=1;j<=k;j++)//当前是第j轮
			{
				for(int z=1;z<=j;z++)//这一次被选,所以至少是从1开始,可以j次都选它
				{
					int c=(long long)f[j-1]*uf[z-1]%mod*uf[j-z]%mod;
					sum += (long long)c*qmi(in,j)%mod*qmi(all-1,j-z)%mod*(w[i]+z-1)%mod;
					sum %= mod;
				}
			}
		}

我当时没分析时间复杂度就交了,显而易见,超时了,只过了5组样例。我们观察一下数据范围可以发现,这个题每组样例需要在O(n)的时间复杂度内解决。那么我们进一步来看这个式子,很容易发现,整个式子中只有w[i]与i有关系,那么我们可以把w[i]提出来,将所有的w[i]加起来求和。

但是显然目前还剩下两层循环,还需要再优化。

我们对单从式子层面很难找到再优化的点,那么我们从实际意义出发:

 这样一次循环就算出来了,但是,我在wa了几次后遇到了一个很奇怪的点,m*p的值需要预处理,否则就会wa,另外算p的时候,我们直接算n*(n-1)/2的mod-2次方得逆元,就不要拆开了。

#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
int qmi(long long a,int b)
{
	long long res=1;
	while(b)
	{
		if(b&1) res = res*a%mod;
		a = a*a%mod;
		b >>= 1;
	}
	return res;
}
int w;
int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		int n,m,k;
		scanf("%d%d%d",&n,&m,&k);
		int a,b,w;
		int s=0;
		for(int i=1;i<=m;i++) scanf("%d%d%d",&a,&b,&w),s=(s+w)%mod;
		int p=qmi(((long long)n*(n-1)/2)%mod,mod-2);
		int ad=(long long)p*m%mod; 
		int res=0;
		for(int i=1;i<=k;i++)
		{
			res = ((long long)res + (long long)p*s%mod +(long long)p*(i-1)%mod*ad%mod)%mod;
		}
		cout<<res<<endl;
	}
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

仅使用 Python 创建的 Web 应用程序(前端版本)第10章_订单列表

本章我们将实现订单列表页面。 完成后的图像如下。 创建过程与之前相同,如下。 No分类内容1Model创建继承BaseDataModel的数据类Order、OrderDetail2Service创建一个 OrderAPIClient3Page定义PageId并创建继承自BasePage的页面类4Application将页面 ID 和页面类对添加到 Mult…

第五季特别篇:一夜杯、游戏之宴 2017.04.26

第五季特别篇&#xff1a;一夜杯、游戏之宴 2017.04.26 OVA 第1话&#xff1a;一夜酒杯 / 一夜杯OVA 第2话&#xff1a;游戏之宴 / 遊戯の宴 OVA 第1话&#xff1a;一夜酒杯 / 一夜杯 遭到独角妖袭击的妖怪夫妇日土和初菜被夏目所救&#xff0c;这对妖怪夫妇制作的酒杯&#xf…

【服务器APP】利用HBuilder X把网页打包成APP

目录 &#x1f33a;1. 概述 &#x1f33c;1.1 新建项目 &#x1f33c;1.2 基础配置 &#x1f33c;1.3 图标配置 &#x1f33c;1.4 启动界面配置 &#x1f33c;1.5 模块配置 &#x1f33c;1.6 打包成APP &#x1f33a;1. 概述 探讨如何将网页转化为APP&#xff0c;这似乎…

LeetCode 热题 100 | 矩阵

目录 1 73. 矩阵置零 2 54. 螺旋矩阵 3 48. 旋转图像 4 240. 搜索二维矩阵 II 菜鸟做题第二周&#xff0c;语言是 C 1 73. 矩阵置零 解题思路&#xff1a; 遍历矩阵&#xff0c;寻找等于 0 的元素&#xff0c;记录对应的行和列将被记录的行的元素全部置 0将被记录的…

SOME/IP 协议介绍(七)传输 CAN 和 FlexRay 帧

SOME/IP 不应仅用于传输 CAN 或 FlexRay 帧。但是&#xff0c;消息 ID 空间需要在两种用例之间进行协调。 传输 CAN/FlexRay 应使用完整的 SOME/IP 标头。 AUTOSAR Socket-Adapter 使用消息 ID 和长度来构建所需的内部 PDU&#xff0c;但不会查看其他字段。因此&#xff0c;必…

「效果图渲染」如何使用VRay渲染逼真的物理模型

使用V-Ray渲染出逼真的物理模型首先要注重材质和光照的真实性。精细调整材质属性&#xff0c;如反射、透明度和质感&#xff0c;确保它们与现实世界中物质的特性相一致。接下来&#xff0c;布置合适的光源&#xff0c;模拟自然光线的行为&#xff0c;创建真实的光影效果。通过这…

Redis -- 前置知识

目录 简要 分布式系统 负载均衡 引入缓存 数据库分表 微服务 小结 简要 redis是存储数据在内存中, 定义变量就是在内存中, 但是redis是在分布式系统中, 才能真正发挥威力, 如果只是单机程序, 那么直接通过变量来存储数据的方式将是最优的选择. …

(bean的创建图)学习Spring的第十天(很重要)

大致框架按如下 第一次细分 bean对象还未创建 操作第一个map 引入BeanFactoryPostProcessor , 即Bean工厂后处理器 , 为Spring很重要的扩展点 BeanFactoryPostProcessor内部的方法 可以对BeaDefinition进行修改 , 也可进行BeanDefinition的注册 ( 原有在xml文件配置的bean…

大模型学习与实践笔记(十四)

使用 OpenCompass 评测 InternLM2-Chat-7B 模型使用 LMDeploy 0.2.0 部署后在 C-Eval 数据集上的性能 步骤1&#xff1a;下载internLM2-Chat-7B 模型,并进行挂载 以下命令将internlm2-7b模型挂载到当前目录下&#xff1a; ln -s /share/model_repos/internlm2-7b/ ./ 步骤2&…

idea docker 内网应用实践

文章目录 前言一、服务器端1.1 离线安装docker1.2 开启docker远程访问1.3 制作对应jdk镜像1.3.1 下载jdk171.3.2 Dockerfile 制作jdk17镜像1.3.3 镜像导出1.3.4 服务器引入镜像 二、Idea 配置2.1 Dockerfile2.2 pom 引入docker插件2.3 idea docker插件配置2.4 打包镜像上传2.5 …

UE5在VisualStudio升级后产生C++无法编译的问题

往期的虚幻引擎项目在VS更新后&#xff0c;编译时会报错&#xff0c;这一般出现在VS升级之后&#xff0c;UE对于VC的编译器定位没有更新导致&#xff1b; 有出现如下问题&#xff1a; 问题1&#xff1a; Running I:/EPCI/Epic Games/UE_5.3/Engine/Build/BatchFiles/Build.ba…

Python采集微博评论数据,让评论告诉我们最近热议话题

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 环境使用: Python 3.10 Pycharm 模块使用: import requests >>> pip install requests import csv 模块安装&#xff1a; win R 输入cmd 输入安…

echarts option series smooth

echarts option series smooth 平滑处理 smooth&#xff1a;0.3 echarts_04_line.html <!DOCTYPE html> <html lang"en"><head> <meta charset"utf-8"> <title></title> </head><body><div id&quo…

蓝桥杯省赛无忧 课件51 第6次学长直播带练配套课件

01 最小的或运算 02 简单的异或难题 03 出列 04 异或森林 05 位移 06 笨笨的机器人 07 迷失的数 08 最大通过数

0128-2-keep-alive组件

&#x1f4bb;1、keep-alive是什么&#xff1f; keep-alive是Vue内置的一个组件&#xff0c;可以使被包含的组件保留状态&#xff0c;避免被重新渲染&#xff01;可以理解成防弹衣&#x1f9e5;; 包含在keep-alive里面的组件&#xff0c;所有路径匹配到的视图都会被缓存。 <…

Python字符串常用操作

在Python编程中&#xff0c;字符串是一种非常重要的数据类型&#xff0c;常常用于存储文本数据、处理文件内容以及进行各种文本处理操作。本文将介绍Python中字符串的常用操作&#xff0c;包括字符串的创建、连接、切片、查找、替换等操作&#xff0c;希望能够帮助读者更好地理…

探索ESP32 C++ OOP开发:与传统面向过程编程的比较

探索ESP32 OOP开发&#xff1a;与传统面向过程编程的比较 在嵌入式系统开发中&#xff0c;ESP32是一个强大的平台&#xff0c;可以应用于各种项目和应用场景。在编写ESP32代码时&#xff0c;我们可以选择使用面向对象编程&#xff08;OOP&#xff09;的方法&#xff0c;将代码…

学术交流、论文检索;2024年土木工程与城市建设国际会议(ICCEUC 2024)

2024年土木工程与城市建设国际会议(ICCEUC 2024) 2024 International Conference on Civil Engineering and Urban Construction(ICCEUC 2024) 数据库&#xff1a;EI,CPCI,CNKI,Google Scholar等检索 一、【会议简介】 2024年土木工程与城市建设国际会议(ICCEUC 2024)将在上海盛…

防御保护--智能选路

目录 就近选路 策略选路--PBR DSCP优先级 智能选路--全局路由策略 1.基于链路带宽的负载分担 2.基于链路质量进行负载分担 3.基于链路权重进行负载分担 4.基于链路优先级的主备备份 ​编辑 DNS透明代理 就近选路 我们希望在访问不同运营商服务器时&#xff0c;通过对…

堆和堆排序【数据结构】

目录 一、堆1. 堆的存储定义2. 初始化堆3. 销毁堆4. 堆的插入向上调整算法 5. 堆的删除向下调整算法 6. 获取堆顶数据7. 获取堆的数据个数8. 堆的判空 二、Gif演示三、 堆排序1. 堆排序(1) 建大堆(2) 排序 2.Topk问题 四、完整代码1.堆的代码Heap.cHeap.htest.c 2. 堆排序的代码…