E. Archaeology(纯思维)

news/2025/2/14 4:25:05/

Problem - E - Codeforces

爱丽丝买了一个刚果总理视频的订阅,正在看一部关于苏格兰卡特林湖的因子岛的考古发现的纪录片。考古学家发现了一本书,其年代和来源都不明。也许爱丽丝可以对它进行一些解释?

这本书包含一串字符 "a"、"b "和 "c"。有人指出,没有两个连续的字符是相同的。还有人猜测,这个字符串包含一个异常长的子序列,从两边看都是一样的。

帮助爱丽丝验证这一点,找到这样的子序列,它至少包含原始字符串的一半的字符,并向下取整。请注意,你不一定要把它的长度最大化。

如果一个字符串aa可以通过删除几个(可能是0个或全部)字符从bb中得到,那么这个字符串就是bb的一个子序列。

输入
输入包括一个字符串ss(2≤|s|≤1062≤|s|≤106)。字符串ss仅由字符 "a"、"b"、"c "组成。保证没有两个连续的字符是相等的。

输出
输出一个宫锁链tt,它是ss的子序列,并且|t|≥⌊|s|2⌋|t|≥⌊|s|2⌋。

如果有多个解决方案,你可以打印其中任何一个。你不必使tt的长度最大化。

如果没有解决方案,则输出一个字符串 "IMPOSSIBLE"(为清晰起见,加引号)。

例子
输入
cacbac
输出
aba
输入
abc
输出
a
输入
cbacacacbcbababacbcb
输出
cbaaacbcaaabc
注意
在第一个例子中,其他有效的答案包括 "cacac"、"caac"、"aca "和 "ccc"。
题解:

(不得不说,cf思维题出的是真的好,如果你写这种题时,一个条件没怎么用到,思路肯定是不对的)

 题目的关键:没有相邻的两个字母,字母只有三个,从这句话你能领悟到什么?(...)

首先第一点:字母只有三个,每相邻四个肯定有两个

第二点:没有相邻的两个字母,从字符串中,任意截取两段字符长度为2的子串,这两个子串一定有字符相同

接着我们就可以从两边开始找了,模拟这个过程(第二点)即可

#include <cstdio>
#include <cstring>
#include <algorithm>
#include<iostream>
#include<vector>
#include<set>
#include<map>
#include<cmath>
#include<queue>
using namespace std;
typedef long long ll;
#define int long long
typedef pair<int,int> PII; 
const int N = 1e6 + 10;
int f[N]; 
void solve()
{string s;cin >> s;int n = s.size();s = " " + s;int l = 1,r = n;while(l < r){if(r - l + 1 < 4){f[l] = 1;break;}if(s[l] == s[r]){f[l] = f[r] = 1;l ++;r --;}else if(s[l + 1] == s[r]){f[l + 1] = f[r] = 1;l += 2;r--;}else if(s[l] == s[r - 1]){f[l] = f[r - 1] = 1; l ++;r -= 2;}else if(s[l + 1] == s[r - 1]){f[l + 1] = f[r - 1] = 1;l += 2;r -= 2;}}for(int i = 1;i <= n;i++){if(f[i])cout << s[i];}
}signed main()
{
//	ios::sync_with_stdio(0);
//	cin.tie(0);cout.tie(0);int t = 1;
//	cin >> t;while(t--){solve(); }
}


http://www.ppmy.cn/news/49432.html

相关文章

WinRM远程管理服务渗透利用(端口:5985)

目录 扫描 介绍 开启WinRM 关闭WinRM 其它 重启WinRM 渗透实例

孩子为什么不能玩抖音精彩回答,共勉

2 可是&#xff0c;为什么我的同学、哥哥姐姐…… 反正身边好多人都在玩&#xff1f; 我不知道你父母有没有告诉你这个道理&#xff1a; 你把时间花在哪儿&#xff0c; 你就会成为什么样的人。 他们爱玩&#xff0c;是因为两个字&#xff1a; 空虚。 想象一下&#xff…

Pytorch深度学习笔记(七)逻辑斯蒂回归

目录 1. logistic&#xff08;逻辑斯蒂&#xff09;函数 2.二分类任务&#xff08;binary classification&#xff09;损失函数 3.二分类任务&#xff08;binary classification&#xff09;最小批量损失函数 4.逻辑斯蒂回归代码实现 附&#xff1a;pytorch提供的数据集 推…

【C/C++】__attribute__ 使用技巧详解

文章目录 __attribute__ 基本概念__attribute__ 存在意义__attribute__ 使用方法【代码实例】 attribute 基本概念 __attribute__是GCC编译器提供的一种扩展语法&#xff0c;用于指定变量、函数、类型等的属性。__attribute__可以用于指定变量的对齐方式、函数的调用约定、类型…

Java多线程基础-6:线程安全问题及解决措施,synchronized关键字与volatile关键字

线程安全问题是多线程编程中最典型的一类问题之一。如果多线程环境下代码运行的结果是符合我们预期的&#xff0c;即该结果正是在单线程环境中应该出现的结果&#xff0c;则说这个程序是线程安全的。 通俗来说&#xff0c;线程不安全指的就是某一代码在多线程环境下执行会出现b…

数据结构和算法学习记录——二叉树的非递归遍历(中序遍历、先序遍历、后序遍历)

目录 中序遍历 代码实现 思路图解 先序遍历 代码实现 后序遍历 思路图解 二叉树的非递归遍历运用到堆栈 中序遍历 循环的思路是 遇到一个节点&#xff0c;就把它压栈&#xff0c;并去遍历它的左子树。当左子树遍历结束之后&#xff0c;从栈顶弹出这个节点并访问…

多云转晴:Databend 的天空计算之路

作者&#xff1a;尚卓燃&#xff08;PsiACE&#xff09; 澳门科技大学在读硕士&#xff0c;Databend 研发工程师实习生 Apache OpenDAL(Incubating) Committer PsiACE (Chojan Shang) GitHub 内容提要&#xff1a;本文将会介绍天空计算的背景&#xff0c;以及 Databend 是如何…

基于Spring+SpringMVC+MyBatis框架的Java在线考试系统

项目介绍 基于SpringSpringMVCMyBatis框架的Java在线考试系统 功能模块 |用户功能模块|用户注册登陆|用户可以通过用户名邮箱注册网站&#xff0c;并且通过注册的用户登陆网站。|随机练习|从题库中随机取出指定数量的题目供学员练习。|强化练习|按照学员知识分布情况&#xff…