Codeforces Round 960 (Div. 2)

news2024/12/28 17:44:23

文章目录

  • 题目链接
  • A. Submission Bait
  • B. Array Craft
  • C. Mad MAD Sum

题目链接

点击跳转codeforces

A. Submission Bait

 这是一道博弈题,比较简单,但是赛时直接就WA了两发,刚开始把题想简单了,第二发没有考虑清楚。
 题意:一串数字,Alice如果选了6,那么Bob必须选择大于等于6的数,然后Alice再选择大于等于Bob的数字,如此以往,谁选不到谁就输了
 思路:将每个数字出现的次数统计起来,从大到小遍历每个数字出现的次数,如果有一个是奇数的话,Alice就赢,否则就Bob赢。
因为假如是5,5,5,5,5,4,3,1,4,2的排列的话,我Alice直接选最大的5,那Bob就只能选5,选到最后一定是Bob输,我们用一个map数组,然后从后往前遍历,出现奇数个的就输出YES,否则到最后再输出NO

#include <bits/stdc++.h>
#define int long long 
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define fi first
#define se second
#define PII pair <int,int>
#define ALL(x) x.begin(),x.end()
#define lowbit(x) (x&(-x))
using namespace std;
const int N = 1e6+5;
int mp[N];
int a[N];
void solve () {
	memset(mp,0,sizeof(mp));
	int n;cin>>n;
	for (int i=1;i<=n;i++) {
		cin>>a[i];mp[a[i]]++;
	}
	for (int i=50;i>=1;i--) {
		if (mp[i]) {
			if (mp[i]&1) {
				cout<<"YES"<<'\n';return ;
			}
		}
	}
	cout<<"NO"<<'\n';
	
}

signed main () {
	IOS;
	int T =1;
	cin>>T;
	while(T--) solve ();
	return 0;
}

B. Array Craft

这是一道构造题,让构造出一个数组满足以上的条件:

  • 最大前缀的最小位置在x
  • 最大后缀的最大位置在y
  • 数组都是1或者-1
    我一开始的思想是将x,y里面的数字全部变成1,以外的数字都是-1.但是赛时我发现了,这样就不满足前两个条件了如果是-1,-1,-1,-1,-1,1,1,1,-1,-1,-1,-1这样的数组,从前加到最后一个1值是-2,但是从前往后加为-2的地方的最小的位置是第二个-1的位置,所以我们要构造前面加起来大于-2的值,那为什么是-2呢,因为x,y之间的和最小就是2,而且在y-1和x+1的位置都要是-1,然后再往两边构造,-1,1交替出现
#include <bits/stdc++.h>
#define int long long 
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define fi first
#define se second
#define PII pair <int,int>
#define ALL(x) x.begin(),x.end()
#define lowbit(x) (x&(-x))
using namespace std;
const int N = 1e5+5;
int a[N],b[N];

void solve () {
//如果在这里对a,b数组初始化的话,会降低效率,容易超时,我就超了一次
	int n,y,x;cin>>n>>y>>x;
	int k=0;
	for (int i=x-1;i>=1;i--) {
		if (k%2==0)
		a[++k]=-1;
		else a[++k]=1;
	}
	for (int i=k;i>=1;i--) cout<<a[i]<<' ';
	for (int i=x;i<=y;i++) cout<<"1"<<' ';
	k=0;
	for (int i=y+1;i<=n;i++) {
		if (k%2==0)
		b[++k]=-1;
		else b[++k]=1;
	}
	for (int i=1;i<=k;i++) cout<<b[i]<<' ';
}

signed main () {
	IOS;
	int T =1;
	cin>>T;
	while(T--) solve ();
	return 0;
}

C. Mad MAD Sum

在这里插入图片描述
 一道难度不小的思维题我认为,数组在经过第一次变化之后会变成一个非递减序列,我们将样例多变化几次就可以发现似乎是在每次向右移动一位一样,例如:1,2,3,4,5,5,6,7,7,9,6,5,9,9会变化成0,0,0,0,0,5,5,5,7,7,7,7,9,9,然后变化成0,0,0,0,0,0,5,5,5,7,7,7,7,9,然后变成0,0,0,0,0,0,0,5,5,5,7,7,7,7可以看出来向右移动一位。但是不都是这样的,例如2,1,1,2,2,2变成0,0,1,2,2,2,变成0,0,0,0,2,2就不是单纯向右移动一位了,只有一个一样的就是会出现这种情况,我们只需要将原数组操作两次就可以往右一直移动求和了。

#include <bits/stdc++.h>
#define int long long 
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define fi first
#define se second
#define PII pair <int,int>
#define ALL(x) x.begin(),x.end()
#define lowbit(x) (x&(-x))
using namespace std;
const int N = 1e6+5;
int a[N],b[N];

void solve () {
	int n;cin>>n;int sum=0;
	for (int i=1;i<=n;i++) {
		cin>>a[i];sum+=a[i];
	}	
	if (n==1) {
		cout<<sum<<'\n';return ;
	}
	int f=1;int flag=1;int cnt=0;int pos=0;
	map<int,int>mp;int my=0;
	for (int i=1;i<=n;i++) {
		mp[a[i]]++;
		if(mp[a[i]]>=2) {
			if (a[i]>my) my=a[i];
		}		
		a[i]=my;sum+=my;
	}
	map<int,int>mp1;my=0;
	for (int i=1;i<=n;i++) {
		mp1[a[i]]++;
		if(mp1[a[i]]>=2) {
			if (a[i]>my) my=a[i];
		}		
		if (my==0) cnt++;	
		a[i]=my;pos+=my;
	}
	int t=n-cnt;
	for (int i=1;i<=t;i++) {
		sum+=pos;
		pos-=a[n-i+1];
	}
	cout<<sum<<'\n';
}

signed main () {
	IOS;
	int T =1;
	cin>>T;
	while(T--) solve ();
	return 0;
}

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

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

相关文章

【云原生】Prometheus 服务自动发现使用详解

目录 一、前言 二、Prometheus常规服务监控使用现状​​​​​​​ 2.1 Prometheus监控架构图 2.2 Prometheus服务自动发现的解决方案 三、Prometheus服务自动发现介绍 3.1 什么是Prometheus服务自动发现 3.2 Prometheus自动服务发现策略 3.3 Prometheus自动服务发现应用…

又缩水Unity7月闪促限时4折活动模块化角色模板编辑器场景美术插件拖尾怪物3D模型UI载具AI对话TPS飞机RPG和FPS202407

Flash Deals are Coming Back! 限时抢购又回来了&#xff01; July 17, 2024 8:00:00 PT to July 24, 2024 7:59:00 PT 太平洋时间 2024 年 7 月 17 日 8&#xff1a;00&#xff1a;00 至 2024 年 7 月 24 日 7&#xff1a;59&#xff1a;00&#xff08;太平洋时间&#xff09;…

ThreadX打印tick(时钟滴答)方法

0 工具准备 ThreadX V6.2.0 1 ThreadX打印tick&#xff08;时钟滴答&#xff09;方法 int ostick(void) {printf("tick : %lu\r\n", _tx_time_get());return 0; }打印效果展示&#xff1a;

240717.LeetCode——2974.最小数字游戏

题目描述 你有一个下标从 0 开始、长度为 偶数 的整数数组 nums &#xff0c;同时还有一个空数组 arr 。Alice 和 Bob 决定玩一个游戏&#xff0c;游戏中每一轮 Alice 和 Bob 都会各自执行一次操作。游戏规则如下&#xff1a; 每一轮&#xff0c;Alice 先从 nums 中移除一个 …

[译] Rust项目的基础设施

本篇是对 RustConf 2023中的Infrastructure for Rust这一视频的翻译与整理, 过程中为符合中文惯用表达有适当删改, 版权归原作者所有. 我今天要和大家讨论支持Rust及Rust项目的基础设施。Rust是一门令人惊叹的语言,我非常喜欢它,看到它的普及度和社区的成长令人非常满意。但从项…

电力需求预测挑战赛笔记 Task3 #Datawhale AI 夏令营

上文&#xff1a; 电力需求预测挑战赛笔记 Task2 #Datawhale AI 夏令营-CSDN博客文章浏览阅读80次。【代码】电力需求预测挑战赛笔记 Task2。https://blog.csdn.net/qq_23311271/article/details/140360632 前面我们介绍了如何使用经验模型以及常见的lightgbm决策树模型来解决…

GIT命令学习 一

📑打牌 : da pai ge的个人主页 🌤️个人专栏 : da pai ge的博客专栏 ☁️宝剑锋从磨砺出,梅花香自苦寒来 ☁️运维工程师的职责:监控,备份,应急故障处理 ​​

Django教程(003):orm操作数据库

文章目录 1 orm连接Mysql1.1 安装第三方模块1.2 ORM1.2.1、创建数据库1.2.2、Django连接数据库1.2.3、django操作表1.2.4、创建和修改表结构1.2.5、增删改查1.2.5.1 增加数据1.2.5.2 删除数据1.2.5.3 获取数据1.2.5.4 修改数据 1 orm连接Mysql Django为了使操作数据库更加简单…

企业im是什么?

企业IM&#xff08;Enterprise Instant Messaging&#xff09;是为企业提供的一种专业化即时通讯系统&#xff0c;也被称为企业级即时通讯。WorkPlus作为一种企业级即时通讯系统&#xff0c;为企业提供了全面的通讯和协作解决方案。本文将详细介绍企业IM的概念、作用以及WorkPl…

lse:一款专为渗透测试和CTF设计的Linux枚举工具

关于linux-smart-enumeration linux-smart-enumeration是一款专为渗透测试和CTF设计的Linux枚举工具&#xff0c;该工具可以帮助广大研究人员收集与本地Linux系统安全相关的信息。 工具特性 该工具从2.0版本开始符合POSIX标准&#xff0c;并且经过了shellcheck和posh测试。它…

【数据库系列】OLTP、OLAP 与 HTAP:数据库系统的三种架构

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

记录些MySQL题集(16)

MySQL 存储过程与触发器 一、初识MySQL的存储过程 Stored Procedure存储过程是数据库系统中一个十分重要的功能&#xff0c;使用存储过程可以大幅度缩短大SQL的响应时间&#xff0c;同时也可以提高数据库编程的灵活性。 存储过程是一组为了完成特定功能的SQL语句集合&#x…

spring security源码追踪理解(一)

一、前言 近期看了spring security相关的介绍&#xff0c;再加上项目所用若依框架的底层安全模块也是spring security&#xff0c;所以想从源码的角度加深下对该安全模块的理解&#xff08;看源码之前&#xff0c;我们要先有个意识&#xff0c;那就是spring security安全模块主…

阵列信号处理学习笔记(二)--空域滤波基本原理

阵列信号 阵列信号处理学习笔记&#xff08;一&#xff09;–阵列信号处理定义 阵列信号处理学习笔记&#xff08;二&#xff09;–空域滤波基本原理 文章目录 阵列信号前言一、阵列信号模型1.1 信号的基本模型1.2 阵列的几何构型1.3 均匀直线阵的阵列信号基本模型 总结 前言…

【C语言】 链表实现学生管理系统(堆区开辟空间)

总体思路都能写出来&#xff0c;问题是感觉稍微比之前的麻烦一些&#xff0c;在刚开始创建结构体的时候&#xff0c;并没有去按照链表的思路去写&#xff0c;导致写成了顺序表&#xff0c;后面就一直纠结空间怎么开辟。 链表是由一个头节点和其它申请出来的小节点连起来的&…

UE4学习过程记录——无法更改默认pawn类

一、概述 需要学习UE4&#xff0c;在跟着官方网站的教程中出现一些问题&#xff0c;在这里记录下来。 二、问题阐述 如图所示&#xff0c;在UE4中无法更改默认的pawn类&#xff0c;其下拉无法进行下拉。 三、问题解决 如图所示&#xff0c;需要注意&#xff0c;这个地方在游戏…

SpringMvc有几个上下文

你好&#xff0c;我是柳岸花明。 SpringMVC作为Spring框架的重要组成部分&#xff0c;其启动流程和父子容器机制是理解整个框架运行机制的关键。本文将通过一系列详细的流程图&#xff0c;深入剖析SpringMVC的启动原理与父子容器的源码结构。 SpringMVC 父子容器 父容器的创建 …

【人工智能】深度剖析AI伦理:强化隐私防线,推动算法公平性的核心议题

文章目录 &#x1f34a;1 人工智能兴起背后的伦理及道德风险1.1 算法偏见与歧视1.2 数据隐私侵权1.3 透明度受限1.4 决策失衡1.5 AI生成内容的危险性 &#x1f34a;2 建构AIGC伦理观&#xff1a;实现人机共创的永续提升2.1 技术手段与伦理预防2.2 即时警告与紧急关停措施2.3 法…

.NET 通过系统影子账户实现权限维持

01阅读须知 此文所节选自小报童《.NET 内网实战攻防》专栏&#xff0c;主要内容有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧。 02基本介绍 03编码实现 在 Windows 操作系统中&#xff0c;影子用户通常是指那些不易被普通用户或系统管理员察觉的隐藏用户账户&…

Linux openEuler_24.03部署MySQL_8.4.0 LTS安装实测验证安装以及测试连接全过程实操手册

Linux openEuler_24.03部署MySQL_8.4.0 LTS安装实测验证安装以及测试连接全过程实操手册 前言: 什么是 MySQL? MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于Oracle 公司。MySQL 是一种关系型数据库管理系统,关系型数据库将数据保存在不同的表中,…