【补题/atccoder】Toyota Programming Contest 2024#7(AtCoder Beginner Contest 362)

A、买笔

思路:

输入红绿蓝三只笔价格,再输入不喜欢颜色,

输出除不喜欢颜色笔以外最低价格

代码如下:

#include <iostream>
#include <algorithm>
using namespace std;int main()
{int r, g, b;cin >> r >> g >> b;string s;cin >> s;if (s == "Red"){if (g < b) cout << g;else cout << b;}else if (s == "Green"){if (r < b)cout << r;else cout << b;}else if (s == "Blue"){if (r < g)cout << r;else cout << g;}return 0;
}

B、判断是否为直角三角形

题目本质:

给定不共线的三点,判断他们是否可以形成直角三角形。

注意:需要用long long类型。

#include<iostream>
#include <cmath>
using namespace std;
int main() {int a1, a2, b1, b2, c1, c2;cin >> a1 >> a2 >> b1 >> b2 >> c1 >> c2;int ab = abs(a1 - b1) * abs(a1 - b1) + abs(a2 - b2) * abs(a2 - b2);int ac = abs(a1 - c1) * abs(a1 - c1) + abs(a2 - c2) * abs(a2 - c2);int	bc = abs(c1 - b1) * abs(c1 - b1) + abs(c2 - b2) * abs(c2 - b2);if (ab + ac == bc || ab + bc == ac || ac + bc == ab) cout << "Yes";else cout << "No";return 0;
}

C、和值为0

数据输入/输出

样例1:

输入:

3
3 5
-4 1
-2 3
输出:

Yes
4 -3 -1 (结果不唯一)
 

样例2:

输入:

3
1 2
1 2
1 2
输出:

No

题目本质:

给定L,X,R三个数组,已知L,R的数据,并且L[i] <= X[i] <= R[i]。

思路:

设s_min为L的和,s_max为R的总和,当s_min大于0或者s_max小于0,不可能存在

然后我们给X初始化为L,此时X的和为s(等于s_min),然后用dif 存下 (R[i] - L[i],-s)的较小值。

当s<0时,则dif则增加X[i],间接增加s的值

当 s >0,则dif则减少X[i],间接减少s的值

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
typedef long long LL;
LL s_min, s_max;int main()
{int n;cin >> n;vector<int> L(n), R(n), X(n);for (int i = 0; i < n; i++){cin >> L[i] >> R[i];s_min += L[i];s_max += R[i];}if (s_min > 0 || s_max < 0) cout << "No" << "\n";else{cout << "Yes" << "\n";for (int i = 0; i < n; i++) X[i] = L[i]; //给x先赋初值LL s = s_min; //s一定为负数for (int i = 0; i < n; i++) {if (s == 0) break;//由于R[i] - L[i] >=0//s为负数,X[i]增加,那么s也增加LL dif = min((LL)R[i] - L[i], -s); X[i] += dif;s += dif;}for (int i = 0; i < n; i++)cout << X[i] << " ";}return 0;
}

D、最短路径

样例1输入:

3 3
1 2 3
1 2 1
1 3 6
2 3 2
输出:4 9
 

样例2输入:

2 1
0 1
1 2 3
输出:4

样例3输入:

5 8
928448202 994752369 906965437 942744902 907560126
2 5 975090662
1 2 908843627
1 5 969061140
3 4 964249326
2 3 957690728
2 4 942986477
4 5 948404113
1 3 988716403
输出:2832044198 2824130042 4696218483 2805069468

题目本质就是给定n个点,m条边,

先输入每个点的自身权值,然后再输入m条边的权值。输入时不可能输入同一边的不同权值

如样例一中,1到2的最小权值为 1 + 1 + 2 = 4;

1到3的最小权值为 4 + 3 + 2 = 9;

’思路:

可以用better_dijkstra()来写,

#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <queue>
using namespace std;
const int N = 2e5 + 10;
typedef long long ll;
typedef pair<ll, int> PII; //权值和终点
ll dist[N], a[N];// 存储1号点到每个点的最短距离,每个点自身权值
int n, m;struct Node {int y, val; //终点和权值
};
vector<Node> f[N];void  better_dijkatra(int st)
{memset(dist, 0x3f3f, sizeof dist);priority_queue<PII, vector<PII>, greater<PII>> q;dist[st] = a[st];q.push({ dist[st],st });while (!q.empty()){ll d = q.top().first, u = q.top().second; //终点和权值q.pop();if (d > dist[u]) continue;for (auto edge : f[u]) //遍历当前终点所连接的边{ll v = edge.y, val = edge.val;if (dist[u] + val + a[v] < dist[v]){//当前两点的权值等于边权+之前最短点权值,加终点自身权值dist[v] = dist[u] + val + a[v]; q.push({ dist[v], v });}}}
}int main()
{cin >> n >> m;for (int i = 1; i <= n; i++)  cin >> a[i];while (m--){int u, v, b;cin >> u >> v >> b;f[u].push_back({ v,b });f[v].push_back({ u,b });}better_dijkatra(1); //从1号点开始for (int i = 2; i <= n; i++) cout << dist[i] << " ";return 0;
}

E、计算算术子序列的数目

样例1输入:

5
1 2 3 2 3

输出:5 10 3 0 0
 

样例2输入:

4
1 2 3 4

输出:4 6 2 1
 

样例3输入:

1
100

输出:1

题目本质:

相当于对于n个数字,输出长度为i(1<=i<=n)的子序列个数,对于子序列要求其相应顺序不变,比如样例1中

长度为1的子序列:(1)、(2)、(3)、(4)、(5)

长度为2的子序列:长度为2的子序列都是算术子序列

长度为3的子序列:(1,2,3)、(1,2,5)、(1,4,5)

长度为4的子序列:0

长度为5的子序列:0

注意:

子序列:是通过从原序列删除零个或多个元素并在不改变顺序的情况下排列其余元素而获得的序列

算术序列:是一个数字列表,其中的连续项相差一个常数,即共同的差(也就是类似于等差数列)

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll;
const ll N = 85, M = 998244353;
ll n, a[N], f[N][N][N];
int main() {cin >> n;for (int i = 1; i <= n; i++) cin >> a[i];for (int i = 1; i <= n; i++) {for (int j = 1; j < i; j++) f[i][j][2] = 1; //初始化}cout << n << ' ';ll ans = 0;for (int l = 2; l <= n; l++) {ll as = 0;for (int i = 2; i <= n; i++) {for (int j = 1; j < i; j++) {for (int k = 1; k < j; k++) {if (a[i] - a[j] == a[j] - a[k]) {f[i][j][l] += f[j][k][l - 1];f[i][j][l] %= M;}}as += f[i][j][l], as %= M;}}cout << as << ' ';//ans += as;}//cout << ans << "\n";return 0;
}

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

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

相关文章

【含开题报告+文档+源码】基于Web的房地产销售网站的设计与实现

开题报告 随着经济的发展和城市化进程的加速&#xff0c;房地产市场逐渐成为人们关注的焦点。然而&#xff0c;传统的房地产销售模式存在很多问题&#xff0c;如信息不透明、交易过程繁琐、无法满足个性化需求等。这些问题不仅影响了消费者的购房体验&#xff0c;也制约了房地…

网络层3——IP数据报转发的过程

目录 一、基于终点的转发 1、理解 2、IP数据报转发过程 二、最长前缀匹配 1、理解 2、主机路由 3、默认路由 三、二叉线索查找 一、基于终点的转发 1、理解 理解什么叫终点转发 IP数据报的传递&#xff0c;交给路由器后 可不可以做到直接发送给目的主机呢&#xff1f;…

【LwIP源码学习4】主线程tcpip_thread

前言 本文对lwip的主要线程tcpip_thread进行分析。 正文 tcpip_thread是lwip最主要的线程&#xff0c;其创建在tcpip_init函数中 sys_thread_new(TCPIP_THREAD_NAME, tcpip_thread, NULL, TCPIP_THREAD_STACKSIZE, TCPIP_THREAD_PRIO);tcpip_init函数被TCPIP_Init函数调用。…

前端的导入导出「CommonJS」「ES Module」模块化规范

模块化开发有助于我们将代码进行拆分&#xff0c;便于开发和维护&#xff0c;但如果不清楚模块化规范&#xff0c;就会在开发时不知道该用 require 还是 import&#xff0c;导出时该用 export 还是 module.exports 参考博主文章

CoEdge: 面向自动驾驶的协作式边缘计算系统,实现分布式实时深度学习任务的高效调度与资源优化

文章导读 CoEdge系统的构思基于边缘计算的发展&#xff0c;这一分布式计算范式将服务从云端推向网络边缘&#xff0c;以支持各种物联网应用&#xff0c;如智能交通和自动驾驶。随着通信技术的进步&#xff0c;出现了新的协作边缘系统&#xff0c;多个边缘节点可以通过本地点对…

操作系统进程的描述与控制知识点

前趋图和程序执行 前趋图 定义&#xff1a; 前趋图是指一个有向无循环图&#xff0c;可记为 DAG&#xff0c;它用于描述进程之间执行的先后顺序图形表示&#xff1a; 程序的执行 程序顺序执行时&#xff0c;系统资源的利用率很低 程序顺序执行时的特征 顺序性封闭性可再现性 …

移远通信推出八款天线新品,覆盖5G、4G、Wi-Fi和LoRa领域

近日&#xff0c;全球领先的物联网整体解决方案供应商移远通信宣布&#xff0c;再次推出八款高性能天线新品&#xff0c;进一步丰富其天线产品阵容&#xff0c;更好地满足全球客户对高品质天线的更多需求。具体包括5G超宽带天线YECT005W1A和YECT004W1A、5G天线YECT028W1A、4G天…

k8s简单的指令以及图解

k8s简单的操作指令 1.kubectl get pods 查看全部的pods 也就是k8s中的最小颗粒度 2.kubectl describe podsname 查看pod的详情 3.kubectl get pods -n podsname 查看pod服务是否正常 4.kubectl logs -f 容器name --tail1000 -n podname 查看pod 的日志 5.kubectl get service …

Python复习1:

一、数据类型 1.数字&#xff1a;int、float、bool 2.字符串&#xff1a;string 3.列表&#xff1a;list 4.集合&#xff1a;set 5.字典&#xff1a;dictionary 二、Test 1.print输出固定格式 num110 str1"hello world" #输出的固定格式 print("num1%d&…

UVM验证该去大公司还是中型公司呢?

无论是UVM验证还是系统C验证亦或是其它&#xff0c;大公司的普遍特点是做过多层封装、已经准备好轮子、各式各样的工具库。如果一毕业就进大公司&#xff0c;那你会在UVM等基础之上再学习公司封装的那部分工具、脚本或者是库&#xff0c;一旦掌握以后你接下来将会脱离一些初级的…

法律文件智能识别:免费OCR平台优化数字化管理

一、系统概述 在法律行业&#xff0c;纸质文件的数字化需求日益迫切&#xff0c;合同、判决书、协议等文件的管理成为法律部门的一大难题。传统手动输入不仅耗时&#xff0c;且易出错。思通数科的OCR识别平台应运而生&#xff0c;以其开源、免费的特性为法律文档管理提供了智能…

koa + sequelize做距离计算(MySql篇)

1.核心思路 1.利用sequelize的fn方法调用MySql原生函数&#xff08;st_distance_sphere、point&#xff09; 2.这里利用到了MySql的原生函数&#xff0c;不懂可以去看看mysql的函数知识 2.核心代码 //st_distance_sphere、point函数用来计算当前经纬度和目的地经纬度 //col…

小程序分包看完这一篇秒懂

前言 在小程序开发中&#xff0c;分包是一种优化加载时间和用户体验的方法。通过将小程序拆分成多个包&#xff0c;可以按需加载&#xff0c;从而减少首次加载时间。很多刚涉及小程序开发的小伙伴对小程序分包都相对茫然或者头疼。也不知道该合适进行分包&#xff0c;怎么进行…

第02章 MySQL环境搭建

一、MySQL的卸载 如果安装mysql时出现问题&#xff0c;则需要将mysql卸载干净再重新安装。如果卸载不干净&#xff0c;仍然会报错安装不成功。 步骤1&#xff1a;停止MySQL服务 在卸载之前&#xff0c;先停止MySQL8.0的服务。按键盘上的“Ctrl Alt Delete”组合键&#xff0…

1.探索WebSocket:实时网络的心跳!

序言 你可能听说过"WebSokcet"这个词&#xff0c;感觉它好像很高深&#xff0c;但其实它是一个超级酷的小工具&#xff0c;让我们在Web应用里实现实时通信。想象一下&#xff0c;你可以像聊天一样&#xff0c;在浏览器和服务器之间来回“畅聊“&#xff0c;没有延迟…

Qt6 CMake 中引入 Qt Linguist 翻译功能

qt cmake 使用自带翻译工具配置步骤 创建Qt CMake 程序大体流程配置项目 CMake 及 代码使用流程最终CMake 如下最终工程链接为&#xff1a;参考 创建Qt CMake 程序 大体流程 配置项目 CMake 及 代码 在CMake 中添加如下代码, 导入相关的翻译库 find_package(QT NAMES Qt6 Qt…

【Linux】——如何安装g++

g的安装 sudo yum install -y gcc-c

FET113i-S核心板已支持RISC-V,打造国产化降本的更优解 -飞凌嵌入式

FET113i-S核心板是飞凌嵌入式基于全志T113-i处理器设计的国产工业级核心板&#xff0c;凭借卓越的稳定性和超高性价比&#xff0c;FET113i-S核心板得到了客户朋友们的广泛关注。作为一款拥有A7核RISC-V核DSP核的多核异构架构芯片&#xff0c;全志科技于近期释放了T113-i的RISC-…

基于python的机器学习(二)—— 使用Scikit-learn库

目录 一、样本及样本划分 1.1 划分样本的方法 1.1.1 train_test_split()函数 1.1.2 时间序列划分 1.1.3 交叉验证 二、导入或创建数据集 2.1 导入Sklearn自带的样本数据集 2.2 利用Sklearn生成随机的数据集 2.3 读入自己创建的数据集 2.3.1 用Python直接读取文本文件…

【LQB15_模拟】C风险对冲

Description 小蓝所在的蓝星集团即将建立执行一个重要的项目&#xff0c;在建立项目的时候需要考虑执行这个项目对集团的风险。他们组有三个备选方案&#xff0c;方案A的风险评估值为a&#xff0c;方案B的风险评估值为b&#xff0c;方案C的风险评估值为c。方案风险评估值越低&…