AtCoder Beginner Contest 336 A-E 题解
比赛链接:https://atcoder.jp/contests/abc336
比赛时间:2024 年 1 月 14 日 20:00-21:40
A题:Long Loong
标签:模拟
题意:给定一个 n n n,输出 L L L、 n n n个 o o o和 n g ng ng。
题解:按题意模拟即可。
代码:
#include <bits/stdc++.h>
using namespace std;int main() {cout << "L";int n;cin >> n;for (int i = 1; i <= n; i++)cout << "o";cout << "ng";return 0;
}
B题:CTZ
标签:模拟
题意:给定一个十进制数 n n n,求该数转换成 2 2 2进制之后末尾连续 0 0 0的个数。( 1 < = n < = 1 0 9 1<=n<=10^9 1<=n<=109)
题解:模拟,二进制转换,累计一下末尾 0 0 0个数,直到不是 0 0 0,跳出循环。
代码:
#include <bits/stdc++.h>
using namespace std;int main() {int n, c = 0;cin >> n;while (n) {if (n % 2 == 0) c++;else break;n /= 2;}cout << c;return 0;
}
C题:Even Digits
标签:思维、数学
题意:给出定义十进制数 x x x的所有数位都是偶数(即 0 、 2 、 4 、 6 、 8 0、2、4、6、8 0、2、4、6、8)的时候称为 “好整数”,给定一个 n n n,求第 n n n小的 “好整数”。( 1 < = n < = 1 0 12 1<=n<=10^{12} 1<=n<=1012)
前几个 “好整数” 分别为 0 、 2 、 4 、 6 、 8 、 20 、 22 、 24 、 26 、 28... 0、2、4、6、8、20、22、24、26、28... 0、2、4、6、8、20、22、24、26、28...
题解:每个数位都是最多 5 5 5种可能,我们可以先求出超过 n n n需要的位数,比如第 8 8 8小的,一位最多只有 5 5 5种,两位能到 25 25 25种,所以至少得两位。
接着我们再求目前当前这位对应的到底是 0 、 2 、 4 、 6 、 8 0、2、4、6、8 0、2、4、6、8中的哪一个。
比如第 8 8 8小的,我们求第一位上的数字的时候,
1 ∗ 5 < 8 1*5<8 1∗5<8
2 ∗ 5 > 8 2*5>8 2∗5>8
所以我们能确定,第一位上的数字是 2 2 2。对于后面的第二位来说,我们需要把刚刚第一位带来的整个部分的个数给减掉, 8 − 5 = 3 8-5=3 8−5=3。
1 ∗ 1 < 3 1*1<3 1∗1<3
1 ∗ 2 < 3 1*2<3 1∗2<3
1 ∗ 3 > = 3 1*3>=3 1∗3>=3
所以第二位上的数字是 4 4 4。
代码:
#include <bits/stdc++.h>
using namespace std;int main() {long long n, k = 1, c = 0;cin >> n;while (k <= n) {k *= 5;c++;}for (int i = 1; i <= c; i++) {k /= 5;for (int j = 1; j <= 5; j++) {if (j * k >= n) {n -= (j-1) * k;cout << (j - 1) * 2;break;}}}return 0;
}
D题:Pyramid
标签:动态规划、前缀和
题意:金字塔型序列: 1 、 2... k − 1 、 k 、 k − 1...2 、 1 1、2...k-1、k、k-1...2、1 1、2...k−1、k、k−1...2、1。给定一个长度为 n n n的序列 a i a_i ai,可以进行重复性的两种操作:
- 将序列中某个数的大小减一
- 删除第一个或最后一个数
求能够形成的金字塔型序列的最大长度。( 1 < = n < = 2 ∗ 1 0 5 , 1 < = a i < = 1 0 9 1<=n<=2*10^{5},1<=a_i<=10^9 1<=n<=2∗105,1<=ai<=109)
题解:比较常见的套路,洛谷也有类似的题:P1091 合唱队形
从左往右维护一个 p r e [ i ] pre[i] pre[i]:以 a i a_i ai作为结尾的最长左金字塔序列的长度
从右往左维护一个 s u f [ i ] suf[i] suf[i]:以 a i a_i ai作为结尾的最长右金字塔序列的长度
我们以 p r e [ i ] pre[i] pre[i]为例,分别来观察一下
例子 1 1 1: 1 、 2 、 3 1、2、3 1、2、3
例子 2 2 2: 1 、 2 、 2 1、2、2 1、2、2
例子 3 3 3: 3 、 1 、 2 3、1、2 3、1、2
按照题目中能把数变小和删除前后数字的操作,能推出当前的 p r e [ i ] pre[i] pre[i]要从前面的 p r e [ i − 1 ] pre[i-1] pre[i−1]和当前 a i a_i ai较小的那个推过来:
p r e [ i ] = m i n ( p r e [ i − 1 ] + 1 , a [ i ] ) pre[i] = min(pre[i - 1] + 1, a[i]) pre[i]=min(pre[i−1]+1,a[i])
s u f suf suf同理,最终枚举每个数作为金字塔尖,左边金字塔序列长度和右边金子塔序列长度中取小的那个能够形成的金字塔序列长度,然后维护一个最大值。
代码:
#include <bits/stdc++.h>
using namespace std;const int N = 2e5 + 10;
typedef long long ll;
ll a[N], pre[N], suf[N];int main() {ll n, ans = 0;cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i];pre[i] = min(pre[i - 1] + 1, a[i]);}for (int i = n; i >= 1; i--) {suf[i] = min(suf[i + 1] + 1, a[i]);}for (int i = 1; i <= n; i++) {ans = max(ans, min(pre[i], suf[i]));}cout << ans;return 0;
}
E题:Digit Sum Divisible
标签:数位 d p dp dp
题意:给定一个 n n n,求小于等于 n n n的数中有多少个能被自己的位数之和整除。( 1 < = n < = 1 0 14 1<=n<=10^{14} 1<=n<=1014)
**题解:**数位 d p dp dp模版题, d p [ p o s ] [ s u m ] [ m o d ] dp[pos][sum][mod] dp[pos][sum][mod]表示当第 p o s pos pos位各位数字之和为 s u m sum sum除原数的余数是 m o d mod mod且有没超出边界时候的个数。
代码:
#include <bits/stdc++.h>
using namespace std;typedef long long ll;
ll n, m, cnt = 0;
// dp[i][j][k]: 第i位 当前数字和为j 取模结果为k的个数
ll a[20], dp[20][10*20][10*20];ll dfs(ll pos, ll sum, ll mod, ll flag) {if (sum > m) return 0;if (pos == 0) return sum == m && mod == 0;if (!flag && dp[pos][sum][mod] != -1) return dp[pos][sum][mod];ll x = flag ? a[pos] : 9;ll ans = 0;for (ll i = 0; i <= x; i++) {ans += dfs(pos - 1, sum + i, (mod * 10 + i) % m, flag && (i == a[pos]));}if (!flag) dp[pos][sum][mod] = ans;return ans;
}int main() {cin >> n;while (n) {a[++cnt] = n % 10;n /= 10;}ll res = 0;for (int i = 1; i <= 9 * cnt; i++) {m = i;memset(dp, -1, sizeof(dp));res += dfs(cnt, 0, 0, 1);}cout << res;return 0;
}
相关文章:
AtCoder Beginner Contest 336 A-E 题解
比赛链接:https://atcoder.jp/contests/abc336比赛时间:2024 年 1 月 14 日 20:00-21:40 A题:Long Loong 标签:模拟题意:给定一个 n n n,输出 L L L、 n n n个 o o o和 n g ng ng。题解:按题意…...
node各个版本的下载地址
下载地址: https://nodejs.org/dist/ 可以下载多个版本,使用nvm控制切换(需要先安装nvm再安装node) nvm下载地址(访问的是github,请科学上网,下载后解压安装exe即可):h…...
JVM实战(17)——模拟对象晋升
作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 学习必须往深处挖&…...
帆软笔记-决策表报对象使用(两表格联动)
效果描述如下: 数据库中有个聚合商表,和一个储能表,储能属于聚合商,桩表中有个字段是所属聚合商。 要求帆软有2个表格,点击某个聚合商,展示指定的储能数据。 操作: 帆软选中表格单元…...
DataGear专业版 1.0.0 发布,数据可视化分析平台
DataGear专业版 1.0.0 正式发布,欢迎大家试用! http://datagear.tech/pro/ DataGear专业版 基于 开源版 开发,新增了诸多企业级特性,包括: MySQL、PostgreSQL、Oracle、SQL Server以及更多兼容部署数据库支持OAuth2…...
AS,android SDK
android sdk中包含什么? Android平台工具(Android Platform Tools): 这包括 adb(Android Debug Bridge)等工具,用于在计算机和 Android 设备之间进行通信、调试和数据传输。 Android命令行工具…...
LeetCode第155题 - 最小栈
题目 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() —— 检索栈中的最小元素。 示例: 输入: [&q…...
Java微服务系列之 ShardingSphere - ShardingSphere-JDBC
🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 系列专栏目录 [Java项…...
Unity中URP下实现能量罩(外发光)
文章目录 前言一、实现菲涅尔效果1、求 N ⃗ \vec{N} N 2、求 V ⃗ \vec{V} V 3、得出菲涅尔效果4、得出菲涅尔相反效果5、增加菲涅尔颜色二、能量罩 交接处高亮 和 外发光效果结合1、修改混合模式,使能量罩透明2、限制 0 ≤ H i g h L i g h t C o l o r ≤ 1 0\leq HighL…...
Golang 中哪些类型可以作为 map 类型的 key?
目录 可以作为 map 键的类型 不能作为 map 键的类型 最佳实践 小结 在 Go 语言中,map 是一种内置的关联数据结构类型,由一组无序的键值对组成,每个键都是唯一的,并与一个对应的值相关联。本文将详细介绍哪些类型的变量可以作为…...
C# 导出EXCEL 和 导入
使用winfrom简单做个界面 选择导出路径 XLSX起名字 打开导出是XLSX文件 // 创建Excel应用程序对象Excel.Application excelApp new Excel.Application();excelApp.Visible false;// 创建工作簿Excel.Workbook workbook excelApp.Workbooks.Add(Type.Missing);Excel.Works…...
学网络必懂的华为CSS堆叠技术
知识改变命运,技术就是要分享,有问题随时联系,免费答疑,欢迎联系! 厦门微思网络https://www.xmws.cn 华为认证\华为HCIA-Datacom\华为HCIP-Datacom\华为HCIE-Datacom Linux\RHCE\RHCE 9.0\RHCA\ Oracle OC…...
SV-7041T 30W网络有源音箱校园教室广播音箱,商场广播音箱,会议广播音箱,酒店广播音箱,工厂办公室广播音箱
SV-7041T 30W网络有源音箱 校园教室广播音箱,商场广播音箱,会议广播音箱,酒店广播音箱,工厂办公室广播音箱 SV-7041T是深圳锐科达电子有限公司的一款2.0声道壁挂式网络有源音箱,具有10/100M以太网接口,可将…...
Could NOT find Threads (missing: Threads_FOUND)
具体错误 -- Performing Test CMAKE_HAVE_LIBC_PTHREAD -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed -- Looking for pthread_create in pthreads -- Looking for pthread_create in pthreads - not found -- Looking for pthread_create in pthread -- Looking for…...
1114: 逆序(数组)
题目描述 输入n(1<n<10)和n个整数,逆序输出这n个整数。 输入 输入n(1<n<10),然后输入n个整数。 输出 逆序输出这n个整数,每个整数占4列,右对齐。 样例输入 6 4 5…...
uniapp如何调用ANDROID原生函数
在 UniApp 中调用 Android 原生函数,通常需要使用 UniApp 的插件系统。以下是调用 Android 原生函数的一般步骤: 安装插件:首先,确保你已经安装了对应的插件。你可以在 UniApp 插件市场 中搜索并安装你需要的插件。对于 Android 原…...
python 字符串的详细处理方法
当前版本: Python 3.8.4 简介 字符串是由字符组成的序列,可以用单引号、双引号或三引号(单引号或双引号的连续使用)括起来。一般用来表示和处理文本信息,可以是字母、数字、标点符号以及其他特殊字符,用于…...
蓝桥杯AcWing学习笔记 8-2数论的学习(下)
蓝桥杯 我的AcWing 题目及图片来自蓝桥杯C AB组辅导课 数论(下) 蓝桥杯省赛中考的数论不是很多,这里讲几个蓝桥杯常考的知识点。 约数个数定理 我们如何去求一个数的约数个数呢? N N N分解质因数的结果: N P 1 α…...
vcs makefile
主要参考: VCS使用Makefile教程_vcs makefile-CSDN博客https://blog.csdn.net/weixin_45243340/article/details/129255218?ops_request_misc%257B%2522request%255Fid%2522%253A%2522170524049516800227431373%2522%252C%2522scm%2522%253A%252220140713.1301023…...
《Training language models to follow instructions》论文解读--训练语言模型遵循人类反馈的指令
目录 1摘要 2介绍 方法及实验细节 3.1高层次方法论 3.2数据集 3.3任务 3.4人体数据收集 3.5模型 3.6评价 4 结果 4.1 API分布结果 4.2公共NLP数据集的结果 4.3定性结果 问题 1.什么是rm分数 更多资料 1摘要 使语言模型更大并不能使它们更好地遵循用户的意图。例…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...
