acwing86场周赛题解(模拟,dp,数学推导式)

news2024/12/23 17:28:35

目录

第一题:AcWing 4794. 健身

思路

核心代码

完整代码

第二题:4795. 安全区域

思路 

核心代码

完整代码

第三题:4796. 删除序列

思路

核心代码

完整代码

谢谢您的阅读


第一题:AcWing 4794. 健身

4794. 健身

李华一共要进行 nn 组健身训练。

其中,第 ii组训练的时长为 ai。

李华只做三种运动:胸部(chest)运动、二头肌(biceps)运动、背部(back)运动。

而且,三种运动是循环训练的,也就是说他第一组训练是胸部运动,第二组训练是二头肌运动,第三组训练是背部运动,第四组训练是胸部运动,第五组训练是二头肌运动......以此类推直到做完第 nn 组训练。

请你计算,他做哪种运动的时长最长。

输入格式

第一行包含整数 nn。

第二行包含 nn 个整数 a1,a2,…,ana1,a2,…,an。

输出格式

共一行,如果训练时长最长的运动为:

  • 胸部运动,则输出 chest
  • 二头肌运动,则输出 biceps
  • 背部运动,则输出 back

数据保证训练时长最长的运动是唯一的。

数据范围

前 33 个测试点满足 1≤n≤71≤n≤7。
所有测试点满足 1≤n≤201≤n≤20,1≤ai≤251≤ai≤25。

输入样例1:

2
2 8

输出样例1:

biceps

输入样例2:

3
5 1 10

输出样例2:

back

输入样例3:

7
3 3 2 7 9 6 8

输出样例3:

chest

思路

因为他是三个一循环,所以如果本次%3 = 0,就说明他在做背部运动,如果%3 =1,那么他一定是在做胸部运动,如果%3 = 2,那么他一定是在做二头肌运动。

核心代码

//核心计算 
 	for(int i = 1; i <= n; i++)
 	{
 		if(i % 3 == 0) back += a[i];//如果i % 3 = 0, 那么他一定是在做背部运动(因为三个一循环) 
 		if(i % 3 == 1) chest += a[i];//如果i % 3 = 1, 那么他一定是在做胸部运动(因为三个一循环)
 		if(i % 3 == 2) biceps += a[i];//如果i % 3 = 2, 那么他一定是在做二头肌运动(因为三个一循环)
 	}

完整代码

/*
	Name: 4794.健身 
	Copyright: 
	Author: 不怕困难的博客 
	Date: 17/01/23 19:08
	Description: 
*/

#include <bits/stdc++.h>
using namespace std;
int a[100000];
int n, chest, biceps, back;//chest为胸部运动总时间,biceps为二头肌运动总时间,back为背部运动总时间 
int main()
{
	//读入数据 
 	cin >> n;
 	for(int i = 1; i <= n; i++) cin >> a[i];
 	//核心计算 
 	for(int i = 1; i <= n; i++)
 	{
 		if(i % 3 == 0) back += a[i];//如果i % 3 = 0, 那么他一定是在做背部运动(因为三个一循环) 
 		if(i % 3 == 1) chest += a[i];//如果i % 3 = 1, 那么他一定是在做胸部运动(因为三个一循环)
 		if(i % 3 == 2) biceps += a[i];//如果i % 3 = 2, 那么他一定是在做二头肌运动(因为三个一循环)
 	}
 	//判断大小并输出答案 
 	if(chest > biceps && chest > biceps) cout << "chest" << endl;
 	if(biceps > chest && biceps > back) cout << "biceps" << endl;
 	if(back > chest && back > biceps) cout << "back" << endl;
    return 0;
}

第二题:4795. 安全区域

4795. 安全区域

给定一个 n×nn×n 的方格棋盘和 mm 个国际象棋中的车。

对于一个方格,如果该方格满足以下两个条件中的至少一个,则该方格会被车攻击到:

  • 该方格内有车。
  • 至少有一个车与该方格位于同一行或同一列。

现在,我们要将 mm 个车逐个放入到棋盘中,其中第 ii 个车放到棋盘的第 xixi 行第 yiyi 列的方格中。

车的编号从 11 到 mm,行/列的编号从 11 到 nn。

保证任意两个车不会放到同一个方格中。

对于 1≤i≤m1≤i≤m,请你计算,将前 ii 个车放入到棋盘中后,有多少个方格不会被车攻击到。

输入格式

第一行包含两个整数 n,mn,m。

接下来 mm 行,其中第 ii 行包含两个整数 xi,yixi,yi,表示第 ii 个车放到棋盘的第 xixi 行第 yiyi 列的方格中。

输出格式

在 11 行内输出 mm 个数,其中第 ii 个数表示将前 ii 个车放入到棋盘中后,不会被车攻击到的方格数量。

数据范围

前 33 个测试点满足 1≤m≤31≤m≤3。
所有测试点满足 1≤n≤1051≤n≤105,1≤m≤min(105,n2)1≤m≤min(105,n2),1≤xi,yi≤n1≤xi,yi≤n。

输入样例1:

3 3
1 1
3 1
2 2

输出样例1:

4 2 0

输入样例2:

5 2
1 5
5 1

输出样例2:

16 9

输入样例3:

100000 1
300 400

输出样例3:

9999800001

思路 

不知道大家有没有发现一个规律,我们拿第一个样例数据举个例子。

绿色表示能放的位置。

第一行数据是1 1,根据题意可知,第一行不能放了,第一列也不能放了,所以剩余的变成了这样:

 

 

第二行数据是:3 1,我们把第3行和第一列上色, 就变成了这样;

 第三行数据为:2 2,我们把第2行和第2列上色, 就变成了这样;

 我们很容易发现公式可以不被攻击的数量 = (n - 有小车的行数)* (n - 有小车的列数);

核心代码

for(int i = 1; i <= m; i++)
 	{
 		cin >> x >> y;
 		if(a[x] == 0)//如果x行没有过小车,现在开始有了,有小车的行数++ 
 		{
 			l++;
 			a[x] = 1;
 		}
 		if(b[y] == 0)//如果y列没有过小车,现在开始有了,有小车的列数++ 
 		{
 			r++;
 			b[y] = 1;
 		}
 		cout << (long long)(n - r) * (long long)(n - l) << " ";//输出答案 
 	}

完整代码

/*
	Name: 安全区域 
	Copyright: 
	Author: 不怕困难的博客 
	Date: 17/01/23 19:43
	Description: 
*/

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int a[N], b[N];//a[i] = 1表示有小车在第i行,b[i] = 1表示有小车在第i列 
long long n, m, x, y;
int main()
{
 	cin >> n >> m;
 	long long l = 0, r = 0;
 	for(int i = 1; i <= m; i++)
 	{
 		cin >> x >> y;
 		if(a[x] == 0)//如果x行没有过小车,现在开始有了,有小车的行数++ 
 		{
 			l++;
 			a[x] = 1;
 		}
 		if(b[y] == 0)//如果y列没有过小车,现在开始有了,有小车的列数++ 
 		{
 			r++;
 			b[y] = 1;
 		}
 		cout << (long long)(n - r) * (long long)(n - l) << " ";//输出答案 
 	}
    return 0;
}

第三题:4796. 删除序列

 4796. 删除序列

给定一个长度为 n 的正整数序列 a1,a2,…,an。

你可以进行任意次删除操作。

每次删除操作分为两步:

  1. 选择序列中的一个元素(不妨设其元素值为 x),并将这一个元素删除,这可以给你加 x分。
  2. 所有元素值为 x−1 和 x+1 的元素(如果有的话)从序列中删除,这不会给你带来任何分数。

请计算,通过删除操作,你可以获得的最大得分。

输入格式

第一行包含整数 n。

第二行包含 n 个正整数 a1,a2,…,an。

输出格式

一个整数,表示可以获得的最大得分。

数据范围

前 6 个测试点满足 1≤n≤10。
所有测试点满足 1≤n≤10^{5},1≤ai≤10^{5}

输入样例1:

2
1 2

输出样例1:

2

输入样例2:

3
1 2 3

输出样例2:

4

输入样例3:

9
1 2 1 3 2 2 2 2 3

输出样例3:

10

思路

因为选了一次 x之后 , 所有 x−1 和 x+1都被删除,第二次选时不会删任何数。

所以所有相同的数字要么全选,要么全不选。

设 num[i] 表示所有数字 i的价值,若有 c 个 i ,则 num[i]=c⋅i
设 dp[i]表示 数字 1到 i 获得的最大收益。

状态转移方程为

dp[i]=max(dp[i−1],dp[i−2]+num[i])

核心代码

dp[1] = num[1];
    for(int i = 2; i <= maxx; ++ i)
	{
        dp[i] = max(dp[i - 1], dp[i - 2] + num[i]);
    }

完整代码

#include <bits/stdc++.h>
using namespace std;
#define LL long long
const int N = 1e5 + 10;
LL num[N], dp[N], maxx;
int n;
int main()
{
    cin >> n;
    LL x;
    for(int i = 1; i <= n; i++)
	{
        scanf("%lld", &x);
        num[x] += x;
        maxx = max(maxx, x);
    }
    dp[1] = num[1];
    for(int i = 2; i <= maxx; ++ i)
	{
        dp[i] = max(dp[i - 1], dp[i - 2] + num[i]);
    }

    cout << dp[maxx] << endl;
    return 0;
}

谢谢您的阅读

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

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

相关文章

配置与管理DNS服务器

DNS概念 DNS是一种新的主机名称和IP地址转换机制&#xff0c;使用分层的分布式数据库来处理Internet上众多的主机和IP地址转换。当一个应用需要将域名翻译成为IP地址时&#xff0c;这个应用便成为域名系统的一个客户。这个客户将待翻译的域名放在一个DNS请求信息中&#xff0c;…

CHAPTER 10 Web服务与应用(二)

Web服务与应用10.1 Tomcat10.1.1 准备工作10.1.2 编写dockerfile10.1.3 创建tomcat用户和密码脚本文件10.1.4 编写启动脚本10.1.5 创建和测试镜像10.1.6 相关资源10.2 Jetty10.2.1 使用官方镜像10.2.2 相关资料10.3 LAMP10.3.1 使用官方镜像10.4 持续开发与管理10.4.1 Jenkins及…

[前端笔记——HTML介绍] 5.文档与网站架构

[前端笔记——HTML介绍] 5.文档与网站架构1.文档的基本组成部分&#xff08;1&#xff09;页眉&#xff08;2&#xff09;导航栏&#xff08;3&#xff09;主内容&#xff08;4&#xff09;侧边栏&#xff08;5&#xff09;页脚2.用于构建内容的HTML3.HTML布局元素细节3.1无语义…

205:vue+openlayer: 点击某feature,列表滑动,定位到相应的点的列表位置

第205个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers做一个互动,点击某个feature,在左侧的列表中显示出来,滚动条滑动,能显示在视觉区内。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果; 注意如果OpenStreetMap无法加载,请加载其…

HTB打靶(Active Directory 101 Resolute)

nmap扫描 nmap -A -T4 10.10.10.169 Starting Nmap 7.93 ( https://nmap.org ) at 2023-01-16 01:30 EST Stats: 0:00:04 elapsed; 0 hosts completed (1 up), 1 undergoing SYN Stealth Scan SYN Stealth Scan Timing: About 74.65% done; ETC: 01:30 (0:00:01 remaining) St…

Maven学习(一):Maven简介及安装配置

Maven简介及安装配置一、Maven简介1.1、Maven是什么1.2、Maven的作用二、Maven安装配置2.1、大前提2.2、Maven下载2.3、windows版1、安装2、配置环境3、配置本地仓库2.4、mac版1、安装2、配置环境3、需要注意的点4、配置本地仓库一、Maven简介 1.1、Maven是什么 先对Maven做一…

从 Spectral Clustring 推导到 Regularized Diffusion Process

Spectral Clustring 参考&#xff1a;bilibili 机器学习-白板推导系列(二十二)-谱聚类&#xff08;Spectral Clustering&#xff09; Background 首先看一种数据分布&#xff1a; 对于以上分布的数据&#xff0c;可以直接利用K−meansK-meansK−means或者GMM&#xff08;高…

2、linux_CentOS_6_64位常用命令远程操作--yum云用不了_建议学习Ubuntu

Linux的概述 学习Linux之前先了解Unix Unix是一个强大的多用户、多任务操作系统。于1969年在AT&T的贝尔实验室开发。UNIX的商标权由国际开放标准组织&#xff08;The Open Group&#xff09;所拥有。UNIX操作系统是商业版&#xff0c;需要收费&#xff0c;价格比Microsof…

洞悉获客之道,林肯汽车开展高端社区精准营销俘获消费者芳心

一、出场即焦点 全新领航员诠释顶级美式豪华“强大的外部气场&#xff0c;肌肉与优雅完美结合”&#xff0c;一直以来&#xff0c;美式豪华汽车以沉稳、古典的高端奢华气质演绎“出场即焦点”的恢弘气场&#xff0c;吸引着无数精英人士为之着迷、追捧。2022 年&#xff0c;林肯…

C/C++宏定义注意事项

宏定义后不能加“&#xff1b;”&#xff0c;如果想查找宏可能带来的bug,可以增加编译选项&#xff1a;/P&#xff0c;然后选择仅编译&#xff0c; 这时会生成*.i的文件&#xff0c;打开后可以看到编译器替换宏以后的实际内容&#xff0c;然后再去查看相关的替换有没有错误。带…

夏普MX-M2658N复印机显示请放入载体组件

故障描述: 一台夏普MX-M2658N复印机一开机就显示请放入载体组件,重新再次开机有可能不显示但是复印或打印的时候一定会卡纸,卡纸有时候卡在硒鼓附近或者加热组件的位置; 故障处理: 1、碳粉质量差; 2

fiddler的自动响应器_小实验

目录 一、小实验介绍 二、fiddler的自动响应器的应用 1.找对自动响应器的位置&#xff0c;添加规则 2.编辑规则&#xff0c;将这个请求用fiddler的内置响应&#xff1b; 3.编辑规则&#xff0c;将这个请求重定向到本地资源&#xff1b; 4.编辑响应 一、小实验介绍 承接上…

【自学Docker 】Docker ps命令

Docker ps命令 大纲 Docker ps命令概述 docker ps 命令可以用来列出 Docker容器 相关信息。 Docker ps命令语法 haicoder(www.haicoder.net)# docker ps [OPTIONS]Docker ps命令参数 选项说明无参默认显示正在运行的容器。-a显示所有的容器&#xff0c;包括未运行的。-f根…

[HCTF 2018]admin (三种解法详细详解)

目录 信息收集 思路一&#xff1a;弱口令爆破 思路2&#xff1a;垂直越权 代码审计 Unicode欺骗 Unicode 简介 伪造flask session 信息收集 注册登录 然后查看源码 <!-- you are not admin --> 看来需要伪造admin的身份 在changepassword页面查看源代码 <!-…

C++ 语法基础课8 —— STL/位运算和常用库函数

文章目录STL1. #include\<vector>(尾部增删)(1) 声明(2) size/empty(3) clear(4) 迭代器(iterator)(5) begin/end(遍历)(6) front/back(7) push_back()/pop_back()2. #include\<queue>(队列先进先出)(1) 声明(2) 循环队列 queue(队列结构)(3) 优先队列 priority_qu…

基于Python分析气象数据教程-1

前言本笔记介绍了如何使用 Python、pandas 和 SciPy 对天气数据进行基本分析。 它不包含对气象科学的贡献&#xff0c;但说明了如何生成简单的图和基本模型来拟合一些真实的物理观测。一、相关库引入import numpy import scipy.stats import pandas import matplotlib.pyplot a…

【零基础】学python数据结构与算法笔记13-贪心算法

文章目录前言80.贪心算法&#xff08;新一章&#xff1a;算法进阶&#xff09;81.分数背包82.分数背包实现83.数字拼接问题84.数字拼接问题实现85.活动选择问题86.活动选择问题实现87.贪心算法总结总结前言 学习python数据结构与算法&#xff0c;学习常用的算法&#xff0c; b…

LeetCode(Array)1656. Design an Ordered Stream

1. 问题 There is a stream of n (idKey, value) pairs arriving in an arbitrary order, where idKey is an integer between 1 and n and value is a string. No two pairs have the same id. Design a stream that returns the values in increasing order of their IDs b…

2023年网络安全比赛--网页渗透测试中职组(超详细)

一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 1.访问服务器网站目录1,根据页面信息完成条件,将页面中的flag提交; 2.访问服务器网站目录2,根据页面信息完成条件,将页面中的flag提交; 3.访问服务器网站目录3,根据页面信息完成条件,将页面中的flag提交; 4.访问服务器网…

【Java】流式编程学习笔记

文章目录一、流简介二、创建流2.1 由值创建流&#xff1a;of2.2 由列表创建流&#xff1a;stream2.3 由 Builder 创建流&#xff1a;build2.4 由文件生成流&#xff1a;lines2.5 由函数生成流2.5.1 迭代&#xff08;如果不做限制&#xff0c;就是创建无限流&#xff09;&#x…