比赛记录:Educational Codeforces Round 149 (Rated for Div. 2) A~D

news2024/9/21 4:22:00

传送门:CF

前提提要:这场狠狠的掉分.C题刚开始少了一个特判,导致自己对自己的构造方法产生了疑问,然后就一直在做无用思考,后来交的时候排名就贼后面,然后D题的题面简直稀烂(虽然D题看懂之后极其简单…),赛时根本看不懂D题意,最终rating掉完.不亏是教育场,被狠狠的教育了

A题:A. Grasshopper on a Line

赛时随便口胡了一贪心想法,然后就过了.写题解时简单思考了一下,发现当时的贪心想法只是碰巧过了而已…
对于x%k!=0的情况,直接就可以跳x.
对于x%k=0的情况,显然x可以先跳x-1,然后再跳1,因为k>1
代码的话附赛时口胡代码,正解就懒得再写了,反正口胡的也过了(bushi

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define root 1,n,1
#define ls rt<<1
#define rs rt<<1|1
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
inline ll read() {
	ll x=0,w=1;char ch=getchar();
	for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;
	for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';
	return x*w;
}
#define maxn 1000000
const double eps=1e-8;
#define	int_INF 0x3f3f3f3f
#define ll_INF 0x3f3f3f3f3f3f3f3fc
int main() {
	int T=read();
	while(T--) {
		int x=read(),k=read();
		vector<int>ans;
		int temp=0;
		while(x) {
			int r=x;
			while(r%k==0) r--;
			ans.push_back(r);
			x-=r;
			temp++;
		}
		cout<<temp<<endl;
		for(int i=0;i<ans.size();i++) {
			cout<<ans[i]<<" ";
		}
		cout<<endl;
	}
	return 0;
}

B题:B. Comparison String

简单思维题.不难发现最终的答案就是最长的相同连续字符+1.证明显然,随便手画一下就能搞清楚了,此处就不在赘述了

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define root 1,n,1
#define ls rt<<1
#define rs rt<<1|1
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
inline ll read() {
	ll x=0,w=1;char ch=getchar();
	for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;
	for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';
	return x*w;
}
#define maxn 1000000
const double eps=1e-8;
#define	int_INF 0x3f3f3f3f
#define ll_INF 0x3f3f3f3f3f3f3f3f
int main() {
	int T=read();
	while(T--) {
		int n=read();
		string s;
		cin>>s;int maxx=-int_INF;int cnt=1;
		for(int i=1;i<s.length();i++) {
			if(s[i]==s[i-1]) {
				cnt++;
			}
			else {
				maxx=max(maxx,cnt);
				cnt=1;
			}
		}
		maxx=max(maxx,cnt);
		cout<<maxx+1<<endl;
	}
	return 0;
}

C题:C. Best Binary String

首先先讲讲需要特判的一些情况.注意全部都是 ? ? ?或者 1 1 1,或者 0 0 0,或者没有 ? ? ?的情况.
然后我们贪心的去想想这道题.首先当我们的?在开头时,此时我们可以直接填0,然后?在结尾时,我们直接填1,此时这么填显然是最优的,因为我们可以不用考虑这些数字了.

对于?在中间的情况,我们分析连续的?区间的前后是什么(显然对于一个连续的?区间,我们应该将其赋值为同一个值是最优的).当我们前后数字一样时,我们就应该填那一个数字,假设我们的前后数字不同时,此时我们填0或1都行.

对于前后数字一样时,我们此时显然应该填那一个数字.不然的话我们就需要用一个花费来将前面的数字换到后面去或者后面的数字换到前面来.此时就不优了.
对于前后数字不同时,无论我们填那一个数字对于最后的花费都是没有影响的,这个可以简单那枚举一下情况,此处就不在赘述了.

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define root 1,n,1
#define ls rt<<1
#define rs rt<<1|1
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
inline ll read() {
	ll x=0,w=1;char ch=getchar();
	for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;
	for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';
	return x*w;
}
#define maxn 1000000
const double eps=1e-8;
#define	int_INF 0x3f3f3f3f
#define ll_INF 0x3f3f3f3f3f3f3f3f
int main() {
	int T=read();
	while(T--) {
		string s;cin>>s;
		if(s.find('?')==s.npos) {
			cout<<s<<endl;
			continue;
		}
		if(s.find('1')==s.npos&&s.find('0')==s.npos) {
			for(int i=0;i<s.length();i++) {
				cout<<0;
			}
			cout<<endl;
			continue;
		}
		string ans="";int l=0;
		if(s[0]=='?') {
			while(s[l]=='?') {
				l++;
			}
		}
		for(int i=0;i<l;i++) ans+=s[l];
		int r=s.length()-1;
		if(s.back()=='?') {
			while(s[r]=='?') {
				r--;
			}
		}
		for(int i=l;i<=r;i++) {
			if(s[i]=='?') {
				int pos1=i-1;
				while(i+1<=r&&s[i+1]=='?') {
					i++;
				}
				int pos2=i+1;
				if(s[pos1]!=s[pos2]) {
					for(int j=pos1+1;j<=pos2-1;j++) {
						ans+='0';
					}
				}
				else {
					for(int j=pos1+1;j<=pos2-1;j++) {
						ans+=s[pos2];
					}
				}
			}
			else {
				ans+=s[i];
			}
		}
		for(int i=r+1;i<s.length();i++) {
			ans+=s[r];
		}
		cout<<ans<<endl;
	}
	return 0;
}

D题:D. Bracket Coloring

题意依托答辩.需要十分仔细的研读(很难不让人以为是中国人出的题).
看完题意之后思路就很清晰了.显然我们最终的答案最多也就是分成两个子序列.为什么呢.
我们可以将所有的合法子序列情况分为一下几种:
在这里插入图片描述

然后我们发现1,2两种情况是可以合并成同一个子序列的(当然3,4也是).并且我们发现对于所有的可满足括号序列,我们总可以拆分成上述几种子序列(这个手画一下就挺清楚明白的,证明就不证了,偷懒一下,逃).
所以我们在跑字符串的时候只要看看当前的括号属于哪一种情况即可.这个需要分类讨论:
对于 ′ ′ ( ′ ′ ''('' ′′(′′的情况,假设我们之前有没有配对的 ′ ′ ) ′ ′ '')'' ′′)′′,那么当前就是第三,四种情况;假设我们没有 ′ ′ ) ′ ′ '')'' ′′)′′,那么此时我们就属于第二种或第一种情况;
对于 ′ ′ ) ′ ′ '')'' ′′)′′的情况,类似分析即可.

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define root 1,n,1
#define ls rt<<1
#define rs rt<<1|1
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
inline ll read() {
	ll x=0,w=1;char ch=getchar();
	for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;
	for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';
	return x*w;
}
#define maxn 1000000
const double eps=1e-8;
#define	int_INF 0x3f3f3f3f
#define ll_INF 0x3f3f3f3f3f3f3f3f
int main() {
	int T=read();
	while(T--) {
		int n=read();
		string s;cin>>s;map<int,int>mp;
		vector<int>ans;int cnt1=0,cnt2=0;//cnt1代表(,cnt2代表)
		for(int i=0;i<s.length();i++) {
			if(s[i]=='(') {
				if(cnt2==0) {
					cnt1++;
					ans.push_back(2);
					mp[2]++;
				}
				else {
					cnt2--;
					ans.push_back(1);
					mp[1]++;
				}
			}
			else {
				if(cnt1==0) {
					cnt2++;
					ans.push_back(1);
					mp[1]++;
				}
				else {
					cnt1--;
					ans.push_back(2);
					mp[2]++;
				}
			}
		}
		if(cnt1||cnt2) {
			cout<<"-1"<<endl;
			continue;
		}
		int Size=(mp[1]?1:0)+(mp[2]?1:0);
		cout<<Size<<endl;
		if(Size==1) {
			for(int i=0;i<ans.size();i++) {
				cout<<1<<" ";
			}
		}
		else {
			for(int i=0;i<ans.size();i++) {
				cout<<ans[i]<<" ";
			}
		}
		cout<<endl;
	}
	return 0;
}

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

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

相关文章

Web的基本漏洞--命令执行漏洞

目录 一、命令执行漏洞 1.命令执行漏洞的原理 2.命令执行漏洞分类 3.命令执行漏洞的危害 4.命令执行漏洞的防范措施 5.命令执行漏洞的绕过 一、命令执行漏洞 命令执行漏洞是指攻击者可以随意执行系统命令。它属于高危漏洞之一&#xff0c;也属于代码执行的范畴。命令执行…

内置工具横向移动

IPCSchtasks IPC: IPC$是共享"命令管道"的资源&#xff0c;它是为了让进程通信而开放的命名管道&#xff0c;连接双方可以建立安全的通道并以此通道进行加密数据交换&#xff0c;从而实现对远程计算机的访问。 利用条件&#xff1a; 1、开放139、445 2、目标开启…

Node.js V10.24.1 安装步骤(node、cnpm、yarn、vue)

一、下载node.js 下载地址&#xff1a;Download | Node.js 要下载历史低版本请点击“Previous Releases” Previous Releases 本文章以V10.24.1为例 &#xff0c;下载64位msi 二、安装 下载完成后&#xff0c;一直点击Next直到安装完成&#xff0c;可以自己修改安装位置。…

09.二叉树

09.二叉树 1.树型结构 1.1概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。它具有以下的特点&…

收到字节offer,我却拒绝了...

前言&#xff1a; 大四快毕业了&#xff0c;在等待读研的期间无事可做&#xff0c;所以打算暑期找个实习。 忠告&#xff1a; 本人投了字节某测试岗&#xff0c;看到要求是测开的要求&#xff08;科班出身需要熟悉一种语言&#xff09;&#xff0c;就以为面完发技术岗的offe…

note注解

元注解 注解在注解上面的注解称为元注解。主要有以下五种。 Retention 表明注解存活时间 Documented 将注解元素放到Javadoc文档中 Target 注解可以使用到的地方 在ElementType[]中主要有以下几种类型 TYPE&#xff1a;类型&#xff08;比如类、注解、枚举&#xff09; FIELD&…

Refresh解析

目录 后置处理器PostProcessor PostProcessor的种类 Aware 事件监听模式 Spring容器的刷新逻辑 ApplicationContext refresh的流程概述 1---prepareRefresh 2---obtainFreshBeanFactory 3---prepareBeanFactory 4---postProcessBeanFactory 5---invokeBeanFactoryPo…

【正点原子STM32连载】 第二十一章 通用定时器实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第二十…

海康萤石摄像头本地局域网拉流保存

海康萤石的视频cp1型号&#xff0c;获取局域网的视频流&#xff1a;rtsp 拉流方法 首先需要在软件中打开rtsp开关&#xff0c;然后使用nmap工具测试下摄像头开放的端口号&#xff0c;一定会有一个554端口开放 $ nmap 192.168.0.105 PORT STATE SERVICE 554/tcp open r…

什么是Flink CDC,以及如何使用

什么是Flink CDC&#xff0c;以及如何使用 CDC介绍Flink CDC适用于场景&#xff1f;Flink CDC 的简单用例数据库配置创建数据库和相应的表开启mysql数据库bin-log日志1.如果是服务器2.如果在Windows使用小皮 搭建Flink CDC java环境添加maven相关pom构建Sinkmain配置运行 操作数…

盘点中国开发的有影响力的编程技术产品,道阻且长,行则将至

计算机诞生之后&#xff0c;程序员需要给计算机发送指令&#xff0c;能够准确地定义计算机所需要使用的数据&#xff0c;并精确地定义在不同情况下所应当采取的行动。计算机需要能够识别并执行指令。这个“指令”就是我们今天的“编程语言”&#xff0c;一种计算机和人都能识别…

【十】设计模式~~~结构型模式~~~享元模式(Java)

【学习难度&#xff1a;★★★★☆&#xff0c;使用频率&#xff1a;★☆☆☆☆】 5.1. 模式动机 面向对象技术可以很好地解决一些灵活性或可扩展性问题&#xff0c;但在很多情况下需要在系统中增加类和对象的个数。当对象数量太多时&#xff0c;将导致运行代价过高&#xff0…

路径规划算法:基于自私羊群优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于自私羊群优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于自私羊群优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化…

图解max{X,Y}和min{X,Y}并求相关概率

图解max{X,Y}和min{X,Y}并求相关概率 对max{X,Y}或min{X,Y}进行分解再求解 P ( m a x { X , Y } ≥ c ) P [ ( X ≥ c ) ∪ ( Y ≥ c ) ] P ( m a x { X , Y } ≤ c ) P [ ( X ≤ c ) ∩ ( Y ≤ c ) ] P ( m i n { X , Y } ≥ c ) P [ ( X ≥ c ) ∩ ( Y ≥ c ) ] P ( m i…

2022年12月1日郑州大学新闻与传播学院副院长博导郑*侠—社科申报注意事项

郑老师&#xff08;1项重点社科&#xff0c;2项青年社科&#xff09;&#xff0c; 一、选题 随时关注 最新国家层面信息&#xff1a;二十大报告&#xff0c;重要文件&#xff0c;重点项目信息 选题方向&#xff1a;问题导向 时代问题—学术问题—现实问题 题目命名&#xf…

基于微信小程序的社区生活管理

一&#xff1a;系统使用到的技术栈 SSMJSP原生JSMysql微信小程序 二&#xff1a;表结构 三&#xff1a;功能截图 四.源码获取

【工具学习】- Python通过dxfgrabber库获取CAD信息

Python - dxfgrabber库获取CAD信息 &#x1f604;生命不息&#xff0c;写作不止 &#x1f525; 继续踏上学习之路&#xff0c;学之分享笔记 &#x1f44a; 总有一天我也能像各位大佬一样 &#x1f3c6; 一个有梦有戏的人 怒放吧德德 &#x1f31d;分享学习心得&#xff0c;欢迎…

如何利用Stable Diffusion WebUI快速制作漫画开源

今天给大家带来的是如何利用Stable Diffusion WebUI快速制作漫画。 欢迎大家可以关注我的公众号《乔说科技》&#xff0c;关于如何制作动漫前置学习&#xff0c;请点击如下文章查看相关技术&#xff1a; &#xff08;1&#xff09;如何安装绘图工具Stable Diffusion WebUI&…

2023 手术机器人现状

先看一下主要分类&#xff1a; 手术机器人总览&#xff0c;看一下这张图&#xff1a; 先简单说一下国外的&#xff1a; 1 . 达芬奇手术机器人 简单地说&#xff0c;达芬奇机器人就是高级的腹腔镜系统。大家可能对现在流行的微创治疗手段如&#xff1a;胸腔镜、腹腔镜、妇科腔…

dubbo 3.2.0 token-有bug慎用

dubbo3 provider可以配置token dubbo: application: name: merge-provider-1 qos-enable: false protocol: name: dubbo port: 20880 registry: address: zookeeper://${zookeeper.address:192.168.157.151}:2181 provider: token: “true” 当token 配置为true的时候&#x…