【算法竞赛】AtCoder Beginner Contest 284 D, F
2023-02-19 12:28:46 时间
D
赛时并没有意识到枚举范围在三次根号n里,加上自己手写的二分sqrt挂了(丢人),一直没过去,后面把sqrt部分改好也就过了。
所以本题只需要枚举,然后,稍微分i是p还是q一下就行。
然后看了看jls和dls的提交sqrt的实现,偷了偷了。
// jls
LL Sqrt(LL n) {
LL v = sqrt(n);
while ((v + 1) * (v + 1) <= n) v++;
while (v * v > n) v--;
return v;
}
// dls
LL t = sqrt(n)+0.1;
F
字符串双哈希判一下就行。
赛时想到类似kmp的快速判断字符串相等,并没有实现。
然后,顺便就偷了dls双哈希的板子(自己稍微改了变量名什么的)
#pragma GCC optimize(2)
#include <bits/stdc++.h>
#define fi first
#define se second
#define mkp(x, y) make_pair((x), (y))
#define all(x) (x).begin(), (x).end()
using namespace std;
typedef long long LL;
typedef pair<int, int> PII;
typedef pair<int,int> hashv;
const LL mod1=1000000007;
const LL mod2=1000000009;
hashv operator + (hashv a,hashv b) {
int c1=a.fi+b.fi,c2=a.se+b.se;
if (c1>=mod1) c1-=mod1;
if (c2>=mod2) c2-=mod2;
return mkp(c1,c2);
}
hashv operator - (hashv a,hashv b) {
int c1=a.fi-b.fi,c2=a.se-b.se;
if (c1<0) c1+=mod1;
if (c2<0) c2+=mod2;
return mkp(c1,c2);
}
hashv operator * (hashv a,hashv b) {
return mkp(1ll*a.fi*b.fi%mod1,1ll*a.se*b.se%mod2);
}
const int N = 2e6+10;
int n;
char s[N];
hashv pw[N], Hx[N], rHx[N], base=mkp(13331,23333);
int main() {
// ios::sync_with_stdio(0);
// cin.tie(0);
// cout << fixed; // << setprecision(20); // double
// freopen("i.txt", "r", stdin);
// freopen("o.txt", "w", stdout);
scanf("%d", &n);
n *= 2;
scanf("%s", s+1);
pw[0]=mkp(1,1);
for (int i=1;i<=n;i++)
pw[i]=pw[i-1]*base, Hx[i] = Hx[i-1]*base+mkp(s[i],s[i]);
for(int i = n; i >= 1; i --)
rHx[i] = rHx[i+1]*base+mkp(s[i], s[i]);
for(int i = 0; i <= n/2; i ++) {
hashv hx1 = Hx[i]*pw[n/2-i]+(Hx[n]-Hx[n/2+i]*pw[n/2-i]);
hashv hx2 = rHx[i+1]-rHx[n/2+i+1]*pw[n/2];
if(hx1 == hx2) {
for(int j = n/2+i; j > i; j --)
printf("%c", s[j]);
puts("");
printf("%d\n", i);
return 0;
}
}
puts("-1");
return 0;
}
相关文章
- C++ 有奖竞猜
- CUDA优化冷知识24|函数和指令使用的选择和优化
- CUDA程序员们,节日快乐!
- 一个优秀的程序员应该养成哪些好的习惯?
- Cartken 使用 NVIDIA Jetson 推出机器人即交付服务
- 用Jetson NANO做个AI喂鸟器
- NVIDIA Jetson NANO开发套件12月份正式开卖
- 为什么时不时会看到「珍惜生命,远离 C++」?
- 是时候,把那些压箱底的Jetson NANO 3D打印外壳拿出来了
- Mathematica安装教程详解【附安装包】
- 在NVIDIA Jetson上开发要知道的知识点
- 更新太快,CUDA 12.0工具包正式发布啦
- 在 Google Colab 上试验 NVIDIA TAO 工具包和预训练模型
- NVIDIA 发布最新版TAO Toolkit 4.0,不需要AI专业知识也可以生成 AI 模型
- 开发者们好评如潮,NVIDIA Jetson AGX Orin 是怎么做到的?
- 【架构设计】资深 CIO Neal Sample:所有架构都是错误的
- 一篇文章回答你关于NVIDIA DLA的所有疑问
- 掌握这几个NVIDIA Jetson 开发小技巧,领先80%的开发者
- CUDA 开发工具的新功能
- 【应用分类】技术应用概述