[c++实验] 快读快写,O123优化,原版用时对比

news2024/10/5 16:22:32

前言

        学过c++的多知道,准确的来说是做过c++题目的都知道:c++题目不仅要求代码正确,还要求用时,大多用时要求都在200ms--1000ms之间,要是遇到大数据时,超时的可能就会大大提升。

        结论    用时的把控也很重要!

实验

        题目

        题目描述

小爱想要画一棵 n 个节点的有根树,节点编号分别为1..n,他告诉了你他希望每个节点在这棵树上的深度 di​,其中根节点深度为 1。

请你根据给定信息,帮忙计算出有多少棵树满足小爱的要求?由于答案可能很大,请你输出对 10^9+7 取模后的结果。

        输入格式

        输入共两行,
        第一行,一个正整数 n ,表示节点个数
        第二行,n 个正整数 d1,d2,...,dn​,分别表示每个节点的深度

        原代码

#include<bits/stdc++.h>
//#pragma GCC optimize(1,2,3,"Ofast","inline")
#define int long long
using namespace std;       
const int N=1e5+10;
const int M=1e9+7;
int n,a,T[N],mx,x=1;
signed main()
{
	scanf("%lld",&n);
	while(n--)
	{
		scanf("%lld",&a);
		T[a]++;
		mx=max(mx,a);
	}
	for(int i=3;i<=mx;i++)
	{
		if(T[i-1]>1)
		{
			for(int j=1;j<=T[i];j++)
			{
				x=x*T[i-1]%M;
			}
		}
	}
	cout<<x;
	return 0;
}

        

        用时情况

         我们可以发现:    5*10ms    2*20ms

        加上快读快写的代码

#include<bits/stdc++.h>
//#pragma GCC optimize(1,2,3,"Ofast","inline")
#define int long long
using namespace std;       
const int N=1e5+10;
const int M=1e9+7;
int n,a,T[N],mx,x=1;
signed read()
{
    int x=0,f=1;
    char c=getchar();
    while(c<'0'||c>'9')
	{
		if(c=='-')f=-1;
		c=getchar();
	}
    while(c>='0'&&c<='9')
	{
    	x=x*10+c-'0';
    	c=getchar();
	}
    return x*f;
}
void write(int x){
     if(x<0)
	 {
     	putchar('-');
     	x=-x;
	 }
     if(x>9)
	 {
     	write(x/10);
	 }
     putchar(x%10+'0');
}
signed main()
{
	n=read();
	while(n--)
	{
		a=read();
		T[a]++;
		mx=max(mx,a);
	}
	for(int i=3;i<=mx;i++)
	{
		if(T[i-1]>1)
		{
			for(int j=1;j<=T[i];j++)
			{
				x=x*T[i-1]%M;
			}
		}
	}
	write(x);
	return 0;
}

        用时情况

        我们可以发现:    3*10ms

        加上O1O2O3优化

        O1O2O3优化讲解,代码 

        

#include<bits/stdc++.h>
#pragma GCC optimize(1,2,3,"Ofast","inline")
#define int long long
using namespace std;       
const int N=1e5+10;
const int M=1e9+7;
int n,a,T[N],mx,x=1;
signed read()
{
    int x=0,f=1;
    char c=getchar();
    while(c<'0'||c>'9')
	{
		if(c=='-')f=-1;
		c=getchar();
	}
    while(c>='0'&&c<='9')
	{
    	x=x*10+c-'0';
    	c=getchar();
	}
    return x*f;
}
void write(int x){
     if(x<0)
	 {
     	putchar('-');
     	x=-x;
	 }
     if(x>9)
	 {
     	write(x/10);
	 }
     putchar(x%10+'0');
}
signed main()
{
	n=read();
	while(n--)
	{
		a=read();
		T[a]++;
		mx=max(mx,a);
	}
	for(int i=3;i<=mx;i++)
	{
		if(T[i-1]>1)
		{
			for(int j=1;j<=T[i];j++)
			{
				x=x*T[i-1]%M;
			}
		}
	}
	write(x);
	return 0;
}

        用时情况

        我们发现:   只有一个10ms 

总结论

        想要快,用快读快些加优化。

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

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

相关文章

网站实现下载apk安装包

目录 1、背景说明2、效果图3、具体实现3.1 界面代码3.2 js代码 4、说明4.1 存在异常4.2 解决方案 5、参考资料 1、背景说明 有时需要将写好的apk安装包在局域网内部进行发布&#xff0c;具体实现非常简单&#xff0c;如下所示 2、效果图 进入到网站后&#xff0c;点击下载按…

正确认识:2374782-02-0,FAPI-4,成纤维细胞活化蛋白抑制剂

资料编辑|陕西新研博美生物科技有限公司小编MISSwu​ PART1----试剂基础信息​​ 【中文名称】成纤维细胞活化蛋白抑制剂 【英文名称】 FAPI-4 【结 构 式】 【CAS】2374782-02-0 【分子式】C40H54F2N10O10 【分子量】872.93 【沸点】1144.165.0 C(Predicted) 【密度】1.460.…

【力扣周赛】第 355 场周赛(构造二分答案异或前缀 状态压缩⭐)

文章目录 Q1&#xff1a;6921. 按分隔符拆分字符串&#xff08;双指针&#xff09;Q2&#xff1a;6915. 合并后数组中的最大元素&#xff08;倒序遍历贪心&#xff09;代码优化 Q3&#xff1a;6955. 长度递增组的最大数目&#x1f6b9;&#x1f6b9;&#x1f6b9;&#x1f6b9;…

企业级PaaS低代码快开平台源码,基于 Salesforce Platform 的开源替代方案

PaaS低代码快开平台是一种快速开发应用系统的工具&#xff0c;用户通过少量代码甚至不写代码就可以快速构建出各种应用系统。 随着信息化技术的发展&#xff0c;企业对信息化开发的需求正在逐渐改变&#xff0c;传统的定制开发已经无法满足企业需求。低代码开发平台&#xff0…

ElementUI tabs标签页样式改造美化

今天针对ElementUI的Tabs标签页进行了样式修改&#xff0c;更改为如下图所属的样子。 在线运行地址&#xff1a;JSRUN项目-ElementUI tabs标签页样式改造 大家如果有需要可以拿来修改使用&#xff0c;下面我也简单的贴上代码&#xff0c;代码没有注释&#xff0c;很抱歉&#x…

Centos7.9安装瀚高数据库企业版6.0.4_并开启远程连接_使用瀚高连接工具操作_亲测成功---国产瀚高数据库工作笔记003

1.首先去瀚高官网,注册,然后下载安装包, OpenEuler23.03欧拉系统_安装瀚高数据库企业版6.0.4_openeuler切换root用户_su:拒绝权限_passwd: 鉴定令牌操作错误---国产瀚高数据库工作笔记001 一部分内容可以参考一下这个博文 2.准备一下环境: 关闭防火墙,关闭网络管理器 syste…

Spingboot yaml 配置文件及数据读取

属性配置在这里插入图片描述 修改服务器端口 → server.port80 修改 banner → spring.main.banner off(关闭)/console(控制台)/log(日志) 日志 → logging.level.rootinfo Common Application Properties 配置文件分类 优先级 如果三种文件共存时&#xff0c;优先级为&am…

618技术揭秘 - 大促弹窗搭投实践 | 京东云技术团队

背景 618 大促来了&#xff0c;对于业务团队来说&#xff0c;最重要的事情莫过于各种大促营销。如会场、直播带货、频道内营销等等。而弹窗作为一个极其重要的强触达营销工具&#xff0c;通常用来渲染大促氛围、引流主会场、以及通过频道活动来提升频道复访等。因此&#xff0…

基本数据类型转换(基本数据类型之间的运算规则)

自动类型转换 前提&#xff1a;这里讨论只是7种基本数据类型变量间的运算。不包含boolean类型的。 自动类型转换&#xff1a;容量小的类型自动转换为容量大的数据类型。数据类型按容量大小排序为&#xff1a; 有多种类型的数据混合运算时&#xff0c;系统首先自动将所有数据 …

ssm文章发布管理系统java小说作品发表jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 ssm文章发布管理系统 系统有2权限&#xff1a;前台账…

企业微信开发应用之获取userId

一、创建应用 企业微信 (qq.com) 在【应用管理】界面-【应用】-【自建】点击【创建应用】 参考 一&#xff1a;如何创建企业内部应用 - 教程 - 企业微信开发者中心 (qq.com) 二、配置信息 开发阶段“应用可见范围”可先选择小范围可见&#xff0c;待开发完成后再开放给企业…

PMP成绩查询及电子版证书下载方式

2023年05月27日PMP考试成绩预计将于2023年7月24日晚开始发布&#xff0c;按照往年的情况&#xff0c;成绩都是分批出的&#xff0c;如果暂时没查到成绩的同学请耐心等待&#xff0c;预计一周内成绩会全部出来。 具体查询方法如下 当你在PMI的注册邮箱收到一封PMI发来的&#x…

EC200U-CN学习(四)

EC200U系列内置丰富的网络协议&#xff0c;集成多个工业标准接口&#xff0c;并支持多种驱动和软件功能&#xff08;适用于Windows 7/8/8.1/10、Linux和Android等操作系统下的USB驱动&#xff09;&#xff0c;极大地拓展了其在M2M领域的应用范围&#xff0c;如POS、POC、ETC、共…

JavaScript学习 -- Base64编码

Base64编码是一种常用的将二进制数据转换为文本数据的方式。在JavaScript中&#xff0c;我们可以通过使用Base64编码算法&#xff0c;将二进制数据转换为可读的文本数据&#xff0c;以便于在网络传输、文件传输等场景下使用。在本篇博客中&#xff0c;我们将介绍Base64编码的基…

pipeline和retiming

首先,pipeline 是 rtl design 的技巧,Retiming 是 synthesize 的技术。设计里面要有pipeline,才有后面的retiming。 当然,現在synthesis 进步很多了,這句话在有些时候已经不成立了,但是,大多数的时候,Retiming 还是针对pipeline 做优化。 一個简单的例子,例如我们做一…

021 - count()函数 - 对结果进行计数统计

COUNT() 函数返回匹配指定条件的行数。 -- 语法&#xff1a; COUNT(column_name) 函数返回指定列的值的数目&#xff08;NULL 不计入); SELECT COUNT(name) AS "统计" FROM test02; -- 语法&#xff1a; COUNT(*) 函数返回表中的记录数; select COUNT(*) AS "统…

【沁恒蓝牙mesh】手机配网+自组网联合调试

开发蓝牙mesh过程中&#xff0c;需要一个管理者&#xff0c;采用以下方案 一个节点用手机配网的方式&#xff0c;其余节点用自组网的方式&#xff0c;只要手机组网的节点与自组网的节点的配网信息相同&#xff0c;所有节点就可以在一个mesh网络中。 1. 组网描述 描述&#xff1…

【外卖系统】新增员工

需求分析和数据模型 新增员工就是将新增页面录入的员工数据插入到emoloyee表&#xff0c;username字段约束是唯一的&#xff0c;即员工的登录账号是唯一的status字段默认值为1&#xff0c;表示状态正常 前端界面 报错信息&#xff1a; 代码开发分析 页面发送ajax请求&…

推荐几款不错的AI绘画工具

随着近年来数据、算法等核心技术的不断进步&#xff0c;人工智能在内容创作各垂直领域的比例不断增加&#xff0c;包括人工智能写作、人工智能编辑和最近流行的人工智能绘画。 许多朋友也想跟上潮流&#xff0c;使用人工智能绘画生成软件创建人工智能图像&#xff0c;但我不知…

命令行计算和校验文件的MD5值,校验文件的完整性

MD5算法常常被用来验证网络文件传输的完整性&#xff0c;防止文件被人篡改。MD5全称是报文摘要算法&#xff08;Message-Digest Algorithm 5&#xff09;&#xff0c;此算法对任意长度的信息逐位进行计算&#xff0c;产生一个二进制长度为128位&#xff08;十六进制长度就是32位…