AtCoder ABC398 赛后总结

呃呃呃,这个极其菜的人又来总结了。

A - Doors in the Center

嗯,似乎英文水平有待提高,竟然没看懂。

翻译以后,嗯,有点意思。

哦,秒了。

#include<bits/stdc++.h>
using namespace std;
int main(){int n;cin>>n;for(int i=1;i<=(n+1)/2-1;i++){cout<<"-";}if(n%2==0)cout<<"==";else cout<<"=";for(int i=1;i<=(n+1)/2-1;i++){cout<<"-";}puts("");return 0;
}

B - Full House 3

咦,又没看懂英文,难道是英语水平下降了?

9分26秒,A了。

感觉进度有些慢。

#include<bits/stdc++.h>
using namespace std;
int n=7;
int a,f[15],s,e;
int main(){for(int i=1;i<=n;i++){cin>>a;++f[a];}for(int i=1;i<=13;i++){if(f[i]>=3)++s;else if(f[i]>=2)++e;}if(s>=2){cout<<"Yes\n";}else if(s==1){if(e>=1){cout<<"Yes\n";}else cout<<"No\n";}else{cout<<"No\n";}return 0;
}

C - Uniqueness

懒得说了。

15:24,A了。

#include<bits/stdc++.h>
using namespace std;
const int N=3e5+5;
int n;
struct node{int x;int y;
}a[N];
bool cmp(node q,node p){return q.x>p.x;
}
int main(){cin>>n;for(int i=1;i<=n;i++){cin>>a[i].x;a[i].y=i;}sort(a+1,a+1+n,cmp);for(int i=1;i<=n;i++){if(a[i-1].x!=a[i].x&&a[i+1].x!=a[i].x){cout<<a[i].y<<"\n";return 0;}}cout<<"-1\n";return 0;
}

D - Bonfire

第一眼直接暴力。

但时间似乎不对。

想到人动烟不动。

感到存不下二维。

想到用pair存坐标。

写着想到 map 没法套 pair(错的。

了结。

赛时没 A。

哭。

赛后看 tx 用 set 套 pair,之后检查 set 的长度是否发生改变。

#include<bits/stdc++.h>
using namespace std;
set<pair<int,int> > se;
int n;
int x,y,r,c;
string s;
int main(){cin>>n>>r>>c>>s;se.insert({0,0});s=" "+s;for(int i=1;i<=n;i++){if(s[i]=='N'){r++;x++;}if(s[i]=='S'){r--;x--;}if(s[i]=='E'){c--;y--;}if(s[i]=='W'){c++;y++;}se.insert({x,y});int ss=se.size();se.insert({r,c});if(se.size()==ss) cout<<'1';else{cout<<'0';se.erase({r,c});}}return 0;
}

3.29 日,了解 map 可以套 pair(大哭。

#include<iostream>
#include<map>
using namespace std;
int n,r,c;
string s;
map<pair<int,int>,int>mp;
int main(){cin>>n>>r>>c>>s;mp[make_pair(0,0)]=1;int x1=r,x2=0,y1=c,y2=0;for(int i=0;i<n;i++){if(s[i]=='N'){++x1,++x2;}else if(s[i]=='S'){--x1,--x2;}else if(s[i]=='W'){++y1,++y2;}else{--y1,--y2;}mp[make_pair(x2,y2)]=1;if(mp[make_pair(x1,y1)]==1){cout<<1;}else{cout<<"0";}}cout<<"\n";return 0;
}

E - Tree Game

交互题,没了解过,不会。

看了看题面,此题一共花了 10min(有点长)。

F - ABCBA

看到这个题,时间只有寥寥无几的三十分钟。

感觉是 KMP。

打了打,听 tx 说是马拉车。

感觉很有道理,上网现学了一下,并和了一个代码。

用 manacher 维护最长后缀回文子串。

打完了。

一直出错。

没调出来。

赛后调出来了。

愿因:i--写成了i++(大大哭。

#include <iostream>
#include <vector>
#include <algorithm>using namespace std;string longestPalindromeSuffix(string s) {// 预处理字符串,插入特殊字符以处理偶数长度的回文串string t = "#";for (char c : s) {t += c;t += '#';}int n = t.size();vector<int> p(n, 0);  // p[i] 表示以 t[i] 为中心的最长回文半径int center = 0, right = 0;  // center 和 right 分别表示当前最右回文串的中心和右边界int maxLen = 0;  // 最长回文后缀的长度int maxCenter = 0;  // 最长回文后缀的中心for (int i = 0; i < n; ++i) {if (i < right) {p[i] = min(right - i, p[2 * center - i]);  // 利用对称性}// 尝试扩展回文串while (i - p[i] - 1 >= 0 && i + p[i] + 1 < n && t[i - p[i] - 1] == t[i + p[i] + 1]) {p[i]++;}// 更新最右回文串的边界if (i + p[i] > right) {center = i;right = i + p[i];}// 如果当前回文串是后缀,并且长度大于之前的最大长度if (i + p[i] == n - 1 && p[i] > maxLen) {maxLen = p[i];maxCenter = i;}}// 提取最长回文后缀string result;for (int i = maxCenter - maxLen; i <= maxCenter + maxLen; ++i) {if (t[i] != '#') {result += t[i];}}return result;
}string s;int main() {cin >> s;cout<<s;string result = longestPalindromeSuffix(s);int t=result.size();// cout<<t<<" "<<s.size()<<"\n";for(int i=s.size()-t-1;i>=0;i--)cout<<s[i];cout<<"\n";return 0;
}

赛后听说也可以写 KMP。

于是又写了一个 KMP 代码。

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+5;
int nxt[N<<1];
string s,t;
signed main() {ios_base :: sync_with_stdio(NULL);cin.tie(nullptr);cout.tie(nullptr);cin>>s;t=s;reverse(t.begin(), t.end());int n = s.size(), m = t.size();string S = t + "?" + s;for(int i = 1, j = 0 ; i < (int)(S.size()) ; ++ i) {while(j && S[i] != S[j]) j = nxt[j - 1];if(S[i] == S[j]) {nxt[i] = ++ j;if(nxt[i] == m) j = nxt[j - 1]; }}for(int i = 0 ; i < n ; ++ i)cout << s[i];for(int i = nxt[n + m] ; i < m ; ++ i)cout << t[i];return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VGG

VGG 网络LRN(Local Response Normalization)来自于AlexNet现在已经不怎么使用,因为经过很多实验并没有较大的作用 conv的stride为1,padding为1 maxpool的size为2,stride为2感受野叠加 论文中一个比较重要的使用就是感受野的叠加 感受野(Receptive Field)是卷积神经网络中一…

日语声调

日语声调的记忆 方法1方法2方法3日语声调的标记方法 方法1:划线规律1:第1个音 和 第2个音不是同音 规律2:出现降音就不会升回去 规律3:“高-低”在第几个音出现,就是几型 方法2:数字

荧光灯下的“绚烂”

“绚烂”这一可以令人愉悦的词汇,在航空发动机研制过程中,却给人另外的意味。荧光检测荧光检测 荧光检测是一种在零件表面进行的无损检测,可用于检测航空发动机零部件因疲劳、撞击、机加、淬火、锻造、铸造过载等因素造成的各种裂纹、接缝等表面缺陷。 当荧光检测应用在航…

课堂里的人工智能,或者说,狂野西部闯进了教育界

诺米科托博士(Normi Coto, PhD)配图来自 Unsplash 的 Element5 Digital3 月 15 日星期六,我参加了一场名为“人文学科中的 AI”的职业发展工作坊。会场人满为患,坐满了来自弗吉尼亚州中学和高中的英语和历史老师。来自弗吉尼亚大学和朗伍德大学的教授主持了这次工作坊,主题…

LED数码管显示独立按键次数

前言 目标 2个独立按键,按下K1,数码管显示的数字加1 按下K2,数码管显示的数字减1 效果 https://www.bilibili.com/video/BV1aXo9YxEhY原理独立按键,用于控制数字的加减把完整的数字,分成若干数位显示构造一个函数 show_digit(pos,digit) , 可以在指定位置(0<=pos<=7…

Bitcoin部署到openEuler RISC-V

Bitcoin项目源码是用C++写的,我对C++以及它的编译工具又比较熟悉,这次我尝试了在openEuler RISC-V 24.09上面部署Bitcoin。网上编译Bitcoin源码的很多都是以前旧版的,旧版编译是用automake之类的工具,但是在最新版只需要用cmake就行,两者的部署方式不相同,我分别记录一下…

NVIDIA安装程序无法继续

原因 在更新驱动时,手贱,下驱动一半关闭了下载流程。导致下载失败,而且进入不了Geforece 解决方法:官网下载最新版驱动,再尝试。 如果不行,检查Windows更新,更新至最新版本 重启后如果不可行,再关闭杀毒软件,关闭防火墙,再尝试,重启再尝试。 如果还是不行,使用卸载…

锚定碳中和,三重角色重构,运营商的第四次跃迁

「 作为能源消耗大户,运营商在面对碳中和的级终命题时需要转变发展思路、转变角色定位。」5G+AI倒逼运营商基础设施建设大规模提速,运营商要更好的生存发展必须要降本提效,碳中和的大目标则要求运营商在快速发展的同时还要破解能源消耗指数级增长的魔咒——这似乎是一个不可…

SpringBoot整合RabbitMQ--Fanout模式

使用springBoot整合rabbitMQ需要事先导入相关依赖:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency><dependency><groupId>org.springframework.bo…

查看网站支持的tls版本

f12 打开chrome 开发面板本文由 trykle 发布联系方式:QQ 294986636本文地址:https://www.cnblogs.com/trykle/p/18798939

解析PromQL并修改添加Label

最近做的项目中用到了Prometheus做预警服务,其中Prometheus使用promql语言来查询。项目中用户通过UI或者自己手动输入PromQL时候是缺少一些系统参数的,所以需要在用户输入完成以后同步到Prometheus时候将这部分缺失的信息给添加回去,这里就需要修改用户写的PromQL了。 实现思…

学习安装配置vue

1.先将nodejs下载2.在我们的安装目录下,创建名为node_cache和node_global的两个文件夹 3.打开cmd窗口,执行如下命令,将npm的全局模块目录和缓存目录配置到刚才创建的那两个目录。 npm config set prefix “D:\soft2024.7.6\nodejs\node_global” npm config set cache “D:\…