abc362(abcde)

A - Buy a Pen(模拟)

题意:输入红笔r元,绿笔g元,蓝笔b元,不喜欢c笔,求最少花多少钱能买到一支笔

分析:比较除了c笔之外的两根笔,取最小值

代码:

#include<bits/stdc++.h>
using namespace std;
int main(){int r,g,b;cin>>r>>g>>b;string c;cin>>c;if(c[0]=='B')cout<<min(r,g);else if(c[0]=='R')cout<<min(g,b);else cout<<min(r,b);return 0;
}

B - Right Triangle(数学,模拟)

题意:给定三个坐标,求三个坐标俩俩相连围成的三角形是否为直角三角形,如果是输出yes,否则no

分析:先算出每条边,因为第三条边一定大于两边之和,所以再给三条边排序,如果a^2+b^2=c^2就说明是直角三角形

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){int xa,ya,xb,yb,xc,yc;cin>>xa>>ya>>xb>>yb>>xc>>yc;ll a[5];a[1]=(ya-yb)*(ya-yb)+(xa-xb)*(xa-xb);a[2]=(ya-yc)*(ya-yc)+(xa-xc)*(xa-xc);a[3]=(yb-yc)*(yb-yc)+(xb-xc)*(xb-xc);sort(a+1,a+4);if(a[1]+a[2]==a[3])cout<<"Yes"<<endl;else cout<<"No"<<endl;return 0;	
}

C - Sum = 0(贪心)

题意:给定n个区间,如果存在x1,x2,...xn(li<=xi<=ri&&∑xi=0)输出yes和序列,否则no

分析:先令所有数字为右区间,如果(最大的数字)小于0,那么永远都不可能变成0,如果(最小的数字)大于0,那么永远都不可能变成0,再从1遍历到n,判断数字是否要向左移动(向左移动了sum就会变小)

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){int n;cin>>n;ll l[n+10],r[n+10];int a[n+10];ll sum=0;for(int i=1;i<=n;i++){cin>>l[i]>>r[i];sum+=r[i];}if(sum<0)cout<<"No"<<endl;else{for(int i=1;i<=n;i++){if(sum>r[i]-l[i]){sum-=(r[i]-l[i]);r[i]=l[i];}else if(sum==0)break;else{r[i]-=sum;sum=0;}}if(sum>0){cout<<"No"<<endl;return 0;}cout<<"Yes"<<endl;for(int i=1;i<=n;i++){cout<<r[i]<<" ";}}
}

D - Shortest Path 3(最短路dijkstra)

题意:有n个点和m条边,每个顶点的权重为ai,每条边的边权重bi,找出顶点1到顶点i的路径的最小权重

分析:带夫

代码:

#include <bits/stdc++.h>
#include <cstring>
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
typedef long long ll;
ll n, m, cnt;
ll vis[1000005];
ll dis[1000005];
ll head[1000005];
ll a[1000005];
struct edge
{
ll to; // 点
ll w;
ll next;
} edg[1000005];
struct node
{
ll dis; ll pos; 
bool operator<(const node &x) const // 堆优化{
return x.dis < dis;
}
};
void add_edge(ll u, ll v, ll w)
{cnt++;edg[cnt].w = w;edg[cnt].to = v;
edg[cnt].next = head[u];head[u] = cnt;
}
priority_queue<node> q;
void dijkstra()
{node nod;
nod.dis = 0;
nod.pos = 1;
q.push(nod);
while (!q.empty())
{
node tmp = q.top(); // 提取队首元素
q.pop();if (vis[tmp.pos])continue;vis[tmp.pos] = 1;// int W = a[tmp.pos];for (int i = head[tmp.pos]; i; i = edg[i].next){int to = edg[i].to;if (dis[to] > dis[tmp.pos] + edg[i].w + a[to]){
dis[to] = dis[tmp.pos] + edg[i].w + a[to];if (!vis[to])
{
node no;no.dis = dis[to];
no.pos = to;q.push(no);}}}}
}
int main()
{
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; i++){
cin >> a[i];
}memset(dis, 0x7f7f7f7f, sizeof(dis)); // 起点到某点的最短路大小memset(vis, 0, sizeof(vis));dis[1] = 0; // 点s到自己的距离0for (int i = 0; i < m; i++)
{int u, v, w;scanf("%d %d %d", &u, &v, &w);add_edge(u, v, w);add_edge(v, u, w);}dis[1] = a[1];dijkstra();for (int i = 2; i <= n; i++)
{
cout << dis[i] << " ";}return 0;
}

E - Count Arithmetic Subsequences(dp)

题意:给定一个数组A,求长度为k的A的子序列中等差数列的个数。模为998244353。如果两个子序列取自不同的位置,即使它们作为序列是相等的,也是有区别的。

分析:设dpi[d]为以i为结尾公差为d的长度为k的个数。k的范围为[1,n]

当len为1时,d为0;当len为2时,d为两数之差

dpi[ai-aj]=(dpj[ai-aj](j的范围为[2,n-1]

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=100;
const ll mod=998244353;
ll a[N],ans[N];
int main(){int n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];dp[i][1][0]=1;//长度为1为本身ans[1]++;ans[1]%=mod;for(int j=1;j<i;j++){//长度为2dp[i][2][a[i]-a[j]]++;}ans[2]+=i-1;ans[2]%=mod;	}for(int k=3;k<=n;k++){//枚举长度for(int i=3;i<=n;i++){//i为结尾for(int j=i-1;j>=1;j--){//i前面dp[i][k][a[i]-a[j]]+=dp[j][k-1][a[i]-a[j]]%mod;dp[i][k][a[i]-a[j]]%=mod;ans[k]+=dp[j][k-1][a[i]-a[j]]%mod;ans[k]%=mod;}}	}for(int i=1;i<=n;i++){cout<<ans[i]<<" ";}cout<<endl;return 0;
}

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

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

相关文章

【ProtoBuf】通讯录实现(网络版)

Protobuf 还常用于通讯协议、服务端数据交换场景。那么在这个示例中&#xff0c;我们将实现一个网络版本的通讯录&#xff0c;模拟实现客户端与服务端的交互&#xff0c;通过 Protobuf 来实现各端之间的协议序列化。 需求如下&#xff1a; 客户端可以选择对通讯录进行以下操…

达梦数据库 DISQL连接数据库与执行SQL、脚本的方法

DISQL连接数据库与执行SQL、脚本的方法 1.DISQL介绍2.DISQL连接数据库的方法2.1 本地连接2.2 远程连接2.3 CONN连接 3.执行SQL、脚本的方法3.1 通过DISQL登录后在字符界面3.2 启动DISQL时运行脚本3.3 进入DISQL后&#xff0c;通过start命令运行脚本3.4 使用EDIT命令编辑脚本 1.…

PostgreSQL数据库从入门到精通系列之十:表空间、索引表空间、创建表空间、创建索引空间、创建分区表、创建分区表的分区、创建指定表空间、索引表空间的分区表

PostgreSQL数据库从入门到精通系列之十:表空间、索引表空间、创建表空间、创建索引空间、创建分区表、创建分区表的分区、创建指定表空间、索引表空间的分区表 一、数据库表空间和数据库之间的关系二、索引表空间和数据库之间的关系三、创建角色四、创建表空间目录五、创建表空…

23年阿里淘天笔试题 | 卡码网模拟

第一题 字典序最小的 01 字符串 解题思路&#xff1a; 模拟&#xff0c;统计遇到的连续的1的个数记为num&#xff0c;直到遇到0&#xff0c;如果k>num&#xff0c;直接将第一个1置为0&#xff0c;将遇到的0置为1&#xff0c;否则将第一个1偏置num-k个位置置为0&#xff0…

【中项】系统集成项目管理工程师-第3章 信息技术服务-3.1内涵与外延与3.2原理与组成

前言&#xff1a;系统集成项目管理工程师专业&#xff0c;现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试&#xff0c;全称为“全国计算机与软件专业技术资格&#xff08;水平&#xff09;考试”&…

OV7670寄存器读出0x00或0xFF

文章目录 问题描述原因分析解决方案 问题描述 OV7670的输出图像异常&#xff0c;怀疑寄存器没有正确配置&#xff0c;在SignalTap中观察到SIO_D在读出阶段一直为高或低 寄存器读出0x00 寄存器读出0xFF 原因分析 在确保电源、时钟和读写时序没有问题的情况下&#xff0c;有…

PCB系统学习(1)--PCB印制电路板

PCB印制电路板 1.1PCB的定义1.2PCB的层叠结构1.2.1PCB单层板1.2.2PCB双层板1.2.3PCB四层板 1.3PCB的通孔&#xff0c;盲孔&#xff0c;埋孔1.4元器件的符号与封装1.5PCB的生产过程 1.1PCB的定义 PCB(PrintedCircuitBoard)&#xff0c;中文即印制电路板&#xff0c;或印刷线路板…

Linux--多线程

今日内容 线程的结束机制&#xff1a; 1.不同与进程没有孤儿线程和僵尸线程。 2.主进程结束&#xff0c;任意生成的次线程都会结束。(因为共享的进程空间被回收了)。 3.次线程的正常结束不会影响主线程的运行。 子线程的回收策略&a…

分布式ID是什么?有哪些解决方案?

在开发中&#xff0c;我们通常会需要一个唯一ID来标识数据&#xff0c;如果是单体架构我们可以通过数据库的主键&#xff0c;或直接在内存中维护一个自增数字来作为ID都是可以的&#xff0c;但对于一个分布式系统&#xff0c;就会有可能会出现ID冲突&#xff0c;此时有以下解决…

vue3大事件管理系统 === 首页 layout 文章分类页面 -

目录 首页 layout 架子 [element-plus 菜单] 基本架子拆解 登录访问拦截 用户基本信息获取&渲染 退出功能 [element-plus 确认框] 文章分类页面 - [element-plus 表格] 基本架子 - PageContainer 文章分类渲染 封装API - 请求获取表格数据 el-table 表格动态渲染 …

CDM大全

CMD&#xff08;Command Prompt&#xff09;是Windows操作系统中的命令行解释器&#xff0c;它允许用户通过键入命令来执行各种操作。以下是一些常用的CMD命令及其功能说明&#xff1a; 文件和目录管理 dir&#xff1a;显示当前目录中的文件和子目录列表。cd&#xff1a;更改…

《0基础》学习Python——第十八讲__爬虫\<1>

一、什么是爬虫 爬虫是一种网络数据抓取的技术。通过编写程序&#xff08;通常使用Python&#xff09;&#xff0c;爬虫可以自动化地访问网页&#xff0c;解析网页内容并提取出所需的数据。爬虫可以用于各种用途&#xff0c;如搜索引擎的索引&#xff0c;数据分析和挖掘&#x…

NVIDIA 完全过渡到开源 GPU 内核模块

目录 支持的 GPU安装程序更改将包管理器与 CUDA 元包配合使用使用 runfile使用安装帮助程序脚本包管理器详细信息apt&#xff1a;基于 Ubuntu 和 Debian 的发行版dnf&#xff1a;Red Hat Enterprise Linux、Fedora、Kylin、Amazon Linux 或 Rocky Linuxzypper&#xff1a;SUSE …

怎么关闭 Windows 安全中心,手动关闭 Windows Defender 教程

Windows 安全中心&#xff08;也称为 Windows Defender Security Center&#xff09;是微软 Windows 操作系统内置的安全管理工具&#xff0c;用于监控和控制病毒防护、防火墙、应用和浏览器保护等安全功能。然而&#xff0c;在某些情况下&#xff0c;用户可能需要关闭 Windows…

光电传感器的详细介绍,包括其原理、结构、分类、应用以及技术发展趋势

光电传感器是一种利用光电转换原理&#xff0c;将光信号转换为电信号的传感器。它在工业自动化、物流、医疗、安全等领域有着广泛的应用&#xff0c;是实现各种检测、测量和控制功能的重要元件。以下是对光电传感器的详细介绍&#xff0c;包括其原理、结构、分类、应用以及技术…

【分布式事务】怎么解决分布式场景下数据一致性问题

分布式事务的由来 拿充值订单举个栗子吧&#xff0c;假设&#xff1a;原本订单模块和账户模块是放在一起的&#xff0c;现在需要做服务拆分&#xff0c;拆分成订单服务&#xff0c;账户余额服务。原本收到充值回调后&#xff0c;可以将修改订单状态和扣减余额放在一个mysql事务…

C语言 | Leetcode C语言题解之第236题二叉树的最近公共祖先

题目&#xff1a; 题解&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/typedef struct road_t {struct TreeNode *road_node; // 途径路径struct road_t *p_next; }…

IPD与CBB研发技术管理体系培训

获取下载完整PPT见下图 更多有关华为研发管理/IPD、MBSE、PLM、ERP、MES、数据治理、数字样机等方面免费解决方案、资料获取&#xff0c;请见下图

python—爬虫的初步了解

Python 爬虫&#xff08;Web Scraping&#xff09;是一种自动化从网站上提取数据的技术。Python 由于其简洁的语法、丰富的库和强大的社区支持&#xff0c;成为了实现网络爬虫的首选语言之一。下面是一些Python爬虫的基本概念和步骤&#xff1a; 1. 爬虫的基本概念 请求&…

深入理解Java线程的状态

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…