AtCoder Beginner Contest 353
A
题意:检查是否有比第一个数大的数
#include<bits/stdc++.h>using namespace std;int main()
{int n;cin>>n;int a;cin>>a;int f=0;for(int i=2;i<=n;i++){int k;cin>>k;if(k>a){cout<<i<<endl;f=1;break;}}if(f==0){cout<<"-1"<<endl;}return 0;}
B
题意:有n组人,还有一个k大小的座舱,题目保证每组人都小于k,计算要做多少个座舱
模拟,依次让每组人往里边坐,如果发现一组人不能完全坐满,则答案加1,换一个空的座舱
#include<bits/stdc++.h>using namespace std;
int n;
int a[110];
int main()
{int k;int res=0;cin>>n>>k;for(int i=0;i<n;i++) cin>>a[i];int i=0;int x=k;while(i<n){x-=a[i];i++;while(x>=a[i]&&i<n){x-=a[i];i++;}res++;x=k;}cout<<res<<endl;return 0;}
C
思路:可以推出每个元素都会被加n-1次,那么可以把他们每个元素都乘以n-1,
因为当两个数相加大于1e8时,会取余数,就是相当于减去了一个1e8,所以还要计算减去1e8的个数
先排序,然后二分找每个数和其他数相加大于等于1e8的个数
如果找到的数,是在当前数的位置的前边,那么x=i+1(当前的位置+1),这样做是为了避免重复减去1e8
如果一个目标数被查找到的位置,是当前位置的前边,那么之前在更新被查找到的位置的数时,已经减去了一个1e8了,所以此时不能再减去1e8,同理,被查找到的位置 是当前位置,那么也要加1,这两个数不能相加
#include<bits/stdc++.h>using namespace std;
const int N = 3e5 + 10,mod=1e8;
#define int long long
int n;
int a[N];
int find(int x)
{int l=0,r=n+1;while(l<r){int mid=l+r>>1;if(a[mid]>=x) r=mid;else l=mid+1;}return r;}
signed main()
{cin>>n;for(int i=1;i<=n;i++) cin>>a[i];int res=0;sort(a+1,a+n+1);int cnt=0;for(int i=1;i<=n;i++){res+=(n-1)*a[i];int x=find(mod-a[i]);if(x<=i)//避免重复减去mod x=i+1;if(x>n) continue;res=res-(n-x+1)*mod;}cout<<res<<endl;return 0;}
D
模拟
以第i个数为中心点
res加上(i-1)*a[i]
i后边的数,依次加上10^(数的位数),此处可以做个优化,先记录每个数的位数,存进map中,
在更新第i个数时,只需遍历1到10(因为位数是1到10)
#include<bits/stdc++.h>using namespace std;
const int N = 2e5 + 10,mod=998244353;
#define int long long
int n;
int a[N];
int q[15]={0,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000,10000000000};
map<int,int> mp;
int ck(int x)
{int cnt=0;while(x){cnt++;x/=10;}return cnt;
}
signed main()
{cin>>n;for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<=n;i++)mp[ck(a[i])]++;int res=0;for(int i=1;i<=n;i++){res=(res+(i-1)*a[i]%mod)%mod;mp[ck(a[i])]--;for(int j=1;j<=10;j++){res=(res+(a[i]*mp[j]%mod)*(q[j]%mod)%mod)%mod;}}cout<<res<<endl;return 0;}
E
依次计算最长公共前缀子串,记录每个子串出现的次数,每个字串贡献的价值为,cnt[i]*(cnt[i]-1)/2
3
ab ab ab
可以看出a字串出现了3次,ab字串出现了3次,总贡献值6
当时在想计算ab字串时,会不会重复?因为前边已经计算过a字串了
ab ab ac
此时就可以看出,必须得一个一个前缀字串考虑,因为第一个a字串,可以和第二个,第三个匹配,第二个和第三个匹配,产生3的贡献值,但ab字串只能和第二个匹配产生2的贡献值,因为题目要的是每次匹配的最长公共前缀字串的长度
突然想到,是不是也可以看为,ab字串的长度是2,a的字串在前边已经计算过了,而ab字串只是计算以b结尾的ab字串的数量可以产生的贡献值
再举一个例子 a ab abc abcd
字典树可以快速存储和查询字符串
#include<bits/stdc++.h>using namespace std;
const int N = 3e5 + 10,mod=998244353;
#define int long longint n;
int a[N];
map<string,int> mp;
int son[N][26],cnt[N],idx;
void insert(string s)
{int p=0;//p代表的是p表示第几个结点for(int i=0;i<s.size();i++){int x=s[i]-'a';if(!son[p][x]) son[p][x]=++idx;cnt[p]++;//每经历过一个字串就标记一下p=son[p][x];//将p指向他的子节点}cnt[p]++;
}
signed main()
{string str;cin>>n;for(int i=1;i<=n;i++) {cin>>str;insert(str);}int res=0;for(int i=1;i<=idx;i++){res+=(cnt[i]*(cnt[i]-1)/2);}cout<<res<<endl;return 0;}
相关文章:
AtCoder Beginner Contest 353
A 题意:检查是否有比第一个数大的数 #include<bits/stdc.h>using namespace std;int main() {int n;cin>>n;int a;cin>>a;int f0;for(int i2;i<n;i){int k;cin>>k;if(k>a){cout<<i<<endl;f1;break;}}if(f0){cout<&l…...

深度解读《深度探索C++对象模型》之虚继承的实现分析和效率评测(一)
目录 前言 具有虚基类的对象的构造过程 通过子类的对象存取虚基类成员的实现分析 接下来我将持续更新“深度解读《深度探索C对象模型》”系列,敬请期待,欢迎左下角点击关注!也可以关注公众号:iShare爱分享,或文章末…...

计算机Java项目|Springboot房产销售系统
作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简…...

学习3D几何和特征一致的高斯溅射目标去除
earning 3D Geometry and Feature Consistent Gaussian Splatting for Object Removal 学习3D几何和特征一致的高斯溅射目标去除 Yuxin Wang 王玉欣 HKUST &Qianyi Wu Monash University &Guofeng Zhang Zhejiang University &Dan Xu HKUST 香港科技大学&吴倩…...
PHP 使用常量实现枚举类
PHP 使用常量实现枚举类 <?php abstract class Enum {private static $constCacheArray NULL;private static function getConstants() {if (self::$constCacheArray NULL) {self::$constCacheArray [];}$calledClass get_called_class();if (!array_key_exists($call…...
Linux操作系统基础题库
一. 单选题(共2题,40分) 1. (单选题)Linux操作系统自诞生至今,有数十万的程序开发人员参与到了它的开发与完善中,如今Linux已发展成为是一个成熟、稳定的操作系统。从以下选项中选出关于Linux特点描述完全正确的一项。…...

Java抽象类:为何它是你代码架构的基石?
目录 1、抽象类的概念 2、抽象类语法 3、抽象类特性 4、抽象类的作用 5、 完结散花 个人主页:秋风起,再归来~ 文章专栏:javaSE的修炼之路 个人格言:悟已往之不谏,知来者犹可追 克…...
Flutter 中的 ToggleButtons 小部件:全面指南
Flutter 中的 ToggleButtons 小部件:全面指南 在 Flutter 中,ToggleButtons 是一种允许用户在一组选项中进行切换选择的控件。它通常用于展示一组相关选项,让用户可以快速切换选择。ToggleButtons 是一种水平排列的按钮集合,其中…...

【MYSQL】一颗B+树可以保存多少条数据
引言 事万物都有自己的单元体系,若干个小单体组成一个个大的个体。就像拼乐高一样,可以自由组合。所以说,如果能熟悉最小单元,就意味着我们抓住了事物的本事,再复杂的问题也会迎刃而解。 存储单元 存储器范围比较大…...

ssm125四六级报名与成绩查询系统+jsp
四六级报名与成绩查询系统的设计与实现 摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对四六级报名信息管理混乱&am…...

【Unity从零开始学习制作手机游戏】第01节:控制3D胶囊体运动
1. 新建Project L01 使用3D Mobile模板。 2. 建立一个平面,用来承载物体 3. 导入Unity库内的胶囊体 下载 StandardAssets https://download.unitychina.cn/download_unity/e80cc3114ac1/WindowsStandardAssetsInstaller/UnityStandardAssetsSetup-5.6.7f1.exe …...

内容安全(DPI和DFI解析)
内容安全前言: 防火墙的本质其实就是包过滤,我们通常所说的安全设备(如:IPS、IDS、AV、WAF)的检测重心是应用层。下一代防火墙基于传统防火墙的拓展能力,就是可以将以上的安全设备模块集成在一起࿰…...

2024数维杯数学建模A题B题C题思路+模型+代码(开赛后第一时间更新)
2024数维杯数学建模A题B题C题思路模型代码(开赛后第一时间更新) https://mbd.pub/o/bread/ZpWakpdq https://mbd.pub/o/bread/ZpWakpdq 2024年第九届数维杯大学生数学建模挑战赛参赛规则 竞赛要求及论文提交方式; ①本次参赛作品统一在线提交到竞赛…...
SpringSecurity多表,多端账户登录
本文章对应视频SpringSecurity6多端账号登录,可无限扩展教程,记得三连哦,这对我很重要呢! 温馨提示:视频与文章相辅相成,结合学习效果更强哦!更多视频教程可移步B站【石添的编程哲学】 SpringSe…...

绝地求生PUBG新老艾伦格有什么差别 老艾伦格什么时候回归
复古风格的艾伦格原始地图携带着那些标志性的记忆符号华丽回归,邀请您沉浸于往昔的每一处细节探索中。我们不仅还原了游戏诞生的起点,还在其中巧妙融入现代游戏元素,构筑一座连接昔日与今朝的桥梁,完美融合了经典与创新的游戏体验…...

Windows下安装Node.js、npm和electronic,并运行一个Hello, World!脚本程序
20240510 By wdhuag 目录 简介: 参考: 安装Node.js 安装npm 配置npm: 修改包存放目录和缓存目录 切换镜像源 使用 nrm 切换镜像源 安装Electron 运行一个Hello, World!脚本程序 安装Yarn JavaScript 指南 简介: Nod…...

【精品案例】化工炼化企业信息化建设解决方案(74页PPT)
一、资料介绍 化工炼化企业信息化建设解决方案是一份详尽且全面的指导文件,旨在助力化工炼化企业实现信息化、智能化和数字化转型。本资料以74页的PPT形式呈现,围绕智能化工程施工方案、化工炼化企业信息化以及化工行业数字化转型等关键词,为…...

【Unity Animation 2D】Unity Animation 2D骨骼绑定与动画制作
一、图片格式为png格式,并且角色各部分分离 图片参数设置 需要将Sprite Mode设置为Single,否则图片不能作为一个整体 1、创建骨骼 1.1 旋转Create Bone,点击鼠标左键确定骨骼位置,移动鼠标再次点击鼠标左键确定骨骼,…...

工器具管理(基于若依)
文章目录 前言一、工器具管理项目总览 二、入库功能1. 前端1.1 界面展示1.2 具体操作实现1.3 js文件 2. 后端2.1 工器具信息回显2.2 工器具入库 三、领用功能1. 前端1.1 界面展示1.2 具体实现操作1.3 js文件 2. 后端2.1 工器具信息回显2.2 工器具领用 遇到的问题1. 同一页面展示…...

UE4_照亮环境_光束light beam
学习笔记,不喜勿喷,侵权立删!祝愿生活越来越好! 光束:模拟大气中散射的光线。利用定向光源模拟真实曙暮光效果或大气散射的阴影,即可生成 光束 。这些光线为场景添加深度和真实度。 一:一些参数…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官
。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...

第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...