9.22 机房练习

news/2025/9/22 15:35:40/文章来源:https://www.cnblogs.com/willerdreamer/p/19105385

9.22 机房练习

一、 引子

向 myk 大佬学习,养成写练习笔记的好习惯。
还有大约三十多天就复赛了,我的安排是保持每天一两道首银的题目 + 紫书上的题单,前面的是练习有一定难度的题目冲击高分,后面的是系统复习保持手感。
我会尽量不看题解的,但是实在不会真没办法 QAQ。

二、 首银

1. P2602 [ZJOI2010] 数字计数

这道题首先,强硬模拟是不行的,那么思考怎么得到正确答案呢?
我们使用形如 \(\overline{XYZ}\) 表示 \(X \times 100 + Y \times 10 \times Z\)。比如说,对于 \(\overline{1Y}\) 而言,\(1\) 出现了 \(19\) 次,其他数字各出现 \(1\) 次。
那我们能不能基于这个性质,来考虑考虑呢?
假设 \(f[\ x\ ][\ y\ ]\) 表示 \(x\) 位数中 \(y\) 出现了多少次

\[f[\ x\ ][\ y\ ] = f[\ x-1\ ][\ y\ ] \times 9 + 10 ^ { x - 1 } \]

\[\tiny{\red{这个公式是错误的,放在这里仅仅代表思路}} \]

那么对于一个开头一个结尾,我们怎么办呢?
我们举个例子,结尾是 123456789
很容易想到,先直接 DP 到 \(f[\ 8\ ]\),然后从 100000000 开始考虑
第一位都是 \(1\),没有什么参考,进入第二位;
第二位应该是 \(2\),但是 \(2\) 又不是都能取得到啊,不过以 \(1\) 开头是直接加所有的 \(7\) 位数;
第三位应该是 \(3\),同样,\(1\)\(2\) 开头可以加上所有 \(6\) 位数,可是对于 \(3\) 开头的怎么办呢?
先实现简单的部分吧,说不定就想出来了。


那么我实在是想不出来了,只能看看题解怎么说,太菜了。QAQ
其实不考虑 \(0\)\(1\) ~ \(9\) 对于每一位出现的数量是相同的,所以省去第二维状态。

\[f[\ i\ ] = f[\ i-1\ ] \times 10 + 10 ^ { i - 1 } \]

我一直迷着两头处理,但是其实不用。这道题只需要数 \(0\) ~ \(a - 1\)\(0\) ~ \(b\) 的再相减就好了。
考虑答案是 \(ans[\ x\ ]\)
从高位向低位遍历,对于第 \(i\) 位数字为 y,

\[ans[\ x\ ] += f[\ i-1\ ] \times y , x \in [0 , 9] \]

\[ans[\ x\ ] += 10 ^ { i - 1 } , x \in [0 , y - 1] \]

如果 \(x = y\),那么还有: \(ans[\ y\ ] += num + 1\),其中 num 是第 i-1 ~ 1 位的数字,但是 \(ans[\ 0\ ] -= 10 ^ { i - 1 }\)
最后每一位就是 \(ans_b[x] - ans_{a-1}[x]\)
代码:

#include <iostream>
#include <cstring>
#include <cstdio>
#define int long long 
using namespace std;
const int MAXN=20;
void solve(int,int);
int f[MAXN],fic[MAXN];
int ans[MAXN][2];
int a,b;
signed main(){fic[0]=1;// fic[i] 表示 10 ** i for(int i=1;i<=12;i++){f[i]=f[i-1]*10+fic[i-1];fic[i]=fic[i-1]*10;}cin>>a>>b;solve(a-1,0);solve(b,1);// 尽量不传数组 for(int i=0;i<=9;i++){cout<<ans[i][1]-ans[i][0]<<" ";}return 0;
}
int c[MAXN];// 存储每一位数字 
void solve(int x,int d){// 提取数位 memset(c,0,sizeof(c));int m=0;while(x){c[++m]=x%10;x/=10;}// DPfor(int i=m;i>=1;i--){for(int j=0;j<=9;j++){ans[j][d]+=f[i-1]*c[i];}for(int j=0;j<c[i];j++){ans[j][d]+=fic[i-1];}int num=0;for(int j=i-1;j>=1;j--){num=num*10+c[j];}ans[c[i]][d]+=num+1;ans[0][d]-=fic[i-1];} 
}

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

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

相关文章

完整教程:stm32f103c8t6 led闪灯实验

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

做jsp网站用哪些软件下载农副产品交易平台

苹果自带的“safari浏览器”正在悄悄“追踪”你的信息&#xff0c;这样做可以有效避免你的隐私信息不被泄露。说起苹果设备自带的APP&#xff0c;毫无疑问safari浏览器是其中的代表之一&#xff0c;很多朋友由于习惯的原因&#xff0c;大多在使用苹果设备的时候选择下载一些第三…

cms网站搭建顺德做网站公司哪家好

import os#判断文件夹是否存在 dir os.path.exists(C:\\Users\\Desktop) print(dir:, dir)#判断文件是否存在 file os.path.exists(C:\\Users\\Desktop\\雍正王朝.txt) print(file:, file)运行结果 显示该文件及文件夹都存在

网易云音乐wordpress插件aso安卓优化

目录 1. 前言 2. 用法回顾 2.1 使用方式 2.2 过滤器的定义 2.3 串联过滤器 3. 小结 1. 前言 过滤器在我们日常开发中应该算是一个非常常用的功能了&#xff0c;它经常会被用来格式化模板中的文本。过滤器可以单个使用&#xff0c;也可以多个串联一起使用&#xff0c;还可…

建站空间哪个好棋牌软件开发定制软件

以下是关于DDR4、DDR5、固态硬盘&#xff08;SSD&#xff09;和机械硬盘&#xff08;HDD&#xff09;在连续读/写、随机读/写性能的对比分析&#xff0c;结合技术特性与应用场景的总结&#xff1a; 一、性能对比表格 存储类型连续读&#xff08;MB/s&#xff09;连续写&#x…

无锡网站建设推荐手机分销网站公司

目录HOG是什么&#xff1f;HOG vs SIFTHOG步骤HOG在检测行人中的方式Opencv实现HOGDescriptor的构造函数&#xff1a;行人检测HOGSVM步骤简化版的HOG计算HOG是什么&#xff1f; 方向梯度直方图( Histogram of Oriented Gradient, HOG )特征是一种在计算机视觉和图像处理中用来进…

win2008网站404被称为网页制作三剑客的是

获取/查看本机出口ip curl http://members.3322.org/dyndns/getip

哪个网站做视频赚钱哈尔滨建筑专业网站

需求 使用Python基础写一个基于控制台的学生管理平台&#xff0c;里面功能分别是&#xff1a;1.录入学生信息2.查找学生信息3.删除学生信息4.修改学生信息5.排序6.统计学生总人数7.显示所有学生信息&#xff0c;要求数据存储在文件里。 代码 代码资源地址可以直接下载 效果图…

win2003怎么做网站扫一扫网页版在线使用

如果仅仅在数据库中设置了类型为 CLOB 字段类型&#xff0c;使用普通的 INSERT 语句直接写入数据到数据库的话&#xff0c;它依然会将其视为 VARCHAR 类型数据&#xff0c;并最大长度为 4000 字符。超过该长度会报出字符串超长&#xff0c;写入数据失败的错误。使用 Dapper 处理…

建站工具推荐网站开发毕业答辩问题

创建最高权限用户 进入 MySQL 容器的命令行界面。您可以使用以下命令&#xff1a; 修改配置文件my.cnf 无密码进入 [mysqld]下输入 skip-grant-tables重启mysql容器 进入容器内部 container_name 容器ID或name docker restart mysql docker exec -it <container_name>…

视频调色神器!CyberLink ColorDirector:从入门到专业的视频色彩魔法工具

描述 CyberLink ColorDirector是台湾Link Technologies开发的一款创意视频后期着色软件,旨在帮助您改进和增强视频颜色。 通过一系列易于使用的工具,您可以轻松地校正颜色、调整色调,甚至调整视频中移动对象的本地颜…

【AI智能体】Dify 搭建数据分析应用实战操控详解

【AI智能体】Dify 搭建数据分析应用实战操控详解2025-09-22 15:29 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display…

Leveraging Context-Aware Prompting for Commit Message Generation 论文笔记

介绍 (1) 发表:EMNLP24 (2) 背景 现有方法通常存在一些缺点,例如只关注变化的行是不够的,或者在变化周围包含不相关的行会带来噪声。如图 1 所示,添加和删除的代码实际上是相同的,只是位置不同,导致代码更改定义…

P4951 [USACO01OPEN] Earthquake 题解

111首先要知道 0/1 分数规划这个经典模型 给定 \(a_1,a_2....a_n\) 以及 \(b_1,b_2....b_n\) 求一组解 \(x_i(1\leq i \leq n,x_i \in [0,1] )\),使下列式子最大化: \[\frac {\sum_{i=1}^n a_i \times x_i}{\sum_{i=…

门户网站开发需求文档软件外包app

1.如图&#xff0c;实现功能: Hello World!字符串跟随鼠标移动鼠标左击Hello World!颜色为红色鼠标右击Hello World!颜色为蓝色鼠标滚轮滚动改变Hello World!颜色的RGB中的G值 2.实现工具: vs20133.实现步骤: 新建一个win32项目 如图,看到HelloWorldGame.cpp中 _tWinMain()的函…

网站备案信息变更买个小程序多少钱

目录 一、边缘磨损效果 二、刮痕效果 三、边缘磨损与刮痕的混合 四、锈迹效果 本篇效果&#xff1a; 一、边缘磨损效果 将智能材质“Iron Forge Old” 拖入图层 打开“Iron Forge Old” 文件夹&#xff0c;选中“Sharpen”&#xff08;锐化&#xff09;&#xff0c;增大“…

网站管理人员怎么做手机app软件

目录 运算符 数字运算符 比较运算符 逻辑运算符 转义字符 变量使用 变量定义 变量类型 变量命名 变量函数 input函数 type函数 条件语句 If 格式 案例1&#xff0c;判断年龄 案例2&#xff0c;借钱 案例3&#xff0c;and、or应用 循环语句 for 格式 案例…

深圳网站建设学习网站建设购销合同

1 释放锁流程概述 ReentrantLock的unlock()方法不区分公平锁还是非公平锁。 首先调用unlock()方法。 unlock()底层使用的是Sync.release(1)方法 public void unlock() {<!-- --> sync.release(1); } release(1)方法会调用tryRelease(1)去尝试解锁。 public fin…

个人网站做项目万能软文模板

文章目录 什么是SSH协议&#xff1f;SSH为何是安全的&#xff1f;SSH由哪些组件构成&#xff1f;SSH可以帮助实现的功能SSH的工作原理SSH的历史版本常用的SSH工具有哪些SSH配置案例参考Windows 安装SSHUbuntu系统SSH配置Cisco Switch SSH配置华为Switch SSH配置 客户端启用SSH连…

比较好设计网站wordpress 按钮美化

Vue.js 是一套构建用户界面的渐进式框架。只关注视图层, 采用自底向上增量开发的设计。 目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。Vue 学习起来非常简单。 目录 常用的vue.js版本及方法 学习vue之前需要掌握基础html+css+javaScript知识。 比如: …