Educational Codeforces Round 166 (Rated for Div. 2)题解(A,B,D)

今天真的巨抽象,第三题没做出来,但是第四题过了,也是准备上小分了,因为nnd不按那个分数,而是按照做题数,直接废了

A. Verify Password

 题解:小丑水题一个人,按照ASCII码比较一遍直接过了,最主要要不是一开始卡了3分钟,我感觉能直接在第一题打进前一千 

#include<bits/stdc++.h>
using namespace std;
#define int long long
int t;
string s;
signed main()
{
	cin>>t;
	while(t--)
	{
		int flag=1;
	    cin>>s;
		int len=s.size();
		for(int i=1;i<len;i++)
		{
			if(s[i]-'0'<s[i-1]-'0')
			{
				flag=0;
			}
		}
		if(flag==1)
		printf("YES\n");
		else
		printf("NO\n");
	}
	return 0;
}

B. Increase/Decrease/Copy

题解,也不难,主要是去考虑最后一个位置的步数,总共就两种方法,一是先去a数组找到合适的放在最后一个位置,二是在a向b发生变化的时候去放在最后一个位置,找到两个方法的最小的一个步数即可, 别的位置直接一个绝对值秒了

#include<bits/stdc++.h>
using namespace std;
#define int long long
int t;
int n;
int a[200005];
int b[200005];
signed main()
{
	cin>>t;
	while(t--)
	{
		int sum=0;//统计总步数
		cin>>n;
		for(int i=1;i<=n;i++)
		cin>>a[i];
		for(int i=1;i<=n+1;i++)
		{
			cin>>b[i];
		}
		for(int i=1;i<=n;i++)
		{
			sum+=labs(b[i]-a[i]);
		}
		int num1=0x3f3f3f3f;//先找差值,再变 
		int flag1=0;;
		int num2=0x3f3f3f3f;//先变,再转移 
		int flag2=0;
		
		//第一中方案 
		for(int i=1;i<=n;i++)
		{
			if(labs(a[i]-b[n+1])<num1)
			{
				num1=labs(a[i]-b[n+1]);
			}
		}
		num1+=1;//第一种方案找到的最小步数
		 
		 
		//第二种方案
		for(int i=1;i<=n;i++)
		{
			int ans=0;
			if(b[n+1]>=max(b[i],a[i])||b[n+1]<=min(a[i],b[i]))
			ans=labs(b[n+1]-b[i])+1;
			else if(b[n+1]<max(b[i],a[i])&&b[n+1]>min(b[i],a[i]))
			ans=1;
			num2=min(ans,num2);
		} 
		
		sum+=min(num1,num2);
		cout<<sum<<"\n";
		
	}
	return 0;
}

D. Invertible Bracket Sequences

 题解:这题我们统计序列前i个有多少个左括号是剩余的,然后思考(l,r)的选择有何特征:可以发现,若第i位之前所剩余的左括号跟第j位之前所剩余的左括号数量一样,那么(i+1,j)这个区间就可能被选择,否则一定不会被选择。

然后就可以用前缀和加双指针很轻松的AC了,平常学长给我说的那个stl我也有用,也算是今天用到了吧,set以及pair,平常还是pair用的多一点

因此我们将剩余左括号数量相同的位置放一起,然后考虑其区间能否真的被选中。通过观察可以发现:若之间位置的剩余左括号数量小于等于第位之前所剩余的左括号的两倍,那么这个区间就可以被选中,因此本题转换成区间最值(RMQ问题)。

 光这样的朴素算法复杂度是O(n^2logn),这不就直接爆了,怎么能这样做,但是枚举位置时末尾也是非递减的,因而可以用双指针来优化成为O(nlogn)然后就AC了

合法的区间要满足LR的前缀和相等,然后MAX  L~R<=2*前缀和

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 200010;
int n, pre[N];
char s[N];
pair<int, int> p[N];
int cnt[N];
set<pair<int, int> > pos[N];

void init()
{
	memset(pre,0,sizeof(pre));
	return ;
}

signed main()
{
    int t;
    cin>>t;
    while(t--)
    {
    	init();
        scanf("%s", s + 1);
        n = strlen(s + 1);
        for(int i = 0; i <= n; i++)
            pos[i].clear(), cnt[i] = 0;
        for(int i = 1; i <= n; i++)
        {
            if(s[i] == '(') pre[i] = pre[i - 1] + 1;
            else pre[i] = pre[i - 1] - 1;
            p[i] = make_pair(pre[i], i);
        }
        sort(p + 1, p + n + 1, greater<pair<int, int> >());
        set<int> ins;
        int ans = 0, R = 0;
        for(int i = 1; i <= n; i++)
        {
            while(R < n && p[R + 1].first > p[i].first * 2)
                ins.insert(p[R + 1].second), R++;
            if(ins.upper_bound(p[i].second) == ins.end())
            {
                ans += pos[p[i].first].size();
            }
            else
            {
                auto it1 = ins.upper_bound(p[i].second);
                auto it2 = pos[p[i].first].lower_bound(make_pair(*it1, 0));
                ans += pos[p[i].first].size();
                if (it2 != pos[p[i].first].end()) ans -= (*it2).second;
            }
            cnt[p[i].first]++;
            pos[p[i].first].insert(make_pair(p[i].second, cnt[p[i].first]));
        }
        printf("%lld\n", ans);
    }
    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【专利 超音速】一种光伏检测系统

申请号CN202410053901.0公开号&#xff08;公开&#xff09;CN118032774A申请日2024.01.12申请人&#xff08;公开&#xff09;超音速人工智能科技股份有限公司发明人&#xff08;公开&#xff09;张俊峰(总); 叶长春(总); 许春夏 摘要 本发明公开一种光伏检测系统&#xff0…

MySql全文索引+Ngram

一、关于Ngram 1.1 什么是ngram MySQL 内置的全文解析器使用单词之间的空格作为分隔符&#xff0c;这对于不使用空格做分隔符的语言是一种限制。为了解决这一限制&#xff0c;MySQL提供了一个支持中文、日文和韩文&#xff08;CJK&#xff09;的ngram全文解析器。ngram 全文解…

AI自动化办公:批量将Excel表格英文内容翻译为中文

有一个50列的表格&#xff0c;里面都是英文&#xff0c;要翻译成中文&#xff1a; 在ChatGPT中输入提示词&#xff1a; 你是一个开发AI大模型应用的Python编程专家&#xff0c;要完成以下任务的Python脚本&#xff1a; 打开Excel文件&#xff1a;"F:\AI自媒体内容\AI行业…

linux之docker- image.tar 的导出和导入

一、情况 docker 镜像有时无法从外网访问&#xff0c;需要把docker 打包导出到本地&#xff0c;然后以文件的形式&#xff0c;发送给其他人&#xff0c;再然后其他人把docker 镜像文件导入到自己的服务器本地镜像仓库&#xff0c;方可使用。也可把镜像上传到公司内网。下面就开…

私有大模型:针对长结构文档的回答方法

作者: Jon Saad-Falcon, Joe Barrow, Alexa Siu, Ani Nenkova, David Seunghyun Yoon, Ryan A. Rossi, Franck Dernoncourt 摘要: 大型语言模型&#xff08;LLMs&#xff09;在处理长文档问答&#xff08;QA&#xff09;时面临着无法适应其小上下文窗口的问题。为了解决这一问…

Yolov10笔记

一、前言 清华大学团队设计的Yolov10. 在这项工作中&#xff0c;我们主要从后处理和模型结构两方面进一步优化YOLO系列模型的性能和延迟平衡。我们首先为YOLO引入了端到端训练的一致双重分配&#xff0c;这在大大降低推理延迟的情况下保证了性能。此外&#xff0c;我们针对YOLO…

DBeaver添加DM8驱动(maven下载和jar包下载配置)

DBeaver 24.0.3添加DM8驱动 下载DBeaver下载DM达梦驱动下载 安装配置使用自带Dameng自行添加达梦驱动 因为最近公司项目有信创要求&#xff0c;所以下载了达梦数据库。使用自带的达梦管理工具不是很方便&#xff0c;于是换了DBeaver。 哼哧哼哧安装好后&#xff0c;创建数据库连…

前端功能拖拽篇:dragleave拖拽事件穿透子元素的优雅解决方案

文章目录 前情提要应用场景⭐拖拽改变元素位置⭐拖拽改变目标区域的样式⭐dragleave拖拽事件穿透子元素的优雅解决方案 最后 前情提要 在前端工作过程中&#xff0c;避免不了要接触各种技术&#xff0c;拖拽就是其中一个&#xff0c;大部分关于拖拽的基础知识和Demo都在MDN中写…

【智能算法】吸引-排斥优化算法(AROA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;K Cymerys受到自然界中吸引-排斥现象启发&#xff0c;提出了吸引-排斥优化算法&#xff08;Attraction–Repulsion Optimization Algorithm, AROA&#xff09;。 2.算法…

Verilog HDL基础知识(二)

引言&#xff1a;本文继续介绍Verilog HDL基础知识&#xff0c;重点介绍赋值语句、阻塞与非阻塞、循环语句、同步与异步、函数与任务语法知识。 1. 赋值语句 在Verilog中&#xff0c;有两种进行赋值的方法&#xff0c;即连续赋值语句和过程赋值语句&#xff08;块&#xff09…

[vue2项目]vue2+supermap[mapboxgl]+天地图之地图的初始化

Supermap参考教程 天地图 一、安装 1、终端:npm install @supermap/vue-iclient-mapboxgl 2、在package.json文件的dependencies查看@supermap/vue-iclient-mapboxgl依赖是否安装成功。 3、在mian.js全局引入 import VueiClient from @supermap/vue-iclient-mapboxgl; Vue.u…

新一代目标检测来了:YOLOv10 | 理论概要

点击下方卡片&#xff0c;关注“小白玩转Python”公众号 YOLO的简史 在我们深入探讨YOLOv10之前&#xff0c;让我们回顾一下YOLO的发展历程。YOLO在实时目标检测领域一直是先驱&#xff0c;兼顾速度和准确性。从YOLOv1到YOLOv9&#xff0c;每个版本在架构、优化和数据增强方面都…

Ansible04-Ansible Vars变量详解

目录 写在前面6 Ansible Vars 变量6.1 playbook中的变量6.1.1 playbook中定义变量的格式6.1.2 举例6.1.3 小tip 6.2 共有变量6.2.1 变量文件6.2.1.1 变量文件编写6.2.1.2 playbook编写6.2.1.3 运行测试 6.2.2 根据主机组使用变量6.2.2.1 groups_vars编写6.2.2.2 playbook编写6.…

场外个股期权零门槛开户安全吗?

一般来说场外个股期权是需要5000w门槛验资20个交易日的&#xff0c;但门槛对于大多数散户而言是很难达到的&#xff0c;因此场外个股期权零门槛开户因此产生&#xff0c;个人散户参与场外个股期权可以通到机构通道方直接下单交易&#xff0c;下文为大家揭秘场外个股期权零门槛开…

基于SpringBoot的旅游攻略信息系统的设计与实现

文档介绍 用户群体 针对已经学习过SpringBoot的同学,希望通过一个项目来加强对框架的应用能力,增加项目经验 针对需要完成大学期间的毕设项目的同学,可以通过此文档了解整个系统技术架构,为自己的毕设论文提供指导性建议 文档内容 此文档内容可以让学习此实战项目的同学有一…

2024年5月月终总结

一转眼4月份又过去了&#xff0c;按照年初的承诺&#xff0c;每月照例要写一个月总结&#xff0c;简单回顾下: 1) 英语学习继续进行&#xff1a; 百词斩&#xff1a; 不背单词&#xff1a; 每日英语听力&#xff1a; 2&#xff09;中医学习每天15分钟&#xff0c;没有中断。 …

数据库系统概论(超详解!!!)第十节 过程化SQL

1.Transact-SQL概述 SQL(Structure Query Language的简称&#xff0c;即结构化查询语言) 是被国际标准化组织(ISO)采纳的标准数据库语言&#xff0c;目前所有关系数据库管理系统都以SQL作为核心&#xff0c;在JAVA、VC、VB、Delphi等程序设计语言中也可使用SQL&#xff0c;它是…

AIGC全面揭秘:人工智能内容生成的无限可能!

一、引言 随着人工智能技术的不断发展&#xff0c;AIGC&#xff08;人工智能生成内容&#xff09;技术逐渐受到广泛关注。本文将全面介绍AIGC的相关知识。 二、AIGC简介 AIGC是利用人工智能技术自动生成内容的一种技术。它可以根据给定的输入数据和规则&#xff0c;自动产生符…

详解 Spark 编程之 RDD 依赖关系

一、依赖与血缘关系 依赖&#xff1a;两个相邻 RDD 之间的关系血缘关系&#xff1a;多个连续的 RDD 的依赖由于 RDD 不会保存数据&#xff0c;为了提高容错性&#xff0c;每个 RDD 都会保存自己的血缘关系&#xff0c;一旦某个转换过程出现错误&#xff0c;可以根据血缘关系重新…

开源VS闭源:AI未来的十字路口

人工智能领域的发展日益加速&#xff0c;其中关于模型的开源和闭源策略引起了业界的广泛关注。开源策略指的是将软件的源代码公开&#xff0c;允许任何人自由使用、研究甚至改进&#xff1b;而闭源策略则是指软件的源代码不公开&#xff0c;只有特定的个体或组织有权访问和修改…