[题解]AtCoder Beginner Contest 411(ABC411) A~D
因为要准备考试所以补题会晚些。(#><)
A - Required Length
输出Yes\(\iff |s|\ge n\)。
时间复杂度\(O(1)\)。
点击查看代码
#include<bits/stdc++.h>
using namespace std;
string s;
int n;
signed main(){
cin>>s>>n;
cout<<(s.size()>=n?"Yes":"No");
return 0;
}
B - Distance Table
照题意统计并输出即可,见代码。
时间复杂度\(O(n^2)\)。
点击查看代码
#include<bits/stdc++.h>
#define N 55
using namespace std;
int n,a[N];
signed main(){
cin>>n;
for(int i=1;i<n;i++) cin>>a[i];
for(int i=1;i<n;i++){
int sum=0;
for(int j=i;j<n;j++) sum+=a[j],cout<<sum<<" ";
cout<<"\n";
}
return 0;
}
C - Black Intervals
显然,对于\(i\)这一位的反转操作:
- 如果是\(0\)变\(1\):
- 如果与\(i\)相邻的位置都是\(0\),答案\(+1\)。
- 如果与\(i\)相邻的位置恰有\(1\)个\(1\),答案不变。
- 如果与\(i\)相邻的位置恰有\(2\)个\(1\),答案\(-1\)。
- 如果是\(1\)变\(0\),就将前一种情况对答案的贡献取相反数。
时间复杂度\(O(q)\)。
点击查看代码
#include<bits/stdc++.h>
#define N 500010
using namespace std;
int n,q,ans;
bitset<N> v;
signed main(){
cin>>n>>q;
while(q--){
int x;
cin>>x;
v[x]=!v[x];
ans+=(v[x]?-1:1)*(v[x-1]+v[x+1]-1);
cout<<ans<<"\n";
}
return 0;
}
D - Conflict 2
字符串的赋值是线性复杂度的,因此直接暴力赋值是不可行的。只需要构造“让\(S\)在两台机器之间来回传递”的数据就可以卡成\(O(n|S|)\)。
赛时思路
建立Trie树求解。
让第\(i\)台PC机都记录\(num[i]\),表示其拥有的字符串在Trie上的节点编号。追加字符时直接从\(num[i]\)开始新建节点;赋值操作直接对\(num\)进行即可。
输出答案,仅需一遍DFS从Trie树上找到服务器的\(num\),输出途经的字符即可。
时间复杂度\(O(n+|S|)\),空间复杂度\(O(n|\Sigma|)\)。其中\(|\Sigma|=26\),为字符集大小。
点击查看代码
#include<bits/stdc++.h>
#define N 200010
#define L 1000010
#define C 26
using namespace std;
int n,q,cur,num[N],tr[L][C],idx;
string s,a[N];
void ins(int &p,string& s){
for(int i:s){
int c=i-'a';
if(!tr[p][c]) tr[p][c]=++idx;
p=tr[p][c];
}
}
bool dfs(int p){
if(p==cur) return 1;
for(int i=0;i<C;i++)
if(tr[p][i]&&dfs(tr[p][i]))
return s+=(i+'a'),1;
return 0;
}
signed main(){
cin>>n>>q;
for(int i=1,op,p;i<=q;i++){
cin>>op;
if(op==1) cin>>p,num[p]=cur;
else if(op==2) cin>>p>>s,ins(num[p],s);
else cin>>p,cur=num[p];
}
s.clear(),dfs(0);
reverse(s.begin(),s.end()),cout<<s<<"\n";
return 0;
}
[题解]AtCoder Beginner Contest 411(ABC411) A~D的更多相关文章
- 题解 AtCoder Beginner Contest 168
小兔的话 欢迎大家在评论区留言哦~ AtCoder Beginner Contest 168 A - ∴ (Therefore) B - ... (Triple Dots) C - : (Colon) ...
- [题解] Atcoder Beginner Contest ABC 270 G Ex 题解
点我看题 G - Sequence in mod P 稍微观察一下就会发现,进行x次操作后的结果是\(A^xS+(1+\cdots +A^{x-1})B\).如果没有右边那一坨关于B的东西,那我们要求 ...
- [题解] Atcoder Beginner Contest ABC 265 Ex No-capture Lance Game DP,二维FFT
题目 首先明确先手的棋子是往左走的,将其称为棋子1:后手的棋子是往右走的,将其称为棋子2. 如果有一些行满足1在2右边,也就是面对面,那其实就是一个nim,每一行都是一堆石子,数量是两个棋子之间的空格 ...
- AtCoder Beginner Contest 154 题解
人生第一场 AtCoder,纪念一下 话说年后的 AtCoder 比赛怎么这么少啊(大雾 AtCoder Beginner Contest 154 题解 A - Remaining Balls We ...
- AtCoder Beginner Contest 153 题解
目录 AtCoder Beginner Contest 153 题解 A - Serval vs Monster 题意 做法 程序 B - Common Raccoon vs Monster 题意 做 ...
- AtCoder Beginner Contest 177 题解
AtCoder Beginner Contest 177 题解 目录 AtCoder Beginner Contest 177 题解 A - Don't be late B - Substring C ...
- KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解
KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解 哦淦我已经菜到被ABC吊打了. A - Century 首先把当前年 ...
- AtCoder Beginner Contest 184 题解
AtCoder Beginner Contest 184 题解 目录 AtCoder Beginner Contest 184 题解 A - Determinant B - Quizzes C - S ...
- AtCoder Beginner Contest 173 题解
AtCoder Beginner Contest 173 题解 目录 AtCoder Beginner Contest 173 题解 A - Payment B - Judge Status Summ ...
- AtCoder Beginner Contest 172 题解
AtCoder Beginner Contest 172 题解 目录 AtCoder Beginner Contest 172 题解 A - Calc B - Minor Change C - Tsu ...
随机推荐
- 代码随想录第八天 | 字符串part02
还账还账,工作日欠下的账得今天补上,出来混,迟早要还的 151.翻转字符串里的单词 建议:这道题目基本把 刚刚做过的字符串操作 都覆盖了,不过就算知道解题思路,本题代码并不容易写,要多练一练. 题目链 ...
- Nginx配置HTTPS认证
概述 什么是https? 可以阅读这篇文章:https://www.cnblogs.com/huangSir-devops/p/18806406 在生产环境中,网站的访问一般都是使用https加密的, ...
- ChunJun 顺利晋级“2022 年中国开源创新大赛”决赛,并荣获“优秀开源项目/社区”奖项
日前,"2022年中国开源创新大赛"初赛晋级名单公布,易用.稳定.高效的批流统一的数据集成框架 ChunJun顺利晋级决赛,并荣获"2022年中国开源创新大赛优秀开源项目 ...
- 解决Dev c++6版本中文输出乱码问题
解决Dev c++6.3版本中文输出乱码问题 1.遇到的问题 使用cout输出中文时出现乱码问题 如下图所示: 2.解决方法 找到[工具]--[编译选项]--勾选[编译时加入以下命令]并添加如下代码: ...
- [CSP-S 2022] 星战
link 我为什么会在赛时想图论分块.... 什么神仙会想到哈希维护啊 首先手玩一下满足条件的图,只需要满足条件二:所有点出度为 1,条件 1 会自然满足,我们必然可以顺着其出边走下去. 对于操作 2 ...
- github action 与自动化部署
前言 github action 一直都是自动化部署的引领者,今天就介绍一下如何它部署咱们的网站和服务 服务器生成ssh密钥 通过终端(finalshell.xshell)登录到您的 linux 服务 ...
- ai 赋能
独立平台 chatGpt(推荐) 点击这里使用:https://chatgpt.com 排名第一,实至名归,是 OpenAI 公司开发的一种基于 GPT 模型的对话生成系统,主要用于人机交互,如聊天机 ...
- cordova封装一个vue应用
前言 目前webApp的实现方式有很多种,但是大致分为一下技术类型编译增强性:编译html成不同平台的源代码,将其运行在各个平台上,对应框架有 taro.uiniapp.reactNactiveweb ...
- wav 音频解析
简介 本人要在js前端解析wav文件所以要了解一下wav文件的格式还好不是特别难. 废话不多说开始解析 wav 文件 分析软件 dumphex vscode插件 分析标准文件 00000000: 52 ...
- Solon Flow v3.4.0 轻量级流程编排框架
Solon Flow 是一个轻量级流程编排框架(采用 yaml 或 json 偏平式编排格式) 支持无状态流程 可用于计算(或任务)的编排场景 可用于业务规则和决策处理型的编排场景 支持有状态流程 可 ...