Codeforces Round 921 (Div. 2)补题

news2024/11/16 13:26:32

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.coloradmin.cn/o/1418398.html

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

相关文章

springboot+vue3支付宝接口案例-第二节-准备后端数据接口

springbootvue3支付宝接口案例-第二节-准备后端数据接口&#xff01;今天经过2个小时的折腾。准备好了我们这次测试支付宝线上支付接口的后端业务数据接口。下面为大家分享一下&#xff0c;期间发生遇到了一些弯路。 首先&#xff0c;我们本次后端接口使用的持久层框架是JPA。这…

【复现】广联达-linkworks SQL注入漏洞_31

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 LinkWorks是梦龙科技根据企业信息化的多样性、灵活性和复杂性&#xff0c;结合多年从事项目管理、办公管理、事务处理等方面的经验…

sql注入的学习

1.首先我们应该确定sql注入的类型 利用id1 and 11 和id1 and 12 判断是数字类型注入还是字符型注入&#xff0c;如果两者都可以正常显示界面&#xff0c;则为字符型注入&#xff0c;否则是数字型 两个都正常显示&#xff0c;所以为字符型注入&#xff08;也可以使用id2-1&…

浏览器——HTTP缓存机制与webpack打包优化

文章目录 概要强缓存定义开启 关闭强缓存协商缓存工作机制通过Last-Modified If-Modified-Since通过ETag If-None-Match 不使用缓存前端利用缓存机制&#xff0c;修改打包方案webpack 打包webpack 打包名称优化webpack 默认的hash 值webapck其他hash 类型配置webpack打包 web…

Mysql运维篇(三) MySQL备份与恢复

一路走来&#xff0c;所有遇到的人&#xff0c;帮助过我的、伤害过我的都是朋友&#xff0c;没有一个是敌人。如有侵权&#xff0c;请留言&#xff0c;我及时删除&#xff01; 一、物理备份与逻辑备份 1、物理备份&#xff1a;备份数据文件&#xff0c;转储数据库物理文件到某…

isctf---misc

你说爱我&#xff1f;尊嘟假嘟 转换为ook编码 def convert_string(input_str):# 定义转换映射关系mapping {"你说爱我": "Ook.","尊嘟": "Ook!","假嘟": "Ook?"}# 遍历字符串&#xff0c;进行转换for key, va…

谷歌seo内容营销怎么做?

谷歌SEO内容营销就像是在为两个观众准备一场表演&#xff0c;一边是用户&#xff0c;一边则是谷歌搜索引擎&#xff0c;那么所谓的内容营销&#xff0c;你自然需要知道你的观众想看什么&#xff0c;这就是关键词研究&#xff0c;帮你了解用户在搜索什么&#xff0c;然后&#x…

什么是NAT?NAT类型有哪些?

晚上好&#xff0c;我的网工朋友。NAT是一种地址转换技术&#xff0c;它可以将IP数据报文头中的IP地址转换为另一个IP地址&#xff0c;并通过转换端口号达到地址重用的目的。 在大多数网络环境中&#xff0c;我们都需要通过 NAT 来访问 Internet。 NAT作为一种缓解IPv4公网地址…

数据预处理:纠偏

纠偏 1、偏态分布2、什么是纠偏3、数据纠偏 1、偏态分布 频数分布有正态分布和偏态分布之分。正态分布是指多数频数集中在中央位置&#xff0c;两端的频数分布大致对称 偏态分布是指频数分布不对称&#xff0c;集中位置偏向一侧。若集中位置偏向数值小的一侧&#xff0c;称为正…

航空MRO行业研究:2027年全球市场将达1200亿美元

随着全球航空运输业的不断发展&#xff0c;越来越多的航空器进入了使用年限&#xff0c;需要进行维修、修理和大修。这促进了航空MRO市场的不断增长。此外&#xff0c;航空器设备和技术的不断更新换代&#xff0c;也对航空MRO市场带来了新的机遇和挑战。 航空MRO市场是指维修、…

【Android】实现简易购物车功能(附源码)

先上结果&#xff1a; 代码&#xff1a; 首先引入图片加载&#xff1a; implementation com.github.bumptech.glide:glide:4.15.1配置权限清单&#xff1a; <!-- 网络权限 --><uses-permission android:name"android.permission.INTERNET"/><uses…

ubuntu22.04@laptop安装配置VNC服务端

ubuntu22.04laptop安装&配置VNC服务端 1. 源由2. 系统安装3. VNC安装3.1 系统更新3.2 lightdm安装3.3 x11vnc安装3.4 x11vnc配置3.5 x11vnc自启动3.6 x11vnc状态查询 4. 演示视频 1. 源由 最近系统搞TensorFlow, OpenCV, Python&#xff0c;折腾各种环境&#xff0c;把系统…

数据库管理-第139期 做大还是做小-Oracle名称哪些事(20240125)

数据库管理139期 2024-01-25 第139期 做大还是做小-Oracle名称哪些事&#xff08;20240125&#xff09;1 问题2 排查3 扩展总结 第139期 做大还是做小-Oracle名称哪些事&#xff08;20240125&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#xff08;尹海文&#xff09; Oracle A…

【备战蓝桥杯】——循环结构

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-bFHV3Dz5xMe6d3NB {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

Leetcode刷题笔记题解(C++):1114. 按序打印(多线程)

思路&#xff1a; 保证A,B,C三个线程的顺序不会变&#xff0c;即优先级顺序的问题 A,B需要资源1&#xff0c;B,C需要资源2 A先占用资源1和资源2&#xff0c;A线程完了之后释放资源1不释放资源2&#xff0c;然后B线程占用资源1&#xff0c;A线程完了之后释放资源1和资源2&…

【极数系列】Flink配置参数如何获取?(06)

文章目录 gitee码云地址简介概述01 配置值来自.properties文件1.通过路径读取2.通过文件流读取3.通过IO流读取 02 配置值来自命令行03 配置来自系统属性04 注册以及使用全局变量05 Flink获取参数值Demo1.项目结构2.pom.xml文件如下3.配置文件4.项目主类5.运行查看相关日志 gite…

D6212——由八路达林顿管 阵列和 H 桥驱动电路两个单元组成,可用于驱动步进电机等产品上

D6212是专为安防摄像头系统设计的驱动电路&#xff0c;电路由八路达林顿管 阵列和 H 桥驱动电路两个单元组成。八路达林顿管阵列均带有续流二极 管&#xff0c;可用于驱动步进电机&#xff1b;H 桥驱动电路单元可以直接驱动IR-CUT。单个 达林顿管在输入电压低至 1.8V 状态下支持…

SQL中实现行列转换

目录 方法一&#xff1a;sum case when 方法二&#xff1a;sum if 方法三&#xff1a;pivot 现在有一张表class_gender&#xff0c;内容如下&#xff1a; classgender一年级女一年级女一年级男一年级男二年级女二年级女二年级男 现在我们要根据上表&#xff0c;统计得到下…

spring boot学习第八篇:操作elastic search的索引和索引中的数据

前提参考&#xff1a;elastic search入门-CSDN博客 前提说明&#xff1a;已经安装好了elastic search 7.x版本&#xff0c;我的es版本是7.11.1 1、 pom.xml文件内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns&q…

深分页怎么导致索引失效了?提供6种优化的方案!

深分页怎么导致索引失效了&#xff1f;提供6种优化的方案&#xff01; 上篇文章说到索引失效的几种规则&#xff0c;其中就有包括 深分页回表太多导致索引失效 的场景 本篇文章来聊聊深分页场景中的问题并提供几种优化方案&#xff0c;以下是本篇文章的思维导图&#xff1a; …