Codeforces Round #841 (Div. 2)

news2024/10/2 1:27:44

题目链接

A. Joey Takes Money

题目描述

在这里插入图片描述

input

在这里插入图片描述

output

在这里插入图片描述

题意:

有一个长度为n的数组,你可以进行一步操作,选择两个i,j,然后再选择两个数x,y,使得a[i]a[j] = xy,然后将a[i] = x,a[j] = y,问任意步操作后的数组的最大和是多少。

思路:

两个数的乘积相等的话要是让他们加和尽可能大的话就是两个数相差尽可能大,那就是答案就是所有数的乘积然后n-1个1,下面看代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long 
void solve(){
	int n;
	scanf("%lld",&n);
	int ans = 1;
	for(int i=1;i<=n;i++){
		int x;
		scanf("%lld",&x);
		ans *= x;
	}
	printf("%lld\n",(ans+n-1)*2022);
}
signed main(){
	int _;
	for(cin>>_;_;_--) solve();
	return 0;
} 

B. Kill Demodogs

题目描述

在这里插入图片描述

题意:

给你一个数n,有一个大小为nn的矩阵,第i行第j列的单元的权值是ij,现在你可以向右走或者向下走,现在问你能获得的权值的最大值是多少?

思路:

这个跟上一个题刚好是相反的,这个是让i和j尽量相等,走对角线,然后就是右下右下这么走,先右再下,对角线是一个完全平方和,可以用n*(n+1)*(2n+1)/6这个公式来实现,那么对角线上面那一个斜线的和就是每次+1,+2,+3,…,+n-1,画一下就出来了,然后因为要取模,所以说除法得用费马小定理处理一下,下面看代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long 
const int mod = 1e9+7;
int ksm(int x,int n){
	int ans = 1;
	while(n){
		if(n & 1) ans = ans * x % mod;
		n >>= 1;
		x = x*x%mod;
	}
	return ans;
}
void solve(){
	int n;
	scanf("%lld",&n);
	printf("%lld\n",(n*(n+1)%mod*(2*n+1)%mod*ksm(3,mod-2)%mod-n*(n+1)%mod*ksm(2,mod-2)%mod+mod)*2022%mod);
}
signed main(){
	int _;
	for(cin>>_;_;_--) solve();
	return 0;
} 

C. Even Subarrays

在这里插入图片描述

题意:

给你一个数组,问有多少个区间满足区间的异或和的因子个数是偶数

思路:

除了完全平方数,其他的数的因子个数都是偶数,所以说只要是求出来有多少个完全平方数就行了,做法就是整一个数组记录前缀异或和,然后对于当前的数,只要求出来有多少个左边界使得这个区间的异或和为完全平方数就行了,因为每一个数都是小于等于n的,所以说直接用数组来维护就行了,用map的话会超时,因为本来复杂度已经是nsqrt(n)了,会被卡常,而且注意要开四倍空间,因为运行中的话会数组越界,这个地方需要点细节,下面看代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long 
const int mod = 1e9+7;
const int N = 8e5+10;
int mp[N];
void solve(){
	int n;
	scanf("%lld",&n);
	for(int i=0;i<=n*2;i++) mp[i] = 0;
	int ans = 0,k = 0;
	mp[0] = 1;
	for(int i=1;i<=n;i++){
		int x;
		scanf("%lld",&x);
		for(int j=0;j*j<=n*2;j++){
			ans += mp[(j*j)^k^x];
		}
		k ^= x;
		mp[k]++;	
	}
	printf("%lld\n",n*(n+1)/2-ans);
}
signed main(){
	int _;
	for(cin>>_;_;_--) solve();
	return 0;
} 

D. Valiant’s New Map

在这里插入图片描述

题意:

给你一个nm的矩阵,让你找到一个最大的size,使得存在一个sizsiz的方阵,方阵中的所有数都大于size

思路:

二分size,对于每一个size,首先预处理一遍,将数组中的比size大的数都变成size,然后前缀和就行,下面看代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long 
const int mod = 1e9+7,N = 2e6+10;
int n,m;
int g[N],f[N],s[N];
inline int find(int i,int j){
	return i*m + j;
} 
bool check(int siz){
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			s[find(i,j)] = min(siz,g[find(i,j)]);
			f[find(i,j)] = f[find(i-1,j)] + f[find(i,j-1)] - f[find(i-1,j-1)] + s[find(i,j)];
		}
	}
	for(int i=siz;i<=n;i++){
		for(int j=siz;j<=m;j++){
			int x1 = i-siz+1,y1 = j-siz+1;
			int t = f[find(i,j)] - f[find(x1-1,j)] - f[find(i,y1-1)] + f[find(x1-1,y1-1)];
			if(t >= siz*siz*siz) return true;
		}
	}
	return false;
}
void solve(){
	scanf("%lld%lld",&n,&m);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			scanf("%lld",&g[find(i,j)]);
		}
	}
	int l = 1,r = min(n,m),ans = -1;
	while(l <= r){
		int mid = l + r >> 1;
		if(check(mid)) ans = mid,l = mid + 1;
		else r = mid - 1;
	}
	printf("%lld\n",ans);
}
signed main(){
	int _;
	for(cin>>_;_;_--) solve();
	return 0;
} 

E. Graph Cost

在这里插入图片描述

题意:

给你一个n和m,现在有一个点数为n的图,一开始是没有边的,有一种操作,你可以选一个数k,然后加k+1条边,这些边的两个端点的最大公约数必须是k,不能出现重边,自环,每进行一步操作就会产生k+1的代价,现在问你正好添加m条边的最小代价是多少,如果没有的话就输出-1。

思路:

首先要预处理出来每一个最大公约数有多少点对,这个有两种办法,莫比乌斯反演和dp,我这里用的是dp,首先k的倍数有n/k个,然后只需要k的一倍就行,所以说就可以从大到小dp,然后调和级数算出来时间复杂度是O(nlogn)
,然后从大到小贪心就行,下面看代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long 
const int N = 1e6+10;
int dp[N];

void solve(){
	int n,m;
	scanf("%lld%lld",&n,&m);
	for(int i=n;i>=2;i--){
		dp[i] = (n/i)*(n/i-1)/2;
		for(int j=2*i;j<=n;j+=i) dp[i] -= dp[j];
	}	
	int ans = 0;
	for(int i=n;i>=2;i--){
		if(m < i-1) continue;
		int k = m / (i-1),l = dp[i] / (i-1);
		m -= min(k,l)*(i-1);
		ans += min(k,l)*i;
		if(m == 0) break;
	}
	if(m) printf("-1\n");
	else printf("%lld\n",ans);
}
signed main(){
	int _;
	for(cin>>_;_;_--) solve();
	return 0;
} 

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

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

相关文章

Spring 中运用的 9 种设计模式

Spring中涉及的设计模式总结&#xff0c;在面试中也会经常问道 Spring 中设计模式的问题。本文以实现方式、实质、实现原理的结构简单介绍 Sping 中应用的 9 种设计模型&#xff0c;具体详细的刨析会在后面的文章发布&#xff0c;话不多说&#xff0c;来个转发、在看、收藏三连…

京东软件测试岗:惨不忍睹的三面,幸好做足了准备,月薪17k,已拿offer

我今年25岁&#xff0c;专业是电子信息工程本科&#xff0c;19年年末的时候去面试&#xff0c;统一投了测试的岗位&#xff0c;软件硬件都有&#xff0c;那时候面试的两家公司都是做培训的&#xff0c;当初没啥钱&#xff0c;他们以面试为谎言再推荐去培训这点让我特别难受。 …

Unity 搭建ILRuntime开发环境

Unity热更新目前主流的方案有: Lua, ILRuntime, puerts, huatuo方案。前两个大家都比较熟悉了&#xff0c;puerts 是基于TypeScript开发的热更新&#xff0c;huatuo是基于C#的方案。后两个大家会比较陌生。本系列分享基于ILRuntime来做热更新。 对啦&#xff01;这里有个游戏开…

【财务】FMS财务管理系统---存货管理

前一篇文章介绍了付款相关的内容&#xff0c;本文中笔者继续介绍FMS财务管理系统的设计&#xff0c;今天是关于存货管理的介绍。 财务存货管理应该就是针对公司的生产原材料、物料、成品、加工品的数量与金额的管控。 在前面也介绍了&#xff0c;存货属于公司的资产&#xff0…

纯Java实现一个网页版的Xshell

前言 最近由于项目需求&#xff0c;项目中需要实现一个WebSSH连接终端的功能&#xff0c;由于自己第一次做这类型功能&#xff0c;所以首先上了GitHub找了找有没有现成的轮子可以拿来直接用&#xff0c;当时看到了很多这方面的项目&#xff0c;例如&#xff1a;GateOne、webss…

微信小程序实现身份证识别-orc

项目中有一个识别身份证的需求&#xff0c;经过调研&#xff0c;最后决定使用微信小程序orc插件进行开发。 一:首先登录小程序公众平台。 1:进入设置> 第三方设置。 2:添加ocr插件。 3:添加完后&#xff0c;需要领取免费额度&#xff0c;100次/天。 https://fuwu.weixin…

SpringBoot+Vue实现后疫情时代下的旅游管理系统

文末获取源码 开发语言&#xff1a;Java 使用框架&#xff1a;spring boot 前端技术&#xff1a;JavaScript、Vue.js 、css3 开发工具&#xff1a;IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库&#xff1a;MySQL 5.7/8.0 数据库管理工具&#xff1a;phpstudy/Navicat JD…

Linux高级之日志管理

Linux高级之日志管理1.系统常用日志2.日志服务的稳定性3.自定义日志服务4.日志轮替5.内存日志1.系统常用日志 日志文件用于记录linux系统的各种运行信息的文件&#xff0c;相当于linux主机的日记&#xff0c;不同的日志文件记载了不同类型的信息,如Linux内核消息、用户登录事件…

React学习04-React_Ajax

写在前面 React本身只关注于界面&#xff0c;并不包含发送ajax请求的代码前端应用需要通过ajax请求与后台进行交互&#xff08;json数据&#xff09;React应用中需要集成第三方ajax库&#xff08;或自己封装&#xff09; 常用的ajax请求库 jQuery&#xff1a;比较重&#xf…

C|%输出各种类型的值总结

参考&#xff1a; C语音输出各种类型数据的方式 c语言中%s的用法 %d&#xff1a;十进制有符号整数 输出的数据范围是 signed int 的范围&#xff0c;即 0x80000000 ~ 0x7FFFFFFF&#xff08;-2147483648~2147483647&#xff09; %u&#xff1a;十进制无符号整数 输出范围0~0xF…

JVM-垃圾回收

1、GC分类 &#xff08;1&#xff09;部分收集&#xff08;Partial GC&#xff09; 新生代收集&#xff08;Minor GC/Young GC&#xff09;&#xff1a;只对新生代进行垃圾收集。&#xff08;读音[ˈmaɪnə(r)]&#xff09; 老年代收集&#xff08;Major GC/Old GC&#xff09…

基于SpringBoot+mybatis+mysql+html家具城进销存管理系统

基于SpringBootmybatismysqlhtml家具城进销存管理系统一、系统介绍二、功能展示1.用户登陆2.进货管理(货物管理员)3.退货管理&#xff08;货物管理员&#xff09;4.商品销售、商品销售退货(商品管理员)5.管理商品、商品类别、供应商、客户&#xff08;商品管理员&#xff09;6.…

DirtyPipe(CVE-2022-0847)漏洞分析

前言 CVE-2022-0847 DirtyPipe脏管道漏洞是Linux内核中的一个漏洞&#xff0c;该漏洞允许写只读文件&#xff0c;从而导致提权。 调试环境 ubuntu 20.04Linux-5.16.10qemu-system-x86_64 4.2.1 漏洞验证 首先创建一个只读文件foo.txt&#xff0c;并且正常情况下是无法修改…

微信小程序集成three.js--6.利用raycastor选择对象

1.实例演示 小程序集成Three.js&#xff0c;利用raycaster实现对象的2.源码 &#xff08;1&#xff09;引入库并声明变量 import * as THREE from ../../libs/three.weapp.js import {OrbitControls } from ../../jsm/controls/OrbitControls const app getApp()// 声明一个…

知识付费系统源码搭建流程讲解、代码分析

知识付费系统是现在多数教培机构优先考虑的线上教学系统&#xff0c;而很多机构自身有技术人员常驻&#xff0c;所以不需要再花费资金去直接购买搭建好的成品系统&#xff0c;转而直接购买源码后&#xff0c;自行搭建配置。 目前&#xff0c;知识付费系统是许多教培机构转型的首…

BOSS直聘自动投简历聊天机器人的实现过程

这两年疫情&#xff0c;公司业务越来越差&#xff0c;必须得准备后路了&#xff0c;每天睡前都会在直聘上打一遍招呼&#xff0c;一直到打哈欠有睡意为止...,这样持续了一周&#xff0c;发现很难坚持&#xff0c;身为一名资深蜘蛛侠&#xff0c;怎么能这样下去呢&#xff1f;于…

Jmeter二次开发实现rsa加密

jmeter函数助手提供了大量的函数&#xff0c;像 counter、digest、random、split、strLen&#xff0c;这些函数在接口测试、性能测试中大量被使用&#xff0c;但是大家在实际工作&#xff0c;形形色色的测试需求不同&#xff0c;导致jmeter自带或者扩展插件给我们提供的函数无法…

LeetCode —— 二叉树

持续更新中................ 二叉树的定义 public class TreeNode {int val;TreeNode left;TreeNode right;public TreeNode() {}public TreeNode(int val) {this.val val;}public TreeNode(int val, TreeNode left, TreeNode right) {this.val val;this.left left;this.r…

nginx看这一篇文章就够了

一、Nginx简介 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器。是由伊戈尔赛索耶夫为俄罗斯访问量第二的Rambler.ru站点&#xff08;俄文&#xff1a;Рамблер&#xff09;开发的。其特点是占有内存少&#xff0c…

智能机柜PDU助力中小型数据中心机房末端配电系统建设

数据中心作为我国已确定“新基建”的七大领域之一&#xff0c;在国民经济和社会发展中扮演中越来越重要的角色&#xff0c;成为各行各业的关键基础设施&#xff0c;为各产业转型升级提供了重要支撑。据相关数据显示&#xff0c;2018年至今&#xff0c;我国的数据中心市场年均复…