25.1.21学习内容

server/2025/1/22 14:30:41/

A - 我是循环大王

问题陈述

有 N 条蛇。

最初,第 i 条蛇的厚度为 Ti​,长度为 Li​。

蛇的重量定义为其厚度和长度的乘积。

对于每个满足 1≤k≤D 的整数 k,找出当每条蛇的长度增加 k 时,最重蛇的重量。

约束条件

  • 1≤N,D≤100

  • 1≤Ti,Li≤100

  • 所有输入值均为整数。

输入

输入通过标准输入以以下格式给出:

N   D
T1  ​ L1​
T2  ​ L2​

TN​   LN​

输出

打印 D 行。第 k 行应包含当每条蛇的长度增加k 时最重蛇的重量。

示例 1

InputcopyOutputcopy
4 3
3 3
5 1
2 4
1 10
12
15
20

当每条蛇的长度增加 1 时,蛇的重量变为 12,10,10,11,因此在第一行打印 12。

当每条蛇的长度增加 2 时,蛇的重量变为 15,15,12,12,因此在第二行打印 15。

当每条蛇的长度增加 3 时,蛇的重量变为 18,20,14,13,因此在第三行打印 20。

示例 2

InputcopyOutputcopy
1 4
100 100
10100
10200
10300
10400d

 代码:

#include<stdio.h>
int max(int a[][2],int n)
{int max_temp=0;for(int i=0;i<n;i++){a[i][1]++;int temp=a[i][0]*a[i][1];if(temp>max_temp)max_temp=temp;}return max_temp;
}
int main()
{int a,b,c[105][2];scanf("%d %d",&a,&b);for(int i=0;i<a;i++){scanf("%d %d",&c[i][0],&c[i][1]);}for(int i=0;i<b;i++){printf("%d\n",max(c,a));}return 0;
}

B - 林表明霁色

问题陈述

在某个星球上,有 N 外星人,他们都是未成年人。

第 i个外星人目前有 Ai 块石头,并将在 i 年后变成成年人。

当某人在这个星球上成为成年人时,每个拥有至少一块石头的成年人都会给刚刚成为成年人的外星人赠送一块石头作为祝贺礼物。

找出每个外星人在 N 年后将拥有多少块石头。

假设未来不会再出生新的外星人。

约束条件

  • 1≤N≤5×10^5

  • 0≤Ai≤5×10^5

  • 所有输入值均为整数。

输入

输入通过标准输入以以下格式给出:

N
A1​、A2​ …… AN​

输出

设 Bi​ 为第 i 个外星人在 N 年后拥有的石头数量。按顺序打印 B1,B2,…,BN​,用空格分隔。

示例 1

Input  输入Output  输出
4
5 0 9 3
2 0 10 5

设 Ci为某一时刻第 i 个外星人拥有的石头数量。

最初,(C1,C2,C3,C4)=(5,0,9,3)。

经过 1 年后,(C1,C2,C3,C4)=(5,0,9,3)。

经过 2 年后,(C1,C2,C3,C4)=(4,1,9,3)。

经过 3 年后,(C1,C2,C3,C4)=(3,0,11,3)。

经过 4 年后,(C1,C2,C3,C4)=(2,0,10,5)。

示例 2

Input  输入Output  输出
5
4 6 7 2 5
0 4 7 4 9

示例 3

Input  输入Output  输出
10
2 9 1 2 0 4 6 7 1 5
0 2 0 0 0 4 7 10 4 10

 代码:

注意:该代码的注释为AI添加,作者仅提供代码。

#include<stdio.h>
#include<string.h>int main()
{int a, temp = 0; // a: 外星人数量, temp: 当前外星人将获得的石头数量scanf("%d", &a); // 读取外星人数量int b[a], mark[a + 1], c[a]; // b: 每个外星人初始的石头数量, mark: 差分数组, c: 记录祝贺的外星人位置memset(mark, 0, sizeof(mark)); // 初始化mark数组为0for(int i = 0; i < a; i++){scanf("%d", &b[i]); // 读取每个外星人的初始石头数量if(b[i] - (a - 1 - i) >= 0) { // 判断当前外星人是否能祝贺后面的外星人b[i] -= (a - 1 - i); // 更新当前外星人的石头数量mark[i + 1]++; // 标记当前外星人可以祝贺mark[a]--; // 结束标记c[i] = a; // 记录可以祝贺到的外星人位置}else {mark[i + 1]++; // 标记当前外星人可以祝贺mark[a - ((a - 1 - i) - b[i])]--; // 更新祝贺的结束位置c[i] = a - ((a - 1 - i) - b[i]); // 记录可以祝贺到的外星人位置b[i] = 0; // 当前外星人没有石头}}for(int i = 0; i < a; i++){temp += mark[i]; // 更新当前外星人将获得的石头数量if(c[i] == a) b[i] += temp; // 如果已经给之后的每个外星人送出石头,则直接累加else {if(a - c[i] >= temp) { // 判断是否能给之后的每个外星人送出石头mark[c[i]]++; // 更新祝贺的开始位置mark[c[i] + temp]--; // 更新祝贺的结束位置}else { // 如果能给之后的每个外星人送出石头mark[c[i]]++; // 更新祝贺的开始位置b[i] = temp - (a - c[i]); // 剩下的石头}}printf("%d ", b[i]); // 输出每个外星人最终的石头数量}return 0; // 程序结束
}

E - 签到题OR送命题

在充满鳄鱼的佛罗里达大沼泽地漫游时,佛罗里达人遇到了一个非常奇特的对决。

有 n 片睡莲垫排成一排,从左到右编号为 1 到 n。爱丽丝和鲍勃是分别位于不同睡莲垫上的青蛙,位置分别为 a 和 b。他们轮流跳跃,爱丽丝先开始。

在青蛙的回合中,它可以向左或向右跳跃一个位置,只要目标睡莲垫存在。例如,在爱丽丝的第一次回合中,只要这些睡莲垫在范围内,她可以跳到睡莲垫 a−1 或 a+1。重要的是,每只青蛙 必须跳跃,而不能停留在同一个睡莲垫上。

然而,有一些限制:

  • 两只青蛙不能占据同一个睡莲垫。这意味着爱丽丝不能跳到鲍勃当前占据的睡莲垫,反之亦然。

  • 如果一只青蛙在其回合中无法进行有效的跳跃,它就会输掉游戏。因此,另一只青蛙获胜。

假设双方玩家都进行最佳游戏,确定爱丽丝是否能够保证获胜。可以证明,如果双方玩家都进行最佳游戏,游戏将在有限的回合后结束。

输入

每个测试包含多个测试用例。第一行包含测试用例的数量 t (1≤t≤500)。测试用例的描述如下。

每个测试用例的第一行也是唯一一行包含三个整数 n、a 和 b (2≤n≤100、1≤a,b≤n、a≠b) — 睡莲垫的数量,以及爱丽丝和鲍勃的起始位置。

注意,所有测试用例的 总和没有 限制。

输出

对于每个测试用例,打印一行,包含 "YES" 或 "NO",表示爱丽丝是否有获胜策略。

您可以以任何大小写输出答案(大写或小写)。例如,字符串 "yEs"、"yes"、"Yes" 和 "YES" 都会被识别为积极响应。

示例

Input  输入Output  输出
5
2 1 2
3 3 1
4 2 3
5 2 4
7 6 2
NO
YES
NO
YES
YES

注意

在第一个测试用例中,爱丽丝没有合法的移动。因此,爱丽丝在第一次回合中输掉了。

在第二个测试用例中,爱丽丝只能移动到睡莲垫 2。然后,鲍勃没有合法的移动。因此,在这种情况下,爱丽丝有一个获胜策略。

在第三个测试用例中,爱丽丝只能移动到睡莲垫 1。然后,鲍勃可以移动到睡莲垫 2。爱丽丝无法再移动并输掉了,鲍勃获胜。可以证明,无论爱丽丝如何移动,鲍勃总是能赢;因此,爱丽丝没有获胜策略。

代码:

#include<stdio.h>
#include<math.h>
int main()
{int a;scanf("%d",&a);for(int i=0;i<a;i++){int num,m,n;scanf("%d %d %d",&num,&m,&n);if((m==1&&n==2)||(m==num-1&&n==num)||m-n==1||n-m==1)printf("NO\n");else {if((int)fabs((double)n-m-1)%2==0)printf("NO\n");else printf("YES\n");}}return 0;
}

声明:所用题皆来自刷题网,作者仅用来向组织反馈学习情况,无任何盈利行为。


http://www.ppmy.cn/server/160483.html

相关文章

《自动驾驶与机器人中的SLAM技术》ch4:基于预积分和图优化的 GINS

前言&#xff1a;预积分图优化的结构 1 预积分的图优化顶点 这里使用 《自动驾驶与机器人中的SLAM技术》ch4&#xff1a;预积分学 中提到的散装的形式来实现预积分的顶点部分&#xff0c;所以每个状态被分为位姿&#xff08;&#xff09;、速度、陀螺零偏、加计零偏四种顶点&am…

git常用命令学习

目录 文章目录 目录第一章 git简介1.Git 与SVN2.Git 工作区、暂存区和版本库 第二章 git常用命令学习1.ssh设置2.设置用户信息3.常用命令设置1.初始化本地仓库init2.克隆clone3.查看状态 git status4.添加add命令5.添加评论6.分支操作1.创建分支2.查看分支3.切换分支4.删除分支…

ASP.NET Blazor部署方式有哪些?

今天我们来说说Blazor的三种部署方式&#xff0c;如果大家还不了解Blazor&#xff0c;那么我先简单介绍下Blazor Blazor 是一种 .NET 前端 Web 框架&#xff0c;在单个编程模型中同时支持服务器端呈现和客户端交互性&#xff1a; ● 使用 C# 创建丰富的交互式 UI。 ● 共享使用…

C语言小任务——1000以内含有9的数字

步骤 第一步&#xff1a;分类 含有九的可能的情况&#xff1a; 个位有9&#xff0c;十位有9&#xff0c;百位有9&#xff0c;而根据组合数&#xff0c;我们可以得出&#xff0c;一共有7种情况&#xff0c;分别是 9##&#xff0c;#9#&#xff0c;##9, 99#&#xff0c;9#9,#…

JavaScript笔记进阶篇01——作用域、箭头函数、解构赋值

黑马程序员视频地址&#xff1a; 黑马程序员前端JavaScript入门到精通全套视频教程https://www.bilibili.com/video/BV1Y84y1L7Nn?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes&p152 目录 作用域 局部作用域 函数作用域 块…

SQL 递归 ---- WITH RECURSIVE 的用法

SQL 递归 ---- WITH RECURSIVE 的用法 开发中遇到了一个需求&#xff0c;传递一个父类id&#xff0c;获取父类的信息&#xff0c;同时获取其所有子类的信息。 首先想到的是通过程序中去递归查&#xff0c;但这种方法着实孬了一点&#xff0c;于是想&#xff0c;sql能不能递归查…

分布式 ID 生成策略:应用场景与 ShardingSphere 实现

在分布式系统中&#xff0c;分布式 ID&#xff08;Distributed ID&#xff09;是一种用于唯一标识各类数据记录的技术&#xff0c;通常用于数据库主键、日志、消息队列等场景。由于分布式系统的特点&#xff0c;各个服务实例通常会在不同的物理节点上进行独立运行&#xff0c;这…

【K8S系列】K8s 领域深度剖析:年度技术、工具与实战总结

引言 Kubernetes作为容器编排领域的行业标准&#xff0c;在过去一年里持续进化&#xff0c;深刻推动着云原生应用开发与部署模式的革新。本文我将深入总结在使用K8s特定技术领域的进展&#xff0c;分享在过去一年中相关技术工具及平台的使用体会&#xff0c;并展示基于K8s的技术…