首页 > 其他分享 >2024/10/17 模拟赛总结

2024/10/17 模拟赛总结

时间:2024-10-17 17:13:34浏览次数:9  
标签:10 bf 17 int LL kMaxN 2024 ret hd

\(100+50+0+35=185\),呃呃呃,终于吃上 LRX 了

#A. 语言

考虑名词性词组的性质,由于它可以由任意名词,形容词和名词性词组拼接起来,那么连续的名词,形容词或交替出现都是可行的

但是如果最后一个是形容词不可行,不然它就无法修饰其他词语了

于是可以枚举那一个单独的动词,判断前面和后面知否可以全部是名词/形容词,再判断最后一个单词是不是名词就可以了

// BLuemoon_
#include <bits/stdc++.h>

using namespace std;

const int kMaxN = 1e5 + 5, kL = 26 + 5;

int t, n, a[kL], l, r;
bool ans;
string s;

void pr(bool pr) {
  cout << (pr ? "Yes" : "No") << '\n';
}

int main() {
  freopen("language.in", "r", stdin), freopen("language.out", "w", stdout);
  for (cin >> t; t; t--, ans = 0) {
    for (int i = 0; i < 26; i++) {
      cin >> a[i];
    }
    cin >> s, n = s.size(), s = ' ' + s, l = n, r = 1;
    if (!(a[s[n] - 'a'] & 2) || n < 3) {
      pr(0);
      continue;
    }
    for (int i = 1; i <= n; i++) {
      if (a[s[i] - 'a'] == 4) {
        l = i - 1;
        break;
      }
    }
    for (int i = n; i; i--) {
      if (a[s[i] - 'a'] == 4) {
        r = i + 1;
        break;
      }
    }
    for (int i = 2; i < n; i++) {
      if ((a[s[i] - 'a'] & 4) && (a[s[i - 1] - 'a'] & 2)) {
        if (l >= i && r <= i) {
          ans = 1;
          break;
        }
      }
    }
    pr(ans);
  }
  return 0;
}

#B. 色球

考场上写不出来入门组 T3 了……

几乎是双向链表板题,对于每一个栈开一个双向链表,前两个操作可以直接均摊 \(O(1)\) 暴力做,复杂度瓶颈在操作三

对于两个双向链表,可以直接将两个栈顶接起来,然后清空一个栈,就可以 \(O(1)\) 解决操作三了

// BLuemoon_
#include <bits/stdc++.h>

using namespace std;
using LL = long long;

const int kMaxN = 5e5 + 5;

struct P {
  LL p, e, l, r;
};

int n, m, y, z, tot, hd[kMaxN], tl[kMaxN];
LL x, c[kMaxN];
P f[kMaxN];
string op;

int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  freopen("ball.in", "r", stdin), freopen("ball.out", "w", stdout);
  for (cin >> n >> m; m; m--) {
    cin >> op >> x >> y;
    if (op == "push") {
      cin >> z, c[z] += x;
      f[++tot] = (P){y, x, hd[z], 0};
      !hd[z] ? tl[z] = tot : (f[hd[z]].l ? f[hd[z]].r = tot : f[hd[z]].l = tot);
      hd[z] = tot;
    } else if (op == "pop") {c[y] -= x;
      for (int L; f[hd[y]].e < x; hd[y] = L) {
        x -= f[hd[y]].e, L = f[hd[y]].l | f[hd[y]].r;
        L && (f[L].l == hd[y] ? f[L].l = 0 : f[L].r = 0);
      }
      f[hd[y]].e -= x;
      cout << f[hd[y]].p << '\n';
    } else {
      c[y] += c[x], c[x] = 0;
      if (hd[x]) {(
        !hd[y] ? tl[y] = hd[x] : (f[hd[y]].l ? f[hd[y]].r = hd[x] : f[hd[y]].l = hd[x]), (f[hd[x]].l ? f[hd[x]].r = hd[y] : f[hd[x]].l = hd[y])); 
        hd[y] = tl[x], hd[x] = tl[x] = 0;
      }
    }
  }
  return 0;
}

#C. 斐波

人机线段树优化区间矩阵乘法,谁爱写谁写

#D. 偶数

若当前“偶数”是 \(\bf{ss}\),那么其拓展出的新“偶数”一定形如 \(\bf{svsv}\),其中 \(\bf v\) 是 \(\bf s\) 的前缀

为了使新的“偶数”更短,\(\bf v\) 要尽量短,那么这就是 \(\bf s\) 的周期

那么如果 \(\text{sz}(\textbf{v})\) 是 \(\text{sz}(\textbf{s})\) 的因数,最后的字符串会形如 \(\bf svvvv\dots\)

否则 \(\bf sv\) 将会变成 \(\bf svs\) 并一直循环下去,即 \(\textbf{s}_i=\textbf{s}_{i-1}\textbf{s}_{i-2}\)

于是我们可以维护每一个 \(\textbf{s}\) 的长度,用分治的思想求出当前的值即可

// BLuemoon_
#include <bits/stdc++.h>

using namespace std;
using LL = long long;

const int kMaxN = 1e6 + 5;
const LL kP = 998244353;

int t;
LL n, m, q, sz, l, r, h[kMaxN], L[kMaxN], F[kMaxN], mx;
vector<int> br;
string s;

vector<int> Border(string c) {
  int sz = c.size();
  vector<int> ret;
  ret.push_back(0);
  for (int i = 1, k; i < sz; i++) {
    for (k = ret[i - 1]; k && c[i] != c[k]; k = ret[k - 1]) {
    }
    ret.push_back(k + (c[i] == c[k]));
  }
  return ret;
}
LL P(LL x, LL y, LL ret = 1) {
  for (; y; (y & 1) && ((ret *= x) %= kP), (x *= x) %= kP, y >>= 1) {
  }
  return ret;
}
LL Calc(LL m, LL ret = 0, LL cnt = 0) {
  for (int i = mx; ~i; i--) {
    if (cnt + L[i] <= m) {
      ((ret *= P(10, L[i])) += F[i]) %= kP, cnt += L[i];
    }
  }
  ((ret *= P(10, m - cnt)) += h[m - cnt]) %= kP;
  return ret;
}

int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  freopen("even.in", "r", stdin), freopen("even.out", "w", stdout);
  for (cin >> t; t; t--) {
    cin >> s, n = s.size(), n >>= 1, br = Border(s);
    for (int i = 1; i <= n; i++) {
      h[i] = (h[i - 1] * 10 + (s[i - 1] - '0')) % kP;
    }
    cin >> m >> q, L[0] = n - br[n - 1], L[1] = n, F[0] = h[L[0]], F[1] = h[n];
    for (int i = 2; i < kMaxN; i++) {
      L[i] = L[i - 1] + L[i - 2], F[i] = (F[i - 1] * P(10, L[i - 2]) % kP) + F[i - 2] % kP;
      if (L[i] >= m) {
        mx = i;
        break;
      }
    }
    for (; q; q--) {
      cin >> l >> r;
      cout << (((Calc(r) - Calc(l - 1) * P(10, r - l + 1) % kP) % kP) + kP) % kP << '\n';
    }
  }
  return 0;
}

标签:10,bf,17,int,LL,kMaxN,2024,ret,hd
From: https://www.cnblogs.com/bluemoon-blog/p/18472521

相关文章

  • 【2024华为OD-E卷-100分-内存资源分配】(题目+思路+Java&C++&Python解析+在线测试)
    在线评测链接题目描述有一个简易内存池,内存按照大小粒度分类,每个粒度有若干个可用内存资源,用户会进行一系列内存申请,需要按需分配内存池中的资源返回申请结果成功失败列表。分配规则如下:分配的内存要大于等于内存的申请量,存在满足需求的内存就必须分配,优先分配粒度小的......
  • 多校A层冲刺NOIP2024模拟赛08
    多校A层冲刺NOIP2024模拟赛08\(T1\)A.传送(teleport)\(0pts\)弱化版:[ABC065D]Built?|luoguP8074[COCI2009-2010#7]SVEMIR|“迎新春,过大年”多校程序设计竞赛H二次元世界之寻找珂朵莉先不管后面加入的\(m\)条边。对于两点间的路径\(i\toj\),经过中......
  • Oracle 19c OCP 认证考试 083 题库(第3题)- 2024年修正版
    【优技教育】Oracle19cOCP083题库(Q3题)-2024年修正版考试科目:1Z0-083考试题量:85道(线下)通过分数:57%以上考试时间:150min(线下)本文为(CUUG原创)整理并解析,转发请注明出处,禁止抄袭及未经注明出处的转载。原文地址:http://www.cuug.com.cn/ocp/083kaoshitiku/38540354314.ht......
  • 2024/10/17日 日志 --》关于MySQL中的 约束、多表查询的初步学习笔记与整理
    今天推进了关于约束以及多表查询的内容,下一步是事务以及关于连接数据库JDBC的学习。点击查看代码----约束--1.概念:--·约束是作用于列上的规则用于限制加入表的数据--·约束的存在保证了数据库中数据的正确性、有效性和完整性--2.约束的分类--非空约束NOTNULL:......
  • Next.js 深度教程:服务端渲染、静态生成到增量静态再生 | 2024最新版
    优化字体和图像书接上回,我们学习了如何设计Next.js应用程序,让我们继续优化主页和添加自定义字体、图像。在网站设计中,字体扮演着关键角色,然而,若需获取并加载字体文件,项目中引入自定义字体可能对性能产生影响。Google采用累计布局偏移(CLS)作为评估网站性能和用户体验的指标。对......
  • Next.js 与 Node.js 全栈应用开发:API设计、数据库连接、身份验证 | 2024版
    书接上回,到目前为止,您的应用程序只有一个主页。让我们学习如何使用布局和页面创建更多路线。在本章之中我们需要讨论:dashboard使用文件系统路由创建路由。了解创建新路线段时文件夹和文件的作用。创建可以在多个仪表板页面之间共享的嵌套布局。了解什么是共置、部分渲染和根......
  • 【亲测】Adobe Illustrator(AI2024)软件功能与系统要求
    目录一、发展历史1.1早期开发1.2成长与竞争1.3行业标准化二、功能介绍2.1精确的绘图工具2.2高级文字处理2.3丰富的颜色和效果三、系统要求3.1操作系统3.2硬件要求一、发展历史1.1早期开发AdobeIllustrator最初是在1986年为苹果公司的麦金塔电脑设计......
  • 关于 KubeSphere IDOR 安全漏洞 CVE-2024-46528 的声明及解决方案
    近期,有第三方平台的安全技术人员发现了在KubeSphere开源版3.4.1及4.1.1上存在不安全的直接对象引用(IDOR)的漏洞,该漏洞允许低权限的通过认证的攻击者在没有适当授权检查的情况下访问敏感资源。我们及时与对方进行了联系,并帮助对方解决了此问题,CVE漏洞的详细信息及问题处理过......
  • 【进阶OpenCV】 (17)-- Dlib库 --实现人脸检测
    文章目录Dlib库一、Dlib库安装二、实现人脸检测1.生成人脸检测器2.检测人脸3.显示人脸总结Dlib库Dlib提供了丰富的图像处理和计算机视觉工具,如面部特征检测、物体检测、图像变换等,这些工具使得开发者能够轻松地进行各种图像处理任务。一、Dlib库安装pipinst......
  • 2024.10.08星期二
    今天配置了vue环境,学习了基础的vue语法,在这个过程中遇到了如下问题1.安装完node.js和vuecli后,创建项目的时候出现了问题我无法通过yarnserve启动项目,但由于默认下载设置的是yarn,导致也无法使用npmrunserve启动在这里卡了很久,解决办法是在C盘的user目录下有一个文件,其实后面......