CSP-J 2023 第二轮认证入门级(含答案)

一。题目 

 

二。答案

T1 ⼩苹果(apple)

每⼀轮拿掉的苹果数量为 。模拟拿苹果的过程,每⼀轮中令 ,当 时最后⼀个苹果会被拿掉。 时间复杂度为对数。 

#include <iostream>
using namespace std;
int n;
int ans1, ans2;
bool flag;
int main() {cin >> n;while (n) {ans1++;if (!flag && n % 3 == 1) {ans2 = ans1;flag = 1;}n -= n % 3 ? n / 3 + 1 : n / 3;}cout << ans1 << ' ' << ans2 << '\n';return 0;
}

T2 公路(road) 

简单的贪⼼题。 如果下⼀个站点的油费⽐当前站点贵,显然应该在当前站点把油加⾜。 ⽤ 表⽰当前所在的站点, 表⽰当前油箱中的剩余油量,每次找到 之后第⼀个油价低 于 的站点 ,加上⾜够的油开过去即可。注意使⽤ long long 。 双指针遍历即可得出答案,时间复杂度为线性。

#include <iostream>
#define N 100010
#define ll long long
using namespace std;
int n;
ll d, v[N], p[N], ans;
int main() {cin >> n >> d;for (int i = 1; i < n; i++) cin >> v[i];for (int i = 1; i <= n; i++) cin >> p[i];int now = 1, nxt = 2;ll tank = 0;while (now < n) {ll dis = v[now];while (nxt < n && p[nxt] >= p[now]) dis += v[nxt++];int cnt = 0;while (tank + cnt * d < dis) cnt++;ans += p[now] * cnt;tank += cnt * d - dis;now = nxt++;}cout << ans << endl;return 0;
}

T3 ⼀元⼆次⽅程(uqe) 

⼤⽔题。 给出⼀元⼆次⽅程 的三个系数 ,求该⽅程⽐较⼤的根,且化简为最简形 式。 ⾸先根据判别式 判定是否⽆解,在有解的情况下,要将 中的完全平⽅因⼦提到根 号外⾯。 设 ,根据算术基本定理 : 如果 为偶数,则将 累乘到 ; 如果 为奇数,则将 累成到 ; 当 时结果为⽆理数, 或 时结果都是有理数,分情况讨论输出即可。 有理数化为最简分式只需分⼦分⺟同除以它们的最⼤公约数。 特别需要注意 的符号,由于题⽬要求输出⽐较⼤的根,所以当 时, 的符号也应该为负。 ⽐较⽅便的处理⽅法是:如果 ,则将 全部反号,避免⽆谓的分类讨论。

#include <cstdio>
#define N 1010
int T, M, a, b, c;
int P[N], C[N], tot;
void divide(int n) {tot = 0;for (int i = 2; i * i <= n; i++) {if (n % i == 0) {P[++tot] = i;C[tot] = 0;while (n % i == 0) {n /= i;C[tot]++;}}}if (n > 1) {P[++tot] = n;C[tot] = 1;}
}
int qpow(int x, int y) {int res = 1;while (y) {if (y & 1) res *= x;x *= x;y >>= 1;}return res;
}
int gcd(int x, int y) {return y ? gcd(y, x % y) : x;
}
void print_rational(int x, int y) {if (x * y < 0) printf("-");if (x < 0) x *= -1;if (y < 0) y *= -1;if (x % y == 0) printf("%d", x / y);else printf("%d/%d", x / gcd(x, y), y / gcd(x, y));
}
int main() {scanf("%d %d", &T, &M);while (T--) {scanf("%d %d %d", &a, &b, &c);if (a < 0) {a *= -1;b *= -1;c *= -1;}int delta = b * b - 4 * a * c;if (delta < 0) {puts("NO");continue;}// 除去 delta 中的完全平⽅因⼦divide(delta);int d = 1;for (int i = 1; i <= tot; i++) {if (C[i] & 1) d *= qpow(P[i], (C[i] - 1) >> 1);else d *= qpow(P[i], C[i] >> 1);}delta /= d * d;if (delta == 0) print_rational(-b, a << 1);else if (delta == 1) {print_rational(d - b, a << 1);else {if (b) {print_rational(-b, a << 1);printf("+");}int x = d;int y = a << 1;if (x % y == 0) {x /= y;if (x > 1) printf("%d*", x);printf("sqrt(%d)", delta);} else {if (x / gcd(x, y) > 1) printf("%d*", x / gcd(x, y));printf("sqrt(%d)/%d", delta, y / gcd(x, y));}}puts("");}return 0;
}

T4 旅游巴⼠

#include <cstdio>
#include <algorithm>
#include <cstring>
#define N 10010
#define M 20010
#define K 110
#define INF 0x3f3f3f3f
int n, m, k;
int dis[N][K];
struct T {int head, to, nxt, w;
} a[M];
int tot;
void add(int u, int v, int w) {a[++tot].to = v;a[tot].w = w;a[tot].nxt = a[u].head;a[u].head = tot;
}
inline int ceil(int x, int y) {return x % y == 0 ? x / y : x / y + 1;
}
void dfs(int u, int now) {if (now >= dis[n][0]) return; // 最优性剪枝for (int i = a[u].head; i; i = a[i].nxt) {int v = a[i].to, w = a[i].w;int nxt = now >= w ? now + 1 : now + 1 + ceil(w - now, k) * k;if (dis[v][nxt % k] > nxt) {dis[v][nxt % k] = nxt;dfs(v, nxt);}}
}
int main() {scanf("%d %d %d", &n, &m, &k);for (int i = 1; i <= m; i++) {int u, v, w;scanf("%d %d %d", &u, &v, &w);add(u, v, w);}memset(dis, 0x3f, sizeof(dis));dfs(1, 0);printf("%d\n", dis[n][0] == INF ? -1 : dis[n][0]);return 0;
}

 如果 ⼀开始进⼊的是错误的分⽀,会导致 数组收敛的很慢。将 的过程改为 AC即可 。

#include <cstdio>
#include <algorithm>
#include <queue>
#include <cstring>
#define N 10010
#define M 20010
#define K 110
#define INF 0x3f3f3f3f
int n, m, k;
int dis[N][K];
struct T {int head, to, nxt, w;
} a[M];
int tot;
void add(int u, int v, int w) {a[++tot].to = v;a[tot].w = w;a[tot].nxt = a[u].head;a[u].head = tot;
}
inline int ceil(int x, int y) {return x % y == 0 ? x / y : x / y + 1;
}
struct V {int id, dis;
} s, now, nxt;
void bfs() {s.id = 1;s.dis = dis[1][0] = 0;std::queue<V> q;q.push(s);while (q.size()) {now = q.front();q.pop();int u = now.id;for (int i = a[u].head; i; i = a[i].nxt) {nxt.id = a[i].to;nxt.dis = now.dis >= a[i].w ? now.dis + 1 : now.dis + 1 + ceil(a[i].w - now.dis, k) * k;if (dis[nxt.id][nxt.dis % k] > nxt.dis) {dis[nxt.id][nxt.dis % k] = nxt.dis;q.push(nxt);}}}
}
int main() {scanf("%d %d %d", &n, &m, &k);for (int i = 1; i <= m; i++) {int u, v, w;scanf("%d %d %d", &u, &v, &w);add(u, v, w);}memset(dis, 0x3f, sizeof(dis));bfs();printf("%d\n", dis[n][0] == INF ? -1 : dis[n][0]);return 0;
}

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

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

相关文章

Kafka KRaft模式探索

1.概述 Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff0c;它可以处理消费者在网站中的所有动作流数据。其核心组件包含Producer、Broker、Consumer&#xff0c;以及依赖的Zookeeper集群。其中Zookeeper集群是Kafka用来负责集群元数据的管理、控制器的选举等。 2.内容…

san.js源码解读之模版解析(parseTemplate)篇——readIdent函数

一、源码分析 /*** 读取ident* 这里的 ident 指标识符(identifier)&#xff0c;也就是通常意义上的变量名* 这里默认的变量名规则为&#xff1a;由美元符号($)、数字、字母或者下划线(_)构成的字符串** inner* param {Walker} walker 源码读取对象* return {string}*/ functio…

CNCC2023

中国工程院院士&#xff0c;之江实验室主任、阿里云创始人王坚&#xff1a;计算驱动的科学发现和科技创新。 国际计算机学会主席雅尼斯约阿尼迪斯(ACM President Yannis Ioannidis)。 电气和电子工程师协会计算机协会主席妮塔帕特尔(IEEE CS President Nita Patel)。 2022 I…

StripedFly恶意软件框架感染了100万台Windows和Linux主机

导语 近日&#xff0c;一款名为StripedFly的恶意软件框架在网络安全研究人员的监视之外悄然感染了超过100万台Windows和Linux系统。这款跨平台的恶意软件平台在过去的五年中一直未被察觉。在去年&#xff0c;卡巴斯基实验室发现了这个恶意框架的真实本质&#xff0c;并发现其活…

高三高考免费试卷真题押题知识点合集

发表于安徽 温馨提示&#xff1a;有需要的真题试卷可联系本人&#xff0c;百卷内上免费资源。 感觉有用的下方三连&#xff0c;谢谢 ​ 。 免费版卷有6-60卷每卷平均4-30页 高三免费高三地理高三英语高三化学高三物理高三语文高三历史高三政治高三数学高三生物 付费版卷有1…

Java8与JDK1.8与JDK8之间的关系是什么?

1.Java8等价于JDK8 2.JDK8或者JDK1.8是由于自从JDK1.5/JDK5命名方式改变后遗留的历史问题。所以JDK8或者JDK1.8是等价的。 2004年9月30日&#xff0c;J2SE1.5发布。为了表示该版本的重要性&#xff0c;J2SE 1.5更名为Java SE 5.0&#xff0c;从此开始&#xff0c;如下图像jav…

OpenCV官方教程中文版 —— 直方图均衡化

OpenCV官方教程中文版 —— 直方图均衡化 前言一、原理二、 OpenCV 中的直方图均衡化三、 CLAHE 有限对比适应性直方图均衡化 前言 本小节我们要学习直方图均衡化的概念&#xff0c;以及如何使用它来改善图片的对比。 一、原理 想象一下如果一副图像中的大多是像素点的像素值…

实用篇-认识微服务

一、服务架构演变 1. 单体架构 单体架构&#xff1a;将业务的所有功能集中在一个项目中开发&#xff0c;打成一个包部署 单体架构的优点&#xff1a; 架构简单部署成本低 单体架构的缺点&#xff1a; 耦合度高 2. 分布式架构 分布式架构&#xff1a; 根据业务功能对系…

【C语言】字符函数、字符串函数与内存函数

简单不先于复杂&#xff0c;而是在复杂之后。 目录 0. 前言 1. 函数介绍 1.1 strlen 1.1.1 介绍 1.1.2 strlen 函数模拟实现 1.1.2.1 计数器方法 1.1.2.2 递归方法 1.1.2.3 指针 - 指针方法 1.2 strcpy 1.2.1 介绍 1.2.2 strcpy 函数模拟实现 1.3 strcat 1…

【软考系统架构设计师】2021年系统架构师综合知识真题及解析

本文主要分享2021年下半年系统架构师综合知识历年真题以及本人在做题时的所思所想。题目序号有点混乱&#xff0c;可忽略 【01】.某计算机系统页面大小为4K&#xff0c;进程P1的页面变换表如下图所示&#xff0c;看P1要访问数据的逻辑地址为十六进制1B1AH,那么该逻辑地址经过变…

Linux touch命令:创建文件及修改文件时间

既然知道了如何在 Linux 系统中创建目录&#xff0c;接下来你可能会想在这些目录中创建一些文件&#xff0c;可以使用 touch 命令。 需要注意的是&#xff0c;touch 命令不光可以用来创建文件&#xff08;当指定操作文件不存在时&#xff0c;该命令会在当前位置建立一个空文件&…

基于 Python 的豆瓣电影分析、可视化系统,附源码

文章目录 1 简介2 技术栈具体实现1.设计豆瓣电影自动化爬虫程序&#xff0c;自动获取电影数据2.对爬取到的数据进行清洗和预处理&#xff0c;包括多维度数据字段清洗和扩充3.将清洗好的数据存储到MySQL数据库中 4 具体效果图5 推荐阅读 1 简介 基于Python flask 的豆瓣电影分析…