Codeforces Round 867 (Div. 3)

news2024/9/20 20:25:05

Problem - E - Codeforces

思路:

  1. 首先,如果n为奇数,中间那个数无法调整,所以只考虑偶数
  2. 只有26个字母,我们用cnt[]记录每个字母需要交换的对数。设maxn为交换对数最多的字母。
  3. 显然,如果cnt[maxn]>n/2,显然无法调整
  4. 如果sum-cnt[maxn]>=cnt[maxn],我们只需要把需要的对数,不同的互相交换,一共(sum+1)/2次即可
  5. 如果大于,我们可以在本来就不同的对数中寻找这些不包含maxn这个元素的对数的数量tmp。如果tmp+sum>=2*cnt[maxn],可以,次数是cnt[maxn],否则不可
#include <bits/stdc++.h>
using namespace std;
#define ll               long long
#define endl             "\n"
#define int              long long
const int N = 2e5 + 10;

void mysolve()
{
	int n;
	string s;
	cin>>n>>s;
	if(n&1)
		{
			cout<<-1<<endl;
			return;
		}
	vector<int>cnt(26);
	int sum=0;
	for(int i=0; i<n/2; ++i)if(s[i]==s[n-1-i])cnt[s[i]-'a']++,sum++;
	int maxn=max_element(cnt.begin(),cnt.end())-cnt.begin();
	if(cnt[maxn]*2<=sum)cout<<(sum+1)/2<<endl;
	else if(cnt[maxn]>n/2)cout<<-1<<endl;
	else
		{
			int tmp=0;
			for(int i=0; i<n/2; ++i)if(s[i]!=s[n-1-i]&&s[i]!='a'+maxn&&s[n-1-i]!='a'+maxn)tmp++;
			if(sum+tmp>=2*cnt[maxn])cout<<cnt[maxn]<<endl;
			else cout<<-1<<endl;
		}
}

int32_t main()
{
	std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	ll t=1;
	cin >> t;
	while (t--)
		{
			mysolve();
		}
	system("pause");
	return 0;
}

Problem - G2 - Codeforces

思路:

  1. 首先,我们先知道1e9内的数的因子至多到1000。
  2. 如果我们每次取元素x,他的贡献是对于x的因子b,数组存在x/b与x*b,可以计入贡献。我们不难发现。如果枚举因子,需要次数<=1000,产生因子的代价为\sqrt{x},x<=1e9,代价有点高。如果是简单版本的1e6,我们是可以接受这个代价的(<=1000).
  3. 那么如何处理1e6~1e9呢,考虑到他们的范围是1000,所以我们可以考虑上限b,即x*b<=1e9,发现枚举次数也是<=1000,得解
  4. 每个元素出现cnt次,那么他自己跟自己产生的贡献也有cnt*(cnt-1)*(cnt-2)
#include <bits/stdc++.h>
using namespace std;
#define ll               long long
#define endl             "\n"
#define int              long long
const int N = 2e5 + 10;
vector<int> getelement(int x)//暴力枚举因子
{
	vector<int>ans;
	for(int i=1; i*i<=x; ++i)if(x%i==0)
			{
				ans.push_back(i);
				if(i*i!=x)ans.push_back(x/i);
			}
	sort(ans.begin(),ans.end());
	return ans;
}
void mysolve()
{
	map<int,int>cnt;
	int n,x;
	cin>>n;
	for(int i=1; i<=n; ++i)cin>>x,cnt[x]++;
	int ans=0;
	for(auto [x,k]:cnt)
		{
			ans+=k*(k-1)*(k-2);//自身贡献
			if(x<=1e6)
				{
					vector<int>tmp=getelement(x);
					for(auto v:tmp)if(v!=1&&x%v==0&&cnt.count(x/v)&&cnt.count(x*v))ans+=cnt[x/v]*k*cnt[x*v];//取下限
				}
			else for(int i=2; i*x<=1e9; ++i)if(x%i==0&&cnt.count(x/i)&&cnt.count(x*i))ans+=cnt[x/i]*k*cnt[x*i];//取上限
		}
	cout<<ans<<endl;
}
		
int32_t main()
{
	std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	ll t=1;
	cin >> t;
	while (t--)
		{
			mysolve();
		}
	system("pause");
	return 0;
}

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

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

相关文章

速锐得解码奔驰CAN数据应用于海外车联网远程控制与防盗系统

人们常说&#xff0c;奔驰征服一切&#xff0c;你征服奔驰。速锐得帮你征服奔驰的数据。 前日&#xff0c;有个海外客户&#xff0c;问我们做了奔驰哪些数据&#xff0c;他们需要一个车联网的远程控制系统&#xff0c;用于管理他们的车队。客户比较豪横&#xff0c;大多数都是…

大数据管理中心规划设计方案(ppt可编辑)

本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用&#xff0c;如有侵权请联系删除。 统一汇聚 推动业务数据协同5 价值提炼 支撑精准服务与科学管理6 实时感知 辅助城市治理高效运行7 大数据资源平台目标体系规划11 建设目标与思路12 使能高效协同&#xff0…

榜上有名 | 创宇盾荣登“2023 IT市场权威榜单”!

4月20日&#xff0c;已连续成功举办23届的IT市场年会在北京举行&#xff0c;作为权威咨询机构赛迪主办&#xff0c;中国IT业界延续时间最长的年度盛会之一&#xff0c;“2023 IT市场年会”隆重发布重磅权威榜单。 创宇盾作为云防护领域专业防护产品&#xff0c;在国家经济产业…

C++的默认成员函数

上一次我们说到了C的类&#xff0c;我们还知道在C的类中可以写函数&#xff0c;而且这个函数也属于这个类&#xff0c;我们可以直接使用这个类的对象去调用这个函数。 今天我们来看一下C的六个默认成员函数(这里说是6个&#xff0c;但是重要的只有4个) 构造函数 在C语言中&a…

Raft 共识算法3-日志复制

Raft 共识算法3-日志复制 Raft算法中译版地址&#xff1a;https://object.redisant.com/doc/raft%E4%B8%AD%E8%AF%91%E7%89%88-2023%E5%B9%B44%E6%9C%8823%E6%97%A5.pdf 英原论文地址&#xff1a;https://raft.github.io/raft.pdf Etcd Assistant 是一款 etcd 可视化管理软件&a…

idea使用 ( 一 ) 安装及初步使用

1.介绍 1.1.什么是 IDE 集成开发环境&#xff08;IDE&#xff0c;Integrated Development Environment &#xff09;是用于提供程序开发环境的应用程序&#xff0c;一般包括代码编辑器、编译器、调试器和图形用户界面]等工具。简单说就是开发工具&#xff0c;java开发中常用的…

一文读懂数据安全分级分类

目录 为什么要分级分类&#xff1f; 通用数据分级分类框架 数据分类 数据分类的常用方法 数据分类流程 数据分级 数据分级的常用方法 数据定级流程 行业数据安全分级分类指南 金融行业 电信行业 政务数据 健康医疗 企业实践 附录&#xff1a;数据分级分类大合集…

CAD格式交换全能:CAD DLL 15.0 Crack

添加对 SLDASM、FSAT、SAB、SMT、IPT 和 IFC 格式的支持。 2023 年 4 月 25 日 - 16:27 新版本 特征 改进的 3D&#xff1a; 打开 3D 文件时提高了速度。改进了对 SAT、STEP、SLDPRT、X_T、X_B、OBJ 格式的读取。添加了对 SLDASM、FSAT、SAB、SMT、IPT、IFC 格式的支持。添加了…

聊聊 maven的版本号version 以及maven指定版本号范围写法

1. 版本管理&#xff08;version&#xff09; 说了那么多废话&#xff0c;什么是版本管理&#xff1f;首先&#xff0c;一个健康的项目&#xff0c;通常有一个长期、合理的版本演变过程。版本管理是指项目整体版本的演变过程管理&#xff0c;就比如从1.0-SNAPSHOT --> 1.0 …

懂这3件事情,就能成功实施MES管理系统实现“数字化”工厂

当前&#xff0c;很多企业对MES管理系统需求旺盛&#xff0c;但是&#xff0c;要保证MES管理系统能够有效地实施&#xff0c;实现精益化管理&#xff0c;打造出一个“数字化”工厂&#xff0c;公司在实施MES管理系统之前&#xff0c;还必须弄明白为什么要MES管理系统、MES有什么…

QGIS数据可视化学习笔记04(完结)——POI检索和数据上图

一、POI数据检索概念 什么是POI检索&#xff1f;为什么要使用POI检索&#xff1f; 有的时候&#xff0c;我们可能不知道某个位置的地址&#xff0c;比如说北京朝阳图书馆&#xff0c;这个位置没有任何部门会去公布位置信息&#xff0c;但是我们又需要用到&#xff0c;这个时候就…

接口测试工具

工作当中有不少时间在编写和维护接口自动化测试用例。打算先整理一些接口相关工具的使用。 简单对接Web口测试的相关工具/技术做个划分。 HTTP/SOAP协议接口的功能测试&#xff1a; 1、浏览器URL&#xff08;GET请求&#xff09; 2、浏览器插件&#xff1a;Poster、Postman 简单…

科学防雷接地和雷电防护方案

说到防雷&#xff0c;可能不少人首先会想到避雷针&#xff0c;而“避雷针”这一概念&#xff0c;很容易让大家对防雷的概念造成误解。 误解1: 避雷针是用来“避雷”的。 其实&#xff0c;避雷针的学名叫“接闪器”&#xff0c;不是用来“避开雷击”的&#xff0c;而是用来“迎…

AI绘画——Checkpoint模型Dark Sushi Mix 大颗寿司Mix

目录 版本解析 模型简介 模型特性 模型演示&#xff08;多图预警&#xff09; Picture One 正面tag&#xff1a; 负面tag&#xff1a; Checkpoint模型darkSushiMixMix无Vae Checkpoint模型darkSushiMixMixVae模型kl-f8-anime2.ckpt Picture Two 正面tag&#xff1a;…

虹科案例|虹科Micronor光纤传感器,实现核磁共振新应用!

PART 1 背景介绍 光纤传感器已成为推动MRI最新功能套件升级和新MRI设备设计背后的关键技术。将患者的某些活动与MRI成像系统同步是越来越受重视的需求。磁场强度随着每一代的发展而增大&#xff0c;因此&#xff0c;组件的电磁透明度在每一代和新应用中变得更加重要。 光学传…

Oracle系列之九:Oracle常用函数

Oracle常用系统函数 1. 字符串函数2. 数学函数3. 日期函数4. 聚合函数5. 其他 Oracle是一种关系型数据库管理系统&#xff0c;它提供了许多内置函数&#xff0c;以便用户可以更轻松地处理数据。 1. 字符串函数 &#xff08;1&#xff09;lengthb/length 计算字符串长度 len…

C++ POCO库的基础介绍(Windwos和Linux)

简单介绍C POCO库能干什么&#xff0c;后续有时间的话将根据其每个点详细解析&#xff0c;关注我。本篇包含POCO库简单介绍、下载以及安装方式、简单代码示例。 目录 一、POCO简单介绍 1.1 POCO库的基本模块 1.2 POCO库的优点 二、POCO库安装方式 2.1下载源代码编译安装 …

Golang每日一练(leetDay0047)

目录 138. 复制带随机指针的链表 Copy List with Random-pointer &#x1f31f;&#x1f31f; 139. 单词拆分 Word Break &#x1f31f;&#x1f31f; 140. 单词拆分 II Word Break II &#x1f31f;&#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &…

100种思维模型之指数对数思维模型-54

对数、指数&#xff0c;生活中的2种增长曲线&#xff1b;对数增长曲线&#xff0c;即在开始时增长很快&#xff0c;但随着时间的推移&#xff0c;收益会减少并变得更加困难&#xff1b;而指数增长曲线&#xff0c;即开始时增长缓慢&#xff0c;但随着时间的推移&#xff0c;收益…

《计算机网络——自顶向下方法》精炼——2.5-2.6.1

“Be the change you wish to see in the world.” - Mahatma Gandhi 文章目录 DNSDNS概述DNS的组成DNS的服务 DNS运行过程DNS的分布式数据库本地DNS服务器DNS的运行过程递归查询、迭代查询 DNS缓存DNS记录DNS报文首部区域问题区域回答区域权威区域附加区域 插入DNS记录 P2PP2P…