AtCoder Beginner Contest 400(ABCDE)
A - ABC400 Party
翻译:
在 ABC400 的纪念仪式上,我们想把 400 人排成 A 行 B 列的长方形,且不留任何空隙。
给你一个正整数 A,请打印可以这样排列的正整数 B 的值。如果没有这样的正整数 B,则打印-1。
思路:
判断能否整除即可。
实现:
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int MX = 51000;void solve(){int a;cin>>a;int b = 400/a;if (a*b==400){cout<<b<<endl; } else{cout<<-1<<endl;}
}int main(){// 鍏抽棴杈撳叆杈撳嚭娴佸悓姝?ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);// 涓嶄娇鐢ㄧ瀛﹁鏁版硶// cout<<fixed;// 鍥涜垗浜斿叆涓棿濉繚鐣欏嚑浣嶅皬鏁帮紝涓嶅~榛樿// cout.precision();solve(); return 0;
}
B - Sum of Geometric Series
翻译:
给你两个正整数N,M。
让
。如果X<=1e9打印X的值,否则打印inf。
思路:
暴力求解,当算到X>1e9时直接输出inf。
实现:
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const ll MX = 1e9;
ll n,m,ans = 0;
void solve(){cin>>n>>m;ll now_n = 1;for (int i=0;i<=m;i++){ans+=now_n;now_n *= n;if (ans>MX || (now_n>MX && i!=m)){cout<<"inf"<<endl;return;}}cout<<ans<<endl;
}int main(){// 鍏抽棴杈撳叆杈撳嚭娴佸悓姝?ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);// 涓嶄娇鐢ㄧ瀛﹁鏁版硶// cout<<fixed;// 鍥涜垗浜斿叆涓棿濉繚鐣欏嚑浣嶅皬鏁帮紝涓嶅~榛樿// cout.precision();solve(); return 0;
}
C - 2^a b^2
翻译:
当且仅当一个正整数 X 满足以下条件时,它才被称为好整数:
- 存在一对整数(a,b)如此
例如,400 是一个好整数,因为
。
给定一个正整数 N,求 1 到 N 之间(包括 N)的好整数个数。
思路:
每个 好整数 的b必定可以是一个奇数,那么先从1开始通过遍历a,结束条件为2^a>N,其间使用二分求出b的最大值,可得到在a_i的情况下有种b是可用的(b要为奇数)。
注意在二分中可使用
的方法避免大数相乘。这题中要注意整数溢出问题。(二分,数论)
实现:
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
ll N, ans = 0;
ll integer_sqrt(ll x) {if (x <= 0) return 0;ll left = 0, right = min(x, (ll)1e9)+1; while (left+1 != right) {ll mid = (right + left) / 2;if (mid <= x / mid) { left = mid ;} else {right = mid ;}}return left;
}void solve() {cin >> N;ll now = 1;for (int a = 1; ; a++) {now *= 2;if (now > N) break;ll x = N / now;ll tmp = integer_sqrt(x);ans += tmp / 2; if (tmp % 2 == 1) ans++; }cout << ans << "\n";
}int main() {ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);solve();return 0;
}
D - Takahashi the Wall Breaker
翻译:
高桥正准备去鱼店买鳗鱼。
他居住的小镇被划分成 H 行 W 列的网格。
每个单元格要么是一条路,要么是一堵墙。
我们把从上往下第 i 行(1≤i≤H)和从左往上第 j 列(1≤j≤W)的单元格记为单元格 (i,j)。具体来说,如果 S i 的第 j 个字符(1≤i≤H,1≤j≤W)是 .,则(i,j) 单元是一条路;如果是 #,则 (i,j) 单元是一堵墙。
他可以按任意顺序重复执行以下两种操作:
- 移动到相邻的单元格(向上、向下、向左或向右),该单元格位于小镇内且是道路。
- 从四个方向(上、下、左或右)中选择一个,然后朝该方向踢一脚。
- 当他踢出前踢腿时,在距离他当前所在的小格最多 2 步远的地方,如果该小格是墙,就会变成路。
- 如果最远 2 步之外的一些单元格在城镇之外,则仍然可以进行前踢,但城镇之外的任何东西都不会改变。
他从(A,B)单元格开始,想移动到(C,D)单元格的鱼店。他开始所在的单元格和有鱼店的单元格都是道路。
求他到达鱼店所需的最小前踢数
思路:
参考最短路的思路,使用堆和广度优先搜索,记录每个点的前踢数,如有更新点的前踢数放入堆中。(数据结构,贪心,广搜)
实现:
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const ll MX = 1e9;
ll h,w,x1,yy,x2,y2;
vector<array<int,2>> direct(4);
struct cmp{bool operator()(array<int,3> x,array<int,3> y){return y[0]<x[0];}
};
void solve(){direct[0] = {0,1};direct[1] = {1,0};direct[2] = {0,-1};direct[3] = {-1,0};cin>>h>>w;vector<vector<char>> maze(h+1,vector<char>(w+1));vector<vector<int>> vis(h+3,vector<int>(w+3,INT_MAX));for (int i=1;i<=h;i++){for (int j=1;j<=w;j++){cin>>maze[i][j];}}cin>>x1>>yy>>x2>>y2;vis[x1][yy] = 0;priority_queue<array<int,3>,vector<array<int,3>>,cmp> pq;pq.push({0,x1,yy});while (!pq.empty()){int val = pq.top()[0],x = pq.top()[1],y = pq.top()[2];pq.pop();for (auto& i:direct){int now_x = x+i[0],now_y = y+i[1],tmp_x = x+2*i[0],tmp_y = y+2*i[1];if (now_x<=h && now_x>=1 && now_y<=w && now_y>=1){if (maze[now_x][now_y]=='#'){if (vis[now_x][now_y]>val+1){pq.push({val+1,now_x,now_y});vis[now_x][now_y] = val+1;}if (tmp_x<=h && tmp_x>=1 && tmp_y<=w && tmp_y>=1){if (vis[tmp_x][tmp_y]>val+1){pq.push({val+1,tmp_x,tmp_y});vis[tmp_x][tmp_y] = val+1;}}}else{if (vis[now_x][now_y]>val){pq.push({val,now_x,now_y});vis[now_x][now_y] = val;}if (tmp_x<=h && tmp_x>=1 && tmp_y<=w && tmp_y>=1){if (maze[tmp_x][tmp_y]=='#'){if (vis[tmp_x][tmp_y]>val+1){pq.push({val+1,tmp_x,tmp_y});vis[tmp_x][tmp_y] = val+1;}}else{if (vis[tmp_x][tmp_y]>val){pq.push({val,tmp_x,tmp_y});vis[tmp_x][tmp_y] = val;} }}}}}}cout<<vis[x2][y2]<<endl;
}int main(){// 鍏抽棴杈撳叆杈撳嚭娴佸悓姝?ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);// 涓嶄娇鐢ㄧ瀛﹁鏁版硶// cout<<fixed;// 鍥涜垗浜斿叆涓棿濉繚鐣欏嚑浣嶅皬鏁帮紝涓嶅~榛樿// cout.precision();solve(); return 0;
}
E - Ringo's Favorite Numbers 3
翻译:
当且仅当正整数 N 同时满足以下两个条件时,它是一个 400 数:
- N 恰好有 2 个不同的质因数。
- 对于 N 的每个质因数 p,p 平分 N 的次数是偶数。更正式地说,能使 p k 除以 N 的最大非负整数 k 是偶数。
处理 Q 个查询。每个查询都会给出一个整数 A,因此请找出不超过 A 的最大 400 个数。在此问题的限制条件下,不超过A 的 400 个数总是存在的。
思路:
先预处理,先求出1e6内的质数,再求出这些质数能得到的值(<=1e12),在求组合中使用剪枝(两质数相乘>1e6不可行),否则超时。通过去除。
在每次询问中使用二分求解答案即可。这题也要注意边界条件。(深搜,数论)
实现:
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const ll MX = 1e6+10;
const ll MXX = 1e12+10;
ll a;
vector<ll> num(MX,0),prime,ans;
void init(){for (ll i=2;i<MX;i++){if (!num[i]){prime.push_back(i);for (ll j=i+i;j<MX;j+=i){num[j] = 1;}}}ll n = prime.size();for (ll i=0;i<n;i++){for (ll j=i+1;j<n;j++){ll p = prime[i],q = prime[j];if (p*q>MX) break;p*=p,q*=q;// cnt number based on p,qauto dfs = [&](auto&&dfs,ll x,ll y)->void{if (x*y<=MXX){ans.push_back(x*y);if (x<=MXX/y/p){dfs(dfs,x*p,y);} if (y<=MXX/x/q){dfs(dfs,x,y*q);} }};dfs(dfs,p,q);}}sort(ans.begin(),ans.end());ans.erase(unique(ans.begin(),ans.end()),ans.end());
}
void solve() {cin>>a;cout<<ans[upper_bound(ans.begin(),ans.end(),a)-ans.begin()-1]<<endl;
}int main() {ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);init(); ll q;cin>>q;while (q--) solve();return 0;
}
有建议可以评论,我会积极改进qwq。
相关文章:
AtCoder Beginner Contest 400(ABCDE)
A - ABC400 Party 翻译: 在 ABC400 的纪念仪式上,我们想把 400 人排成 A 行 B 列的长方形,且不留任何空隙。 给你一个正整数 A,请打印可以这样排列的正整数 B 的值。如果没有这样的正整数 B,则打印-1。 思路ÿ…...
Flask+Vue构建图书管理系统及Echarts组件的使用
教程视频链接从零开始FlaskVue前后端分离图书管理系统 后端 项目下载地址 其中venv为该项目的虚拟环境,已安装所有依赖 使用方法: 在pycharm终端中flask create一下(因为写了一个自定义命令的代码),初始化books数据…...
【项目管理】第2章 信息技术发展 --知识点整理
Oracle相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 (一)知识总览 对应:第1章-第5章 (二)知识笔记 二、信息技术的发展 1. 信息技术及其发展 1)计算机软硬件 计算机硬件由电子机械、光电元件等组成的物理装置,提供物质基础给计算机软件运行。软件包括程…...
Spring 中有哪些设计模式?
🧠 一、Spring 中常见的设计模式 设计模式类型Spring 中的应用场景单例模式创建型默认 Bean 是单例的工厂模式创建型BeanFactory、FactoryBean抽象工厂模式创建型ApplicationContext 提供多个工厂接口代理模式结构型AOP 动态代理(JDK/CGLIB)…...
4-c语言中的数据类型
一.C 语⾔中的常量 1.生活中的数据 整数: 100,200,300,400,500 小数: 11.11 22.22 33.33 字母: a,b,c,d A,B,C,D 在 C 语⾔中我们把字⺟叫做字符. 字符⽤单引号引⽤。例如A’ 单词…...
LORA+llama模型微调全流程
LORAllama.cpp模型微调全流程 准备阶段 1.下载基础大模型 新建一个download.py脚本 from modelscope import snapshot_download#模型存放路径 model_path /root/autodl-tmp #模型名字 name itpossible/Chinese-Mistral-7B-Instruct-v0.1 model_dir snapshot_download(na…...
02_使用Docker在服务器上部署Jekins实现项目的自动化部署
02_使用Docker在服务器上部署jenkins实现项目的自动化部署 一、使用docker拉取阿里云容器私有镜像仓库内的jenkins镜像 登录阿里云Docker Registry $ sudo docker login --usernamewxxxo1xxx registry.cn-shanghai.aliyuncs.com用于登录的用户名为阿里云账号全名,…...
Spring 执行流程(源码)
我们对SpringApplication中的run()方法内部进行一些简单的分析 1. //记录一下程序启动开始的事件,用于之后的统计耗时 long startTime System.nanoTime(); //通过调用SpringApplication的**createBootstrapContext()**方法,创建**bootstrapContext**…...
Python学习之numpy
Python学习之numpy 数组是Numpy库的核心数据结构。 NumPy 是一个 Python 包。 它代表 “Numeric Python”。 它是一个由多维数组对象和用于处理数组的例程集合组成的库。 Numeric,即 NumPy 的前身,是由 Jim Hugunin 开发的。 也开发了另一个包 Numarr…...
安装完 miniconda3 ,cmd无法执行 conda 命令
提示:安装 miniconda3 文章目录 前言一、安装二、安装完,cmd 无法执行 conda 前言 提示:版本 系统:win10 codna: miniconda3 安装完 miniconda3 ,cmd无法执行 conda 命令 提示:以下是本篇文章正文内容&am…...
PyTorch 实现图像版多头注意力(Multi-Head Attention)和自注意力(Self-Attention)
本文提供一个适用于图像输入的多头注意力机制(Multi-Head Attention)PyTorch 实现,适用于 ViT、MAE 等视觉 Transformer 中的注意力计算。 模块说明 输入支持图像格式 (B, C, H, W)内部转换为序列 (B, N, C),其中 N H * W多头注…...
从 Credit Metrics 到 CPV:现代信用风险模型的进化与挑战
文章目录 一、信用风险基础二、Credit Risk 模型核心思想关键假设模型框架实施步骤优缺点适用场景 三、Credit Metrics 模型核心思想关键假设模型框架实施步骤优缺点适用场景 四、Credit Portfolio View 模型核心思想关键假设模型框架实施步骤优缺点适用场景 五、总结 一、信用…...
Docker快速安装MongoDB并配置主从同步
目录 一、创建相关目录及授权 二、下载并运行MongoDB容器 三、配置主从复制 四、客户端远程连接 五、验证主从同步 六、停止和恢复复制集 七、常用命令 一、创建相关目录及授权 创建主节点mongodb数据及日志目录并授权 mkdir -p /usr/local/mongodb/mongodb1/data mkdir …...
Kafka 中的事务
Kafka 中的 事务(Transactions) 是为了解决 消息处理的原子性和幂等性问题,确保一组消息要么全部成功写入、要么全部失败,不出现中间状态或重复写入。事务机制尤其适合于 “精确一次(Exactly-Once)” 的处理…...
C++ 内存访问模式优化:从架构到实践
内存架构概览:CPU 与内存的 “速度博弈” 层级结构:从寄存器到主存 CPU 堪称计算的 “大脑”,然而它与内存之间的速度差距,宛如高速公路与乡间小路。现代计算机借助多级内存体系来缓和这一矛盾,其核心思路是…...
Golang系列 - 内存对齐
Golang系列-内存对齐 常见类型header的size大小内存对齐空结构体类型参考 摘要: 本文将围绕内存对齐展开, 包括字符串、数组、切片等类型header的size大小、内存对齐、空结构体类型的对齐等等内容. 关键词: Golang, 内存对齐, 字符串, 数组, 切片 常见类型header的size大小 首…...
SOMEIP通信矩阵解读
目录 1 摘要2 SOME/IP通信矩阵详细属性定义与示例2.1 服务基础属性2.2 数据类型定义2.3 服务实例与网络配置参数2.4 SOME/IP-SD Multicast 配置(SOME/IP服务发现组播配置)2.5 SOME/IP-SD Unicast 配置2.6 SOME/IP-SD ECU 配置参数详解 3 总结 1 摘要 本…...
Excel + VBA 实现“准实时“数据的方法
Excel 本身是静态数据处理工具,但结合 VBA(Visual Basic for Applications) 可以实现 准实时数据更新,不过严格意义上的 实时数据(如毫秒级刷新)仍然受限。以下是详细分析: 1. Excel + VBA 实现“准实时”数据的方法 (1) 定时刷新(Timer 或 Application.OnTime) Appl…...
网络原理 - HTTP/HTTPS
1. HTTP 1.1 HTTP是什么? HTTP (全称为 “超文本传输协议”) 是⼀种应用非常广泛的应用层协议. HTTP发展史: HTTP 诞生于1991年. 目前已经发展为最主流使用的⼀种应用层协议 最新的 HTTP 3 版本也正在完善中, 目前 Google / Facebook 等公司的产品已经…...
C++设计模式-解释器模式:从基本介绍,内部原理、应用场景、使用方法,常见问题和解决方案进行深度解析
一、解释器模式的基本介绍 1.1 模式定义与核心思想 解释器模式(Interpreter Pattern)是一种行为型设计模式,其核心思想是为特定领域语言(DSL)定义语法规则,并构建一个解释器来解析和执行该语言的句子。它…...
OCC Shape 操作
#pragma once #include <iostream> #include <string> #include <filesystem> #include <TopoDS_Shape.hxx> #include <string>class GeometryIO { public:// 加载几何模型:支持 .brep, .step/.stp, .iges/.igsstatic TopoDS_Shape L…...
深度学习入门(四):误差反向传播法
文章目录 前言链式法则什么是链式法则链式法则和计算图 反向传播加法节点的反向传播乘法节点的反向传播苹果的例子 简单层的实现乘法层的实现加法层的实现 激活函数层的实现ReLu层Sigmoid层 Affine层/SoftMax层的实现Affine层Softmax层 误差反向传播的实现参考资料 前言 上一篇…...
Linux:页表详解(虚拟地址到物理地址转换过程)
文章目录 前言一、分页式存储管理1.1 虚拟地址和页表的由来1.2 物理内存管理与页表的数据结构 二、 多级页表2.1 页表项2.2 多级页表的组成 总结 前言 在我们之前的学习中,我们对于页表的认识仅限于虚拟地址到物理地址转换的桥梁,然而对于具体的转换实现…...
AF3 OpenFoldDataLoader类解读
AlphaFold3 data_modules 模块的 OpenFoldDataLoader 类继承自 PyTorch 的 torch.utils.data.DataLoader。该类主要对原始 DataLoader 做了批数据增强与控制循环迭代次数(recycling)相关的处理。 源代码: class OpenFoldDataLoader(torch.utils.data.DataLoader):def __in…...
初见TypeScript
类型语言,在代码规模逐渐增大时,类型相关的错误难以排查。TypeScript 由微软开发,它本质上是 JavaScript 的超集,为 JavaScript 添加了静态类型系统,让开发者在编码阶段就能发现潜在类型错误,提升代码质量&…...
常见的 JavaScript 框架和库
在现代前端开发中,JavaScript框架和库成为了构建高效、可维护应用程序的关键工具。本文将介绍四个常见的JavaScript框架和库:React、Vue.js、Angular 和 Node.js,并探讨它们的特点、使用场景及适用场合。 1. React — 构建用户界面的JavaScri…...
机器学习代码基础——ML2 使用梯度下降的线性回归
ML2 使用梯度下降的线性回归 牛客网 描述 编写一个使用梯度下降执行线性回归的 Python 函数。该函数应将 NumPy 数组 X(具有一列截距的特征)和 y(目标)作为输入,以及学习率 alpha 和迭代次数,并返回一个…...
PostgreSQL 一文从安装到入门掌握基本应用开发能力!
本篇文章主要讲解 PostgreSQL 的安装及入门的基础开发能力,包括增删改查,建库建表等操作的说明。navcat 的日常管理方法等相关知识。 日期:2025年4月6日 作者:任聪聪 一、 PostgreSQL的介绍 特点:开源、免费、高性能、关系数据库、可靠性、稳定性。 官网地址:https://w…...
WEB安全--内网渗透--LMNTLM基础
一、前言 LM Hash和NTLM Hash是Windows系统中的两种加密算法,不过LM Hash加密算法存在缺陷,在Windows Vista 和 Windows Server 2008开始,默认情况下只存储NTLM Hash,LM Hash将不再存在。所以我们会着重分析NTLM Hash。 在我们内…...
查询条件与查询数据的ajax拼装
下面我将介绍如何使用 AJAX 动态拼装查询条件和获取查询数据,包括前端和后端的完整实现方案。 一、前端实现方案 1. 基础 HTML 结构 html 复制 <div class"query-container"><!-- 查询条件表单 --><form id"queryForm">…...
