2024.3.6补题

1.关鸡

对于这一道题,我们先按照题意进行分析:首先鸡自己的初始位置,如果着火点在鸡一开始的左右下各有一个那么就可以达到题目效果,也就是说不需要添加着火点,同时最多需要添加的着火点其实也就是它初始位置身边所有的三个位置,也就是最多需要添加三个着火点。另外考虑当着火点在更远的位置的时候,我们容易想到当有两个着火点是上下挨着的时候,这两个挨着的着火点就可以拦住鸡通往的一边了,另一边也是同理,我们可以考虑通过映射的方式,将已经有着火点的位置设置成1,同时通过位运算代替if else减少代码量,对于每组测试案例,我们可以考虑分别对鸡的左右边进行判断,不妨引入l与r,代表两边对鸡逃亡有意义的着火点个数。

代码如下:

#include<bits/stdc++.h>
using namespace std;
int T;
int n;
map<int,int>m[2];
int main(){ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);cin>>T;while(T--){cin>>n;int l=0,r=0;for(int i=1;i<=n;i++){int x,y;cin>>x>>y;x--;if(y>=0) r=max(r,1);if(y<=0) l=max(l,1);if(m[x^1][y]){if(y>=0) r=max(r,2);if(y<=0) l=max(l,2);}if(y>=0 && m[x^1][y+1])  r=max(2,r);if(y<=0 && m[x^1][y-1])  l=max(2,l);if(y>0  && m[x^1][y-1])  r=max(2,r);if(y<0  && m[x^1][y+1])  l=max(2,l);m[x][y]=1;}int ans=4-l-r;if(m[0][1])  ans=min(2,ans);if(m[0][-1]) ans=min(2,ans);if(m[0][-1] && m[0][1]) ans=min(ans,1);ans=min(ans,3);cout<<ans<<endl;m[0].clear(),m[1].clear();}return 0;
}

 上述代码中x输入之后记得减去1,因为题目中只有两行,我们分别用0 1代表原本的第一行和第二行,ans的初始值设置成4,这样假设鸡的左右两边都没有着火点,然后再通过输入慢慢更新l与r最终与ans相减就可以了,然后对于每个输入的着火点,我们判断它的身边是否还有着火点,如果有就说明这一边鸡无论如何都跑不过去了,最后特判一下当鸡的出生点身边有着火点的情况即可。

2.按闹分配:

 分析:由于有n个人在排队,并且工作人员会根据每个人手续处理时间合理安排排队顺序,这里我们需要想到必定是按照办理手续时间从短到长的方式进行的;同时我们可以发现,每一个人的不满意度其实就是从他开始排队到事情办完一共花了时间,所以也就是他排队前面的所有人的办理时间以及他自己的手续时间,那么我们就要想到,当鸡插队了之后,他后面的所有人都会增加他手续时间的不满意度。

我们不妨考虑先对来办事的所有人按照时间短到长排序,再用前缀和来记录在鸡没插队之前,每个人的不满意度,那么答案就是鸡前面的位置所对应的前缀和数组下标答案加上他自己的手续时间,这时候我们就只需要考虑怎么写代码判断鸡最早在哪里插入队中去是合适的。

代码如下:

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int n, q, t, a[N];
long long m, s[N];
int main()
{ios::sync_with_stdio(0);cin >> n >> q >> t;for(int i = 1; i <= n; ++i) cin >> a[i];sort(a + 1, a + 1 + n);for(int i = 1; i <= n; ++i) s[i] = s[i - 1] + a[i];while(q--){//这里题目中需要思考到,当鸡插入之后,他后面的所有人的不满意度都要加上一个t,从而使得Sc=Smin+t*n;//题目中的判断条件可以由Sc-Smin<=M 换成 t*n<=Mcin >> m;m /= t;if(m >= n) cout << t << endl;else cout << s[n - m] + t << endl;}return 0;
}

3.数组成鸡:

  分析:对于此题,我们发现数据范围相对较大,所以如果要通过所有的测试案例,暴力肯定是行不通的,我们要考虑通过怎样一种巧妙的方式来完成此题的解答:

由于我们可以进行任意次操作,我们可以考虑利用最大值和最小值做基准进行两次判断,先把数组从小到大排序然后让每个数组元素都减去第一个元素,因为反正可以任意次操作,所以其实可以对数组所有元素同时加减任意整数,然后我们考虑利用一个循环表示将数组元素进行加对应值是否满足要求,边输入边进行判断是否会超过询问数字的最大值,当全部乘完并且发现不会超过1e9的时候,我们利用一个映射,将这个乘完的数字给他设置为bool中的true,这样当询问中问到某个数字的时候我们可以根据它是否被设置为true来判断是否满足题意。

代码如下:

#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[200010];
signed main()
{map<int,bool>mp;mp[0]=true;int n,q;scanf("%lld%lld",&n,&q);for(int i=1;i<=n;i++){scanf("%lld",&a[i]);}sort(a+1,a+1+n);for(int i=n;i>=1;i--){a[i]-=a[1];}if(n==1){while(q--){int t;cin>>t;puts("Yes");}return 0;}for(int add=-100000;add<=100000;add++){int res=1;bool ok=true;for(int i=1;i<=n;i++){res*=(a[i]+add);if(abs(res)>=1e9){ok=false;break;}}if(ok)mp[res]=true;}int tem=a[n];for(int i=n;i>=1;i--){a[i]-=tem;}for(int add=-100000;add<=100000;add++){int res=1;bool ok=true;for(int i=1;i<=n;i++){res*=(a[i]+add);if(abs(res)>=1e9){ok=false;break;}}if(ok)mp[res]=true;}while(q--){int t;scanf("%lld",&t);if(mp[t])puts("Yes");else puts("No");}return 0;
}

4.kkksc03考前临时抱佛脚:

 对于这个题,我们其实可以将四科进行单独的考虑,同时我们可以看到主人公的大脑可以两个脑子分别解答一道题,对于每一个科目,当题目数量为1的话那么毫无疑问这一科目的时间就是完成该课程复习的时间,而当有多道题目的时候,我们进行思考后会发现,两个大脑由于可以同时运转,同时解答两道题目,那么我们会发现如果要得到最短时间,那么我们其实也就是尽可能在多的时间内两个大脑同时运转,其中一个大脑的运算时间一定是小于等于另一个大脑的,所以这一个题我们可以考虑利用01背包的方式进行解答,接下来请看代码;

#include<bits/stdc++.h>
using namespace std;
const int N=30;
const int TIME=1300;
int a[5],homework[N],dp[N][TIME];
int main(){ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);cin>>a[1]>>a[2]>>a[3]>>a[4];int t=0;for(int i=1;i<=4;i++){	int sum=0;for(int j=1;j<=a[i];j++){cin>>homework[j];sum+=homework[j];}memset(dp,0,sizeof(dp));for(int j=1;j<=a[i];j++){for(int k=1;k<=sum/2;k++){dp[j][k]=max(dp[j-1][k],k>=homework[j] ? dp[j-1][k-homework[j]]+homework[j]:0);}}t += sum-dp[a[i]][sum/2];  }cout<<t<<endl;return 0;   
}

5.马走日:

 这道题目只需要分类讨论就行了,我们不妨把n,m看成一个直角坐标系,n,和m对应x和y的边界,我们由于并不确定n和m谁打谁小,不妨通过小的那个来进行研究,因为其实,x,y坐标都是选择其中一个走一步另一个走两步,当n为1,2,3分别进行考虑(其实都可以在草稿本上面斗出来),然后直接按照规律输出就行了:

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m;
inline void solve(){scanf("%lld%lld",&n,&m);if( n > m)  swap( n , m );if( n == 1 ) puts("1");else if( n == 2 ) printf("%lld\n",( m  + 1 ) / 2);else if( n == 3 ) printf("%lld\n",( m == 3 ) ? 8 : m * n);else printf("%lld\n",m * n);
}
signed main(){int testcase; scanf("%lld", &testcase);while(testcase--) solve();return 0;
}

今日份任务完成,感谢您的观看,希望对你有所帮助!

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

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

相关文章

Optional 详解

Optional 详解 1、Optional 介绍2、创建 Optional 对象3、Optional 常用方法1. 判断值是否存在 — isPresent()2. 非空表达式 — ifPresent()3. 设置(获取)默认值 — orElse()、orElseGet()4. 获取值 — get()5. 过滤值 — filter()6. 转换值 — map() 作为一名 Java 程序员&am…

电子电器架构刷写策略 —— 队列刷写

电子电器架构刷写策略 —— 队列刷写 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己…

EasyX的学习2

消息处理——漂亮的按钮(鼠标) 用到的函数 1.消息结构体变量类型&#xff1a;使用ExMessage ExMessage msg{ 0 }; 定义一个变量名为msg的ExMessage结构体变量并初始化为0 2.获取消息函数&#xff1a;peekmessage函数 //获取消息 peekmessage(&msg, EX_MOUSE); 两个参…

【Linux】基本指令(中)

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:Linux ⚙️操作环境:Xshell (操作系统:CentOS 7.9 64位) 目录 man指令 cp指令 mv指令 cat指令 more指令 less指令 head指令 …

如何对酒店开展科学的定岗定编——以酒店健身房、娱乐房为例

近年来&#xff0c;随着旅游行业的快速发展&#xff0c;也带动了酒店业的兴盛。酒店的经营效益不仅受益于旅游业&#xff0c;同时也受制于旅游行业。由于旅游业存在明显的季节性差异&#xff0c;旅游旺季客流量多、淡季客流量少&#xff0c;造成人员忙闲不均的问题。酒店行业也…

gofly接口入参验证使用介绍

接口传入的参数做相关性质验证是开发中较为常用&#xff0c;gofly框架内置校验工具&#xff0c;提供开发效率&#xff0c;开发接口简单调用即可实现验证&#xff0c;下面介绍gofly框架数据验证设计思路及使用方法。 gofly框架提供了功能强大、使用便捷、灵活易扩展的数据/表单…

闰年导致的哪些 Bug

每次闰年对程序员们都是一个挑战&#xff0c;平时运行好好的系统&#xff0c;在 02-29 这一天&#xff0c;好像就会有各种毛病。 虽然&#xff0c;提前一天&#xff0c;领导们都会提前给下面打招呼。但是&#xff0c;不可避免的&#xff0c;今天公司因为闰年还是有一些小故障。…

Linux conntrack和iptables技术解析

Linux虚拟文件系统管理技术 1. netfilter解析1.1 netfilter的基础原理1.2 netfilter的相关hook 2. conntrack解析2.1 conntrack的基础原理2.2 conntrack的表记录解析 3. iptables解析3.1 iptables基础原理3.2 融合conntrack表的iptables规则 4. 疑问和思考4.1 conntrack和iptab…

医学知识和医疗应用开发交叉领域中垂类大语言模型应用相关研究

前言&#xff1a; 基于公司对LLM落地的期望&#xff0c;此proposal尚未研究完毕&#xff0c;只是简单做了一些消息整合和建议。 关于知识细节详见末尾Refs 背景&#xff1a; 随着LLM&#xff08;大语言模型&#xff09;的爆火&#xff0c;不少企业都在寻找通过LLM解决企业业…

【学习笔记】java项目:黑马头条(day01)

文章目录 环境搭建、SpringCloud微服务(注册发现、服务调用、网关)1)课程对比2)项目概述2.1)能让你收获什么2.2)项目课程大纲2.3)项目概述2.4)项目术语2.5)业务说明 3)技术栈4)nacos环境搭建4.1)虚拟机镜像准备4.2)nacos安装 5)初始工程搭建5.1)环境准备5.2)主体结构 6)登录6.1…

Linux网络隧道协议IPIP认知(基于Linux network namespace 的 IPIP 隧道通信)

写在前面 博文内容为 Linux 隧道通信 IPIP认知内容涉及&#xff1a;ipip 介绍&#xff0c;一个 ipip 通信 Demo 以及数据帧流转分析理解不足小伙伴帮忙指正 某些人和事&#xff0c;哪怕没有缘分&#xff0c;是路边的风景&#xff0c;可是只要看一眼&#xff0c;依然会让人觉得…

高转化利器】Xinstall实现H5唤醒App,打开指定页面,轻松满足营销需求!

在移动互联网时代&#xff0c;App的拉新促活对于企业的发展至关重要。为了提升用户体验和转化率&#xff0c;Xinstall推出了一项强大的功能——H5唤醒App。通过这一功能&#xff0c;用户可以直接从Web页面拉起App&#xff0c;并在拉起过程中通过传参打开指定页面&#xff0c;满…

QT在scrollArea中添加按钮,可滚动

添加按钮可滚动&#xff0c;同时设置按钮大小&#xff0c;代码如下 ui->setupUi(this); //在UI里面已经拖了一个scrollAreamyWidget new QWidget(this); //新建一个QWidget放在scrollArea中QVBoxLayout *layout new QVBoxLayout(…

手工将一个 llvm IR 汇编代码解析成为 bitcode 文件

1&#xff0c;原始c语言文件 sum.c int sum(int a, int b) {return ab; } 2&#xff0c;编译成为 LLVM-IR 汇编语言 clang sum.c -emit-llvm -S -c -o sum.ll 3&#xff0c;手工把 llvm IR 汇编语言解析成 bitcode 3.1&#xff0c;源码 gen_llvm_ir.cpp #include <ll…

Sora:AI视频模型的无限可能与挑战

随着人工智能技术的突飞猛进&#xff0c;AI视频模型已成为科技领域的新焦点。OpenAI推出的AI视频模型Sora&#xff0c;凭借其卓越的技术性能和前瞻性&#xff0c;为AI视频领域的发展揭开了新的篇章。本文将从技术解析、应用场景、未来展望、伦理与创意以及用户体验与互动五个方…

Xilinx高级调试方法--远程调试

Xilinx高级调试方法--远程调试 1 虚拟电缆调试2 FPGA设计2.1 扩展配置接口 3 PCIe-XVC驱动3.1 PCIe-XVC驱动3.2 XVC-Server 4 Vivado Design Suite4.1 同一台主机4.2 不同主机 本文主要介绍Xilinx的一些高级调试方法&#xff0c;以及如何使用Xilinx的相关IP。 1 虚拟电缆调试 …

数据结构(二)——线性表

二、线性表 2.1线性表的定义和基本操作 2.1.1 线性表的基本概念 线性表&#xff1a;是具有相同数据类型的 n 个数据元素的有限序列。(Eg:所有的整数按递增次序排列&#xff0c;不是顺序表&#xff0c;因为所有的整数是无限的)其中n为表长&#xff0c;当n0时线性表是一个空表…

AI领域再出“王炸“----Claude3是否会成为下一个“神“

目录 一.Claude3最新发布 二.Claude3支持20万token 三.Claude3在未公开算法上取得重大突破 1.Claude 3读懂博士论文 2.量子跃迁集成&#xff1a; Claude 3智商&#xff1a;101 测试方法 测试细节 通过Karpathy挑战 Claude 3自画像&#xff0c;突破本我 从洛杉矶排到…

UR机器人装箱姿态

1.官网手册上并没有给出该打包位姿 2.一般厂家发回来的机器人都会有这个打包程序 可以运行这个程序&#xff0c;如果有的话。 3.打包点位 如果没有这个这个&#xff0c;也可以直接按下面点位来&#xff0c;都是差不多的点位&#xff0c;可以放到包装箱中的 这个是UR10的 这个…

Vulnhub靶机:Billu_b0x

一、介绍 运行环境&#xff1a;Virtualbox 攻击机&#xff1a;kali&#xff08;192.168.56.101&#xff09; 靶机&#xff1a;Billu_b0x&#xff08;192.168.56.107&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://download.vulnhu…