2023 CSP-J题解

T1 小苹果

题目描述

理论分析

        对于第一问,我们按照题意模拟每天取走的是多少个苹果即可。由于每天可以取走原来的\frac{1}{3},数据范围没次会降低到\frac{2n}{3},也就是说这样的过程的时间复杂度可以用下式表示:

f(n)=1+f(\frac{2n}{3})=2+f(\frac{2}{3}^2 n)=\cdots <2 \log_{2}n

对于本题的数据范围n<1e9,这个时间复杂度计算后在1e5左右,是可以接受的。

        对于第二问,首先有一个很显然的结论是:第n个苹果会存在于从第一天开始的连续的若干天,然后在后面的天里不再存在。因此,我们可以维护一个bool类型的变量,作为最后一个苹果还在不在的判别。然后在每一天的判断过程中,我们通过整除关系可判别,这个苹果是不是被拿走。

代码实现
#include <bits/stdc++.h>
using namespace std;int main(){int n;cin>>n;int day=0, last=0;bool flag=false;while(n){day++;//是不是这天拿最后一个if(!flag&&(n-1)%3==0) flag=true, last=day;//这天结束,剩的苹果数n=n-(n-1)/3-1;}cout<<day<<" "<<last<<endl;return 0;
}

T2 公路

题目描述

理论分析

        贪心即可!对于这个题目来说,一共要走的路程是一定的,所有一共加多少油也是确定的。不存在选择某种加油方案剩余油多,而选择另外的方案剩余油少的问题。因此,我们要做的就是让每升油的油价尽可能的低。那么问题来了,我们能不能都用最低油价买油呢?显然,当开始的0号位置油价最低时(题目中的1号,这里直接对应代码的编号说明了!下同),我们可以办到这件事,但是当1号节点油价并不是最低价的时候,我们需要首先走到油价最低的站点,那就至少需要在前面的节点买油。也就是说,假设pos_{1}处的油价最低,我们的问题就演变为了,首先求1号点到pos_{1}最低花多少钱,然后后半段直接用pos_{1}处的油价走完就行。那前半程的求解是一个数据范围比原问题更小的问题的求解。

        我们当然可以像上述那样做递归的求解程序,只不过这样的时间效率是不高的,最差会来到O(n^{2}),只能通过一半左右的样例。实际上上述贪心的过程等价于下面的贪心:我们从前往后考虑每个节点,维护需求加油的数量(只保证可以走到下一个节点)num,加完油后走到下个节点后会剩下多少油last,以及历史(已经过节点)的最低油价mn。对于每个节点,我们花费num*mn保证可以走到下一个节点。(也就是说,我们在拥有历史最低油价的那个点在原来的基础上多加num升油保证可以走到下一个点)。

代码实现
#include <bits/stdc++.h>
#define int long long
using namespace std;signed main(){int n, d;cin>>n>>d;int last=0;vector<int> v(n);vector<int> a(n);for(int i=0; i<n-1; i++) cin>>v[i];int ans=0, mn=0x3f3f3f3f, num;for(int i=0; i<n-1; i++){cin>>a[i];// 历史低价mn=min(mn, a[i]);// 至少需要多少才能走到下一个点num=(v[i]-last+d-1)/d;ans=ans+num*mn;// 油余量够走多远last=num*d-v[i]+last;}cout<<ans<<endl;return 0;
}

T3 一元二次方程

题目描述

理论分析

        按照题意 老老实实模拟即可。需要注意的细节稍微有点多,但是细心一点也是可以一遍AC的!!
细节一:分数输出需要保证分母不是负数。
细节二:对于有两个解的情况而言,题中已经提示过x=q_{1}+q_{2}\sqrt r中的q_{2}>0,可以利用这一点简化代码的书写。
细节三:根号的化简要从大到小试探因数,这样更容易保证不重不漏。
细节四:根号内如果是完全平方数,那么最终结果将会不带有 “sqrt()” ,此时答案的化简需要自己分析好。
细节五:x=q_{1}+q_{2}\sqrt r格式的答案,要注意格外第一项是不是0的判断。
        大概就是这些细节吧。。。时间复杂度O(TM)

代码实现
#include <bits/stdc++.h>
#define int long long
using namespace std;void print_sqrt(int s, int b, int a){int g=__gcd(b, a);pair<int, int> p;p.first=b/g;p.second=a/g;if(p.first<0) p.first*=-1;if(p.second<0) p.second*=-1;if(p.first!=1) cout<<p.first<<"*";cout<<"sqrt("<<s<<")";if(p.second!=1) cout<<"/"<<p.second;
}void print_int(int b, int a){int g=__gcd(b, a);pair<int, int> p;p.first=b/g;p.second=a/g;if(p.second<0){p.first*=-1;p.second*=-1;}if(p.second==1) cout<<p.first;else cout<<p.first<<"/"<<p.second;
}void solve(){int a, b, c, g;cin>>a>>b>>c;int delta=b*b-4*a*c;if(delta<0){cout<<"NO\n";}else if(delta==0){if(b==0) cout<<"0\n";else{print_int(-b, 2*a);cout<<"\n";}}else {bool flag=false;int num=1;for(int i=min(1000ll, delta-1); i>0; i--){if(i*i==delta){delta/=(i*i);num*=i;break;}else if(i*i<delta && delta%(i*i)==0){num*=i;delta/=(i*i);}}if(delta==1){if(a<0) print_int(-b-num, 2*a);else print_int(-b+num, 2*a);cout<<"\n";}else {if(b!=0) {print_int(-b, 2*a);cout<<"+";}print_sqrt(delta, num, 2*a);cout<<"\n";}}
}signed main(){int n, m;cin>>n>>m;while(n--){solve();}return 0;
}

T4 旅游巴士

题目描述

理论分析

        这是一个分层图问题,即图上每个点要拆成k个点。拆点的依据是原本的点 mod\begin{matrix} & \end{matrix} k 意义下的到达时间。我们使用ans[i][j]表示到第i个点满足时间 mod\begin{matrix} & \end{matrix} k 的最短时间。初始条件为 ans[1][0]=0,然后跑最短路就行了。
        相对难处理的点在于每条边经过的时间限制,对于这一点,我们可以原地等待k的倍数时间达成(其实相当于出发时间晚了k的倍数时间)。

代码实现
#include <bits/stdc++.h>
#define int long long
using namespace std;int ans[20005][100];
vector<vector<pair<int, int>>> g;signed main(){int n, m, k;cin>>n>>m>>k;g.resize(n+1);int u, v, a;while(m--){cin>>u>>v>>a;g[u].push_back(pair<int, int> (v, a));}for(int i=1; i<=n; i++)for(int j=0; j<k; j++) ans[i][j]=0x7f7f7f7f7f7f7f7f;queue<pair<int, int>> q;q.push(pair<int, int> (1, 0));ans[1][0]=0;int now, pos, need;while(!q.empty()){auto t=q.front();q.pop();for(int i=0; i<g[t.first].size(); i++){now=g[t.first][i].first;pos=(t.second+1)%k;need=ans[t.first][t.second];if(need<g[t.first][i].second) need=need+(g[t.first][i].second-need+k-1)/k*k;need++;if(ans[now][pos]==-1||need<ans[now][pos]){
//                cout<<now<<" "<<pos<<" "<<need<<endl;ans[now][pos]=need;q.push(pair<int, int> (now, pos));}}}if(ans[n][0]>=0x7f7f7f7f7f7f7f7f) cout<<-1<<endl;else cout<<ans[n][0]<<endl;return 0;
}

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

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

相关文章

二叉树问题——平衡二叉树问题

摘要 本博文主要介绍平衡二叉树问题包括&#xff0c;二叉树的高度差&#xff0c;是否为平衡二叉树&#xff0c;有序链表转二叉搜索树&#xff0c;将二叉搜索树变平衡等。 一、平衡二叉树详解 1.1 判断二叉树是否平衡 /*** Definition for a binary tree node.* public class…

浅谈安科瑞无线测温产品在埃及某房建配电项目中的应用

1.电气接点测温的必要性 电力系统的一次系统一般由供电线路&#xff08;包括架空线路和电缆&#xff09;、变压器、母线、开关柜等电气设备组成。其相互之间存在大量的电气连接点&#xff0c;由于电流流过产生热量&#xff0c;所以几乎所有的电气故障都会导致故障点温度的变化…

cnpm windows系统安装后查看版本cnpm -v报错Error: Cannot find module ‘node:util‘

1、报错截图 2、原因 在网上查了一些资料&#xff0c;有的说配置环境变量就可以&#xff0c;但经过配置后发现还是会报错。又查到说是由于cnpm和npm的版本不一致导致的&#xff0c;最后尝试成功解决&#xff01;&#xff01;&#xff01; 2、解决办法 1、先卸载掉之前安装的c…

Stable Diffusion WebUI扩展openpose-editor如何使用

先上地址: GitHub - fkunn1326/openpose-editor: Openpose Editor for AUTOMATIC1111s stable-diffusion-webuiOpenpose Editor for AUTOMATIC1111s stable-diffusion-webui - GitHub - fkunn1326/openpose-editor: Openpose Editor for AUTOMATIC1111s stable-diffusion-webu…

apache seatunnel支持hive jdbc

上传hive jdbc包HiveJDBC42.jar到seatunel lib安装目录 原因是cloudera 实现了add batch方法 创建seatunnel任务文件mysql2hivejdbc.conf env {execution.parallelism = 2job.mode = "BATCH"checkpoint.interval = 10000 } source {Jdbc {url = "jdbc:mysql:/…

AWS认证考试的那些事

1 为啥会有这个认证 你既然点进来了这个也就不重要了&#xff0c;重要的是怎么拿到他&#xff0c;以SAA-C03为例&#xff0c;从开始到结束我们一起来进行准备 2 考试卷 目前AWS的考试是要交钱的&#xff0c;正常情况下拿到5折劵很容易&#xff0c;比如你之前考过AWS的认证会给…

Django实战项目-学习任务系统-兑换物品管理

接着上期代码框架&#xff0c;开发第5个功能&#xff0c;兑换物品管理&#xff0c;再增加一个学习兑换物品表&#xff0c;主要用来维护兑换物品&#xff0c;所需积分&#xff0c;物品状态等信息&#xff0c;还有一个积分流水表&#xff0c;完成任务奖励积分&#xff0c;兑换物品…

函数总结

一、main函数 //argc 统计命令行传参的个数 //argv 保存命令行传的具体参数,每个参数当做字符串来存储&#xff0c;const是为了不让main函数修改argv数组里的内容 1.1值传递 此为值传递;形参的值改变不影响实参的值 1.2 地址传递 形参拿到的是实参的地址&#xff0c;实际操…

okhttp post请求 header post参数加密遇到的两个问题

如果你对于网络请求用了https后是否还有必要对参数加密有疑问可以看我上篇的文章&#xff1a;网络安全https 记得耐心看完&#xff0c;下面说问题&#xff1a; Caused by: java.lang.IllegalArgumentException: Unexpected char 0x0a 一开始以为是okhttp框架对特殊字符做了现在…

高效改名,文件夹名称替换:一键批量替换文件夹名中间部分内容

在我们的日常生活和工作中&#xff0c;经常需要处理大量的文件夹&#xff0c;其中有些文件夹名称可能包含我们需要替换的内容。但如果我们一个一个地手动修改文件夹名称&#xff0c;不仅耗时而且容易出错。为了解决这个问题&#xff0c;我们可以使用云炫文件管理器高效的文件夹…

[AUTOSAR][诊断管理][ECU][$2F] 通过ID控制IO

文章目录 一、简介服务功能功能描述应用场景服务请求请求格式控制参数(IOCP)请求实例服务响应响应格式正响应实例负响应NRC支持二、 示例代码2f_io_ctl_by_id.c一、简介 2F诊断服务主要在车身域比较常见,比如车窗控制,传感器开关、执行器控制等。 UDS诊断服务协议都以ISO标准…

Centos虚拟机安装配置与MobaXterm工具及Linux常用命令

目录 一、Centos操作系统 1.1 Centos介绍 1.2 Centos虚拟机安装 1.3 配置centos的镜像 1.4 虚拟机开机初始设置 1.4.1 查看网络配置 1.4.2 编辑网络配置 二、MobaXterm工具 2.1 MobaXterm介绍 2.2 MobaXterm安装 2.3 切换国内源 三、Linux常用命令和模式 3.1 …

【漏洞复现】CNVD-2023-08743

【漏洞复现】 CNVD-2023-08743 【漏洞介绍】 Hongjing Human Resource Management System - SQL Injection 【指纹】 title”人力资源信息管理系统” 【系统UI】 【payload】 /servlet/codesettree?flagc&status1&codesetid1&parentid-1&categories~31…

Word插入图片显示不全?学会这4个方法,轻松解决!

“为了让我的文档看起来更专业&#xff0c;我在Word里插入了一些图片&#xff0c;但是这些图片有些只显示了部分&#xff0c;有些都无法正常显示。有什么方法可以让图片显示齐全吗&#xff1f;” 在使用Word时&#xff0c;添加一些图片不仅会让我们的文档看起来更美观&#xff…

探求flutter全栈开发

显示一种网络图片 import package:flutter/material.dart; main(){runApp(MaterialApp(theme: ThemeData.dark(),home:Home(),));}class Home extends StatelessWidget{overrideWidget build(BuildContext context) {// TODO: implement buildreturn Scaffold(appBar:AppBar(t…

2023-2024-1高级语言程序设计第1次月考

7-1-1 计算摄氏温度 给定一个华氏温度F&#xff0c;本题要求编写程序&#xff0c;计算对应的摄氏温度C。计算公式&#xff1a;C5(F−32)/9。题目保证输入与输出均在整型范围内。 输入格式: 输入在一行中给出一个华氏温度。 输出格式: 在一行中按照格式“Celsius C”输出对…

高频SQL50题(基础版)-1

文章目录 主要内容一.SQL练习题1.1757-可回收且抵制的产品代码如下&#xff08;示例&#xff09;: 2.584-寻找用户推荐人代码如下&#xff08;示例&#xff09;: 3.595-大的国家代码如下&#xff08;示例&#xff09;: 4.1148-文章浏览代码如下&#xff08;示例&#xff09;: 5…

CT MR 三维重建可视化系统

前言 本文通过研究医学可视化的不同算法&#xff0c;在 vc环境下&#xff0c;以可视化软件包VTK 为平台&#xff0c;编程设计实现了三维建模系统&#xff0c;实现了 DICOM图像的三维重建。 材料与方法 使用符合 DICOM 标准的临床 CT、MRI图像数据&#xff0c;在 vc环境下&…

Python 算法高级篇:最小生成树算法的优化与应用

Python 算法高级篇&#xff1a;最小生成树算法的优化与应用 引言 1. 最小生成树问题简介2. Prim 算法3. Kruskal 算法4. 优化与比较5. 案例应用&#xff1a;通信网络设计6. 总结 引言 最小生成树&#xff08; Minimum Spanning Tree &#xff0c; MST &#xff09;是图论中的一…

利用python绘制多个箱型图

文章目录 1. 图片2. 代码 1. 图片 图片示例如下所示&#xff1a; 2. 代码 代码如下所示&#xff1a; # Define the custom order based on atmospheric stability custom_order [vus_0, us_1, ne_2, ws_3, ws_4, s_5, s_6, s_7, vs_8, vs_9]# Step 1: Reorder the statis…