Codeforces Round #843 (Div. 2) A1 —— D

news2025/1/17 17:56:52

题目地址:Dashboard - Codeforces Round #843 (Div. 2) - Codeforces
一个不知名大学生,江湖人称菜狗
original author: jacky Li
Email : 3435673055@qq.com

Time of completion:2023.1.11
Last edited: 2023.1.11

目录

​编辑

A1. Gardener and the Capybaras (easy version)

思路

参考代码

A2. Gardener and the Capybaras (hard version)

思路

参考代码

B. Gardener and the Array

思路

参考代码

C. Interesting Sequence

思路

参考代码

D. Friendly Spiders

思路

参考代码


A1. Gardener and the Capybaras (easy version)

思路

简单版本的仅需要灵活运用字符串进行暴力搜索就行,因为每一个字符串最大仅有100个

PS:当然运用A2肯定也是可以过掉的。

参考代码

#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <stack>
#include <map>
#include <cmath>
#include <cstring>
#include <unordered_map>
#include <unordered_set>

#pragma GCC optimize(2)
#pragma GCC optimize(3)
#define IOS std::ios::sync_with_stdio(false)
#define inf 0x3f3f3f3f
#define YES cout << "YES" << endl
#define NO cout << "NO" << endl
#define int long long
#define x first
#define y second
//#define cmp [&](PII a, PII b){ return a.y < b.y; }

const int N = 5e5+10, mod = 1e9+7, M = 5e7+5, K = 2e5+10, Z = 1e5+7, X = 1.5 * 1e9;

using namespace std;
typedef long long LL;
typedef priority_queue<int> PQI;
typedef priority_queue <int, vector<int>, greater<>> PQGI;
typedef pair<int, int> PII;

void solve()
{
	string ch; cin >> ch;
	int n = ch.size();
//	cout << "n : " << n << endl;
//	cout << "substr(2, 1)" << str.substr(2, 1) << endl;
	ch = ' ' + ch;
	for(int i = 1; i < n; i ++)
		for(int j = i + 1; j < n; j ++ )
		{
			string a = ch.substr(1, i), b = ch.substr(i + 1, j - i), c = ch.substr(j + 1, n - j);
			
			if((a <= b && c <= b) || (a >= b && c >= b))
			{
				cout << a << ' ' << b << ' ' << c << endl;
				return;
			}
		}
}

signed main()
{
    IOS; int T = 1;
	cin.tie(nullptr); 
	cout.tie(nullptr);
    cin >> T;
    while( T -- ) solve();
    return 0;
}

A2. Gardener and the Capybaras (hard version)

思路

用A1 的方法也可以写但是由于困难版本的数据最大到达了2e5的一个程度,所以用A1的方法难免会tle

因此我们思考发现仅有两种情况

①xxxxx  bxxxxx x

②xxxx a xxxxx

参考代码

#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <cmath>
#include <cstring>
#include <unordered_map>
#include <unordered_set>

#define IOS std::ios::sync_with_stdio(false)
#define inf 0x3f3f3f3f
#define YES cout << "YES" << endl
#define yes cout << "yes" << endl
#define no cout << "no" << endl
#define NO cout << "NO" << endl
#define int long long
//#define x first
#define y second
//#define cmp [&](PII a, PII b){ return a.y < b.y; }

const int N = 5e5+10, mod = 1e9+7, M = 1e6+5, K = 1e5+10, Z = 2e5+7;

using namespace std;
typedef long long LL;
typedef priority_queue<int> PQI; 
typedef priority_queue <int, vector<int>, greater<>> PQGI;
typedef pair<int, int> PII;

int n, m, t = 0, cnt;
char ch[5002], str[5002], a[5002];
bool flag = false;

void solve()
{
	string ch; cin >> ch;
	int t = ch.size();
	ch = ' ' + ch;
	string b;
	for(int i = 2; i < t; i ++)
		if(ch[i] == 'a')
		{ 
			b = ch[i];
			cout << ch.substr(1, i - 1) << ' ' << b << ' ' << ch.substr(i + 1, t - i) << endl;
			return;
		}
	for(int i = 2; i < t; i ++)
	{
		if(ch[i] == 'b')
		{
			cout << ch.substr(1, i - 1) << ' ' << ch.substr(i, t - i) << ' ' << ch[t] << endl;
			return;
		}
	}
}

signed main()
{
    IOS; int T = 1;
    cin >> T;
    while( T -- ) solve();
    return 0;
}

B. Gardener and the Array

思路

存入一个map<int, int> 的一个东西,通过输出判断是否为0,博主 笨看代码吧

参考代码

#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <stack>
#include <map>
#include <cmath>
#include <cstring>
#include <unordered_map>
#include <unordered_set>

#pragma GCC optimize(2)
#pragma GCC optimize(3)
#define IOS std::ios::sync_with_stdio(false)
#define inf 0x3f3f3f3f
#define YES cout << "YES" << endl
#define NO cout << "NO" << endl
#define int long long
#define x first
#define y second
#define cmp [&](PII a, PII b){ return a.y < b.y; }

const int N = 5e5+10, mod = 1e9+7, M = 5e7+5, K = 2e5+10, Z = 1e5+7, X = 1.5 * 1e9;

using namespace std;
typedef long long LL;
typedef priority_queue<int> PQI; 
typedef priority_queue <int, vector<int>, greater<>> PQGI;
typedef pair<int, int> PII;

vector<int> s[N];

void solve()
{
	int n; cin >> n;
	map<int, int> jym;
	for(int i = 1; i <= n; i ++ ) s[i].clear();

	for(int i = 1; i <= n; i ++ )
	{
		int a; cin >> a;
		
		for(int j = 1; j <= a; j ++)
		{
			int x; cin >> x;
			s[i].push_back(x);
			jym[x] = jym[x] + 1;
		}
	}
	
	for(int i = 1; i <= n; i ++)
	{
		bool lcq = true;
		for(auto x : s[i])
			if(jym[x] == true) {lcq = 0; break;}
		
		if(lcq)
		{
			YES; return;
		}
	}
	
	NO;
}

signed main()
{
    IOS; int T = 1;
	cin.tie(nullptr); 
	cout.tie(nullptr);
    cin >> T;
    while( T -- ) solve();
    return 0;
}

C. Interesting Sequence

思路

首先如果模式串中有某一位2进制为0需要得到1,一定不可能

其次 n某一位为1,x某一位为0,把n变为x,n-m肯定有一位这位为0的,找到最小的这一位为0的,和其他的取max

参考代码

#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <cmath>
#include <cstring>
#include <unordered_map>
#include <unordered_set>

#define IOS std::ios::sync_with_stdio(false)
#define inf 9e18
#define YES cout << "YES" << endl
#define yes cout << "yes" << endl
#define no cout << "no" << endl
#define NO cout << "NO" << endl
#define int long long
#define x first
#define y second
//#define cmp [&](PII a, PII b){ return a.y < b.y; }

const int N = 5e5+10, mod = 1e9+7, M = 1e6+5, K = 1e5+10, Z = 2e5+7, X = 9e18+2;

using namespace std;
typedef long long LL;
typedef priority_queue<int> PQI; 
typedef priority_queue <int, vector<int>, greater<>> PQGI;
typedef pair<int, int> PII;

//bool check(int n, int x)
//{
//	for(int i = 0; i < 60; i ++ )
//	{
//		int cnt_1 = (n >> i) & 1, cnt_2 = (x >> i) & 1;
//		if(cnt_1 == 0 && cnt_2 == 1)
//			return false;
//	}
//	return true;
//}

void solve()
{
	int n, x; cin >> n >> x;
	
	for(int i = 0; i < 60; i ++ )
		{
			int cnt_1 = (n >> i) & 1, cnt_2 = (x >> i) & 1;
			if(cnt_1 == 0 && cnt_2 == 1)
			{
				cout << -1 << endl;
				return;
			}
		}
//	if(check(n, x) == false) cout << -1 << endl; 
//	else
//	{
		int jym_x = n, jym_n = X, ans1 = 0, ans2 = n;
		
			for(int i = 60; i >= 0; i -- )
			{
				int cnt_1 = n >> i & 1, cnt_2 = x >> i & 1;
				
				if(cnt_1 == 1 && cnt_2 == 0) jym_x = max(jym_x, ans1 + (1LL << i) * 2);
				else if(cnt_1 == 1 && cnt_2 == 1) jym_n = min(jym_n, ans1 + (1LL << i) * 2);
				if(n >> i & 1) ans1 += 1LL << i, ans2 -= 1LL << i;
				
			}
			
			if(jym_x >= jym_n) cout << -1 << endl;
			else cout << jym_x << endl;
//	}
}

signed main()
{
    IOS; int T = 1;
	cin.tie(nullptr); 
	cout.tie(nullptr);
    cin >> T;
    while( T -- ) solve();
    return 0;
}

D. Friendly Spiders

思路

运用迪杰斯特拉算法,当最后还超过某一个巨大的数的时候则是-1

参考代码

// 参考的友友的
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <stack>
#include <map>
#include <cmath>
#include <cstring>
#include <unordered_map>
#include <unordered_set>

#pragma GCC optimize(2)
#pragma GCC optimize(3)
#define IOS std::ios::sync_with_stdio(false)
#define inf 0x3f3f3f3f
#define YES cout << "YES" << endl
#define NO cout << "NO" << endl
#define int long long
#define x first
#define y second
#define cmp [&](PII a, PII b){return a.y < b.y;}

const int N = 5e5+10, mod = 1e9+7, M = 5e7+5, K = 2e5+10, Z = 1e5+7, X = 1.5 * 1e9;

using namespace std;
typedef long long LL;
typedef priority_queue<int> PQI;
typedef priority_queue <int, vector<int>, greater<>> PQGI;
typedef pair<int, int> PII;

int n, m, k;
int s, t;

vector<int> g[N], v[N], c;
int a[N], b[N];
int d[N], pre[N];
bool st[N];

void dijkstra()
{
	for(int i = 1; i <= n; i ++ ) d[i] = 1e9;
	deque<PII> q;
	d[s] = 1;
	q.push_front({1, s});
	
	while(q.size())
	{
		PII t = q.front();
		q.pop_front();
		
		
		if(st[t.y]) continue;
		st[t.y] = 1;
		
		for(auto x : v[t.y])
		{
			int f = t.y <= k;
			if(d[x] > t.x + f)
			{
				d[x] = t.x + f;
				if(f) q.push_front({d[x], x});
				else q.push_back({d[x], x});
				pre[x] = t.y;
			}
		}
	}
}


void print(int x)
{
	if(x <= k) c.push_back(x);
	if(x == s) return;
	print(pre[x]);
}

void solve()
{
	cin >> n;
	k = n;
	set<int> S;
	for(int i = 1; i <= n; i ++ ) 
	{
		cin >> a[i];
		int x = a[i];
		for(int j = 2; j * j <= x; j ++ )
		{
			if(x % j == 0) g[i].push_back(j), S.insert(j);
			while(x % j == 0) x /= j;
		}
		if(x > 1) g[i].push_back(x), S.insert(x);
	}
	
	cin >> s >> t;
	
	for(auto x : S) b[x] = ++ n;
	
	for(int i = 1; i <= n; i ++ )
	{
		for(auto x : g[i])
		{
			v[i].push_back(b[x]);
			v[b[x]].push_back(i);
		}
	}
	
	dijkstra();
	if(d[t] >= 1e9 / 2) cout << -1 << endl;
	else
	{
		cout << d[t] << endl;
		print(t);
		reverse(c.begin(), c.end());
		for(auto x : c) cout << x << ' ';
	}
}

signed main()
{
    IOS; int T = 1;
	cin.tie(nullptr); 
	cout.tie(nullptr);
    cin >> T;
    while( T -- ) solve();
    return 0;
}

作者有言

如果感觉博主讲的对您有用,请点个关注支持一下吧,将会对此类问题持续更新……

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

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

相关文章

读论文——day61 目标检测模型的决策依据与可信度分析

目标检测模型的决策依据与可信度分析本文贡献及原文1 相关工作&#xff08;略看&#xff09;1.3 目标检测模型2 背景知识&#xff08;LIME&#xff09;2.2 LIME3 目标检测决策依据及可信度分析3.1 决策依据3.2 对目标检测模型的预测进行可信度评价4 基于 LIME 的目标检测模型解…

(第四章)OpenGL超级宝典学习:必要的数学知识

必要的数学知识 前言 在本章当中&#xff0c;作者着重介绍了几个和3D图形学重要的数学知识&#xff0c;线性代数基础好的同学可以直接绕过本章&#xff0c;说实话这篇博客写到这里&#xff0c;我是非常犹豫的&#xff0c;本章节的内容可以说是很基础&#xff0c;但是相当…

SSM框架01_Spring

有一个效应叫知识诅咒&#xff1a;自己一旦知道了某事&#xff0c;就无法想象这件事在未知者眼中的样子。00-Spring课程介绍01-初识Spring今天所学的Spring其实是Spring家族中的Spring Framework;Spring Fra是Spring家族中其他框架的底层基础&#xff0c;学好Spring可以为其他S…

Morse1题解

原理摩尔斯电码和电报简单说一下电报和摩尔斯电码的原理最简单的电报模型就是一个电源&#xff0c;一个开关和一个电磁铁当需要长距离使用时候&#xff0c;需要用到继电器按下开关&#xff0c;电磁铁会吸引磁铁长按开关&#xff0c;电磁铁就会闭合一段时间&#xff0c;留下一划…

Jenkins集成GitLab Webhooks自动化构建

JenkinsGitLab Webhooks自动构建项目1 构建步骤1.1 Jenkins中设置构建触发器1.2 Build Authorization Token Root插件安装1.3 GitLab配置Webhooks2 测试webhooks2.1 测试推送事件2.2 测试合并请求事件2.3 代码修改提交测试1 构建步骤 1.1 Jenkins中设置构建触发器 这里先随便写…

Markdown与DITA比较

Markdown是一种轻量级标记语言&#xff0c;创始人为John Gruber。它允许人们使用易读易写的纯文本格式编写文档&#xff0c;然后转换成有效的HTML文档。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。由于Markdown的轻量化、易读易写特性&#xff0c;并且对于图片&am…

第一章Mybatis基础操作学习

文章目录MyBatis简介MyBatis历史MyBatis特性和其它持久化层技术对比搭建MyBatis开发环境创建maven工程创建MyBatis的核心配置文件创建mapper接口创建MyBatis的映射文件通过junit测试功能加入log4j日志功能不带参数的增删改查Mapper接口的编写对应Mapper接口的xml文件编写核心配…

【Python基础】如何使用pycharm

1、设置Python 解释器 在任何项目&#xff0c;第一步就是设置Python 解释器&#xff0c;就是那个Python.exe 在File->Setting->Projec: xxx 下找到 Project Interpreter。然后修改为你需要的 Python 解释器。注意这个地方一定要注意的是&#xff1a;在选择 Python 解释…

Dubbo 学习笔记

Dubbo 学习笔记 1.基础知识 1.1 分布式基础理论 1.1.1 什么是分布式系统&#xff1f; 《分布式系统原理与范型》定义&#xff1a; 分布式系统是若干独立计算机的集合&#xff0c;这些计算机对于用户来说就像单个相关系统分布式系统&#xff08;distributed system&#xf…

java基于ssm蛋糕店蛋糕商城蛋糕系统网站源码

简介 java使用ssm开发的蛋糕商城系统&#xff0c;用户可以注册浏览商品&#xff0c;加入购物车或者直接下单购买&#xff0c;在个人中心管理收货地址和订单&#xff0c;管理员也就是商家登录后台可以发布商品&#xff0c;上下架商品&#xff0c;处理待发货订单等。 演示视频 …

HTML贪吃蛇游戏源码(穿墙)

演示 完整HTML <!DOCTYPE html> <html> <head><meta charset"utf-8"><title><・)))><<</title><link rel"shortcut icon" href"${ctx}/image/snake_eating.png"><meta name"ref…

中科大2006年复试机试题

中科大2006年复试机试题 文章目录中科大2006年复试机试题第一题问题描述解题思路及代码第二题问题描述解题思路及代码第三题问题描述解题思路及代码第四题问题描述解题思路及代码第五题问题描述解题思路及代码第六题问题描述解题思路及代码第一题 问题描述 求矩阵的转置。 给…

three.js入门篇6之 环境贴图、经纬线映射贴图与高动态范围成像HDR

目录013-1 环境贴图013-2 经纬度映射贴图与HDR013-1 环境贴图 就是把周边的环境&#xff0c;贴在物体的表面之上 注意&#xff1a;px&#xff1a;x轴正向&#xff0c;nx&#xff1a;x轴负向 import * as THREE from "three" // console.log(main.js,THREE);// 导入…

06什么是Fabless?什么是IDM?

Fabless是SIC&#xff08;半导体集成电路&#xff09;行业中无生产线设计公司的简称&#xff0c;只搞设计的无晶圆厂半导体公司&#xff0c;生产交给像台积电这样的代工厂去做。 IDM是整合元件制造商&#xff0c;像英特尔这样既设计又制造的就叫IDM&#xff0c;因为规模大&…

对于字节,16进制,2进制, 0xFF,位移的一些杂记

1.普通字符串95 对应的16进制的展示&#xff0c;使用工具查看如下图 下图为普通字符串 下图为95对应的16进制 95对应的16进制字符串为39 35》39代表一个字节 35代表另一个字节 &#xff08;一个字节是由两位16进制字符串组成&#xff0c;比如39或35&#xff09; 1个字节对应…

select for update加了行锁还是表锁?

最近在开发需求的时候&#xff0c;用到了select......for update。在代码评审的时候&#xff0c;一位同事说 &#xff0c;唯一索引一个非索引字段&#xff0c;是否可能会锁全表呢&#xff1f;本文将通过9个实验操作的例子&#xff0c;给大家验证select......for update到底加了…

迁移环境时,忘记私钥证书密码怎么办?

知行之桥的版本在进行不断更新&#xff0c;相较之前的版本而言&#xff0c;知行之桥每一次更新的版本&#xff0c;无论在操作还是功能亦或是便利性上都有更好的优势&#xff0c;因此不少企业会在新版本更新之后果断选择新的版本&#xff0c;企业选择版本更新之后&#xff0c;需…

He3 新版上新

系统功能更新 支持拖动工具&#xff0c;调整位置 支持置顶 支持自定义分类 新增工具 Paseto 生成器 2. 文本分析 JSON 转 PHP&#xff0c;YAML 转 PHP UTF7 编码、UTF7 解码 6. UTM 生成器 CSS 边框圆角生成器 CSV 类转换工具&#xff0c;目前支持 CSV 与 Markdown、HTML、JS…

什么是无代码ITSM工具

拥有强大 ITSM 团队的企业已经能够生存下来&#xff0c;并且在某些情况下在整个大流行期间表现出色。成功的 IT 团队以其在日常运营中断时快速恢复的能力而闻名。 当您需要重新组织服务交付流程时&#xff0c;ITSM 平台可以减少工程工作量&#xff0c;这对于制定弹性 ITSM 战略…

Python学习笔记——元组

Python将不能修改的值称为不可变的&#xff0c;而不可变的列表被称为元组。定义元组元组创建只需要在括号中添加元素&#xff0c;并使用逗号隔开即可。元组使用小括号 ( )&#xff0c;列表使用方括号 [ ]。定义元组后&#xff0c;就可以使用索引来访问其元素&#xff0c;就像访…