首页 > 其他分享 >10 月 5 日模拟赛总结

10 月 5 日模拟赛总结

时间:2023-10-05 22:44:07浏览次数:24  
标签:总结 10 return string int res cin ## 模拟

# Before

[本文章在博客园同步发布]()

[Contest-Link](https://www.luogu.com.cn/contest/137474)

预期 $100 + 100 + 5 + 0 = 205$。

实际 $0+100(0)+5+0=105(5)$。(括号是重测前)

挂分 $200$。

rk21,直接垫底。~~菜死了~~

为什么会挂 $200$ 呢?且听下文分解。

# T1

## Description

求 $[l, r]$ 中 $2$ 的幂。

输入一行两个整数 $l$ 和 $r$。

**输出第一行一个整数** $\mathbf{cnt}$ **表示区间里** $\mathbf{2}$ **的幂的个数**,第二行输出这些数。

$0 \le l \le r \le 10^6$。

## Solution

直接开个标记数组标记不超过范围的 $2$ 次幂,这里可以直接用 `pow`,然后 $O(n)$ 扫一遍即可。

当然也可以 $O(\log n)$ 判是否在范围内就输出。

`Q:` 那你为什么保龄了?

`A:` 没有输出上文 `Description` 中加粗的输入中的 $\text{cnt}$。因为读题不仔细痛失 $\text{100pts}$。

考场想法:模拟。

考场寄因:如上。

时间复杂度 $O(n)$,空间复杂度 $O(n)$。

## Code

$\text{100pts:}$

```cpp
// 2023/10/5 PikachuQAQ

#include <iostream>
#include <cmath>

using namespace std;

int l, r, b[3000000], cnt;

int main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
cin >> l >> r;
for (int i = 0; i <= 20; i++) {
int x = pow(2, i);
b[x] = 1;
}
for (int i = l; i <= r; i++) {
cnt += b[i];
}
cout << cnt << '\n';
for (int i = l; i <= r; i++) {
if (b[i]) {
cout << i << ' ';
}
}

return 0;
}
```

$\text{0pts:}$

```cpp
// 2023/10/5 PikachuQAQ

#include <iostream>
#include <cmath>

using namespace std;

int l, r, b[3000000];

int main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
cin >> l >> r;
for (int i = 0; i <= 20; i++) {
int x = pow(2, i);
b[x] = 1;
}
for (int i = l; i <= r; i++) {
if (b[i]) {
cout << i << ' ';
}
}

return 0;
}
```

# T2

## Description

给定 $n$ 个字符串组成字典,然后进行 $q$ 次查询,每次给出一个字符串问字典中是否存在与其编辑距离为 $1$ 的串。

输入一行两个整数 $n$ 和 $q$,接下来 $n$ 行,$n$ 个字符串表示字典,接下来 $q$ 行,$q$ 个字符串,每给出一个字符串表示一次询问。

输出 $q$ 行,每行一个字符串,如果字典中有符合条件的字符串,输出这个字符串,如果有多个输出在字典中下标最小的那个。如果没有条件的字符串输出 **`No`**。

$1 \le n \le 50$,$1 \le q \le 50$,$1 \le len \le 20$,其中 $len$ 为任意一个单词的长度,单词仅由小写字母构成。

## Solution

开题 `20min` 首先写了个字典树,但发现~~字典树不会写了~~数据范围很小,所以可以直接暴力增删改,然后直接匹配即可。亦可以直接字典树,但比较麻烦。

`Q:` 那你为什么保龄了?

`A:` 没有输出上文 `Description` 中加粗的输出 `No`,我输出了 `NO`。因为读题不仔细又痛失 $\text{100pts}$。哈哈。

考场想法:暴力匹配。

考场寄因:如上。

时间复杂度 $O(qn^2\times len)$,带 $26$ 的常数,空间复杂度 $O(n)$。

## Code

$\text{100pts:}$

```cpp
// 2023/10/5 PikachuQAQ

#include <iostream>

using namespace std;

const int kMaxN = 57, INF = 100;

int n, q;
string a[kMaxN], b;

string substr(string s, int l) {
string res = "";
for (int i = 0; i < s.length(); i++) {
if (i ^ l) {
res += s[i];
}
}
return res;
}

string insert(string s, int x, char c) {
string res = "";
int r = s.length() + (x == s.length());
for (int i = 0; i < r; i++) {
if (i ^ x) {
res += s[i];
} else {
res += c;
if (i < s.length()) {
res += s[i];
}
}
}
return res;
}

int match(string a, string b) {
if (a == b) {
return 0;
}
string f = b;
int ln = b.length();
for (int i = 0; i <= ln; i++) {
for (int j = 'a'; j <= 'z'; j++) {
f = insert(f, i, j);
if (f == a) {
return 1;
}
f = b;
}
}
for (int i = 0; i < ln; i++) {
if (substr(f, i) == a) {
return 1;
}
}
for (int i = 0; i < ln; i++) {
for (int j = 'a'; j <= 'z'; j++) {
f[i] = j;
if (f == a) {
return 1;
}
}
f = b;
}
return -1;
}

int main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
cin >> n >> q;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
for (int i = 1, sol; i <= q; i++) {
cin >> b;
for (int j = 1; j <= n; j++) {
if (match(a[j], b) != -1) {
sol = 1;
cout << a[j] << '\n';
break;
}
}
if (sol == 0) {
cout << "No\n";
}
sol = 0;
}

return 0;
}
```

$\text{0pts:}$

```cpp
// 2023/10/5 PikachuQAQ

#include <iostream>

using namespace std;

const int kMaxN = 57, INF = 100;

int n, q;
string a[kMaxN], b;

string substr(string s, int l) {
string res = "";
for (int i = 0; i < s.length(); i++) {
if (i ^ l) {
res += s[i];
}
}
return res;
}

string insert(string s, int x, char c) {
string res = "";
int r = s.length() + (x == s.length());
for (int i = 0; i < r; i++) {
if (i ^ x) {
res += s[i];
} else {
res += c;
if (i < s.length()) {
res += s[i];
}
}
}
return res;
}

int match(string a, string b) {
if (a == b) {
return 0;
}
string f = b;
int ln = b.length();
for (int i = 0; i <= ln; i++) {
for (int j = 'a'; j <= 'z'; j++) {
f = insert(f, i, j);
if (f == a) {
return 1;
}
f = b;
}
}
for (int i = 0; i < ln; i++) {
if (substr(f, i) == a) {
return 1;
}
}
for (int i = 0; i < ln; i++) {
for (int j = 'a'; j <= 'z'; j++) {
f[i] = j;
if (f == a) {
return 1;
}
}
f = b;
}
return -1;
}

int main() {
freopen("dict.in", "r", stdin);
freopen("dict.out", "w", stdout);
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
cin >> n >> q;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
for (int i = 1, sol; i <= q; i++) {
cin >> b;
for (int j = 1; j <= n; j++) {
if (match(a[j], b) != -1) {
sol = 1;
cout << a[j] << '\n';
break;
}
}
if (sol == 0) {
cout << "No\n";
}
sol = 0;
}

return 0;
}
```

 

# T3

## Description

## Solution

## Code

# T4

## Description

## Solution

## Code

# Summary

**需要掌握的:仔细读题**。

标签:总结,10,return,string,int,res,cin,##,模拟
From: https://www.cnblogs.com/Accepted100pts/p/10-5-contest-ji-yin.html

相关文章

  • 牛客网 $CSP-S$ 模拟赛 $T1$
    给定正整数\(n\),计算\(n\)个元素的集合\(\{1,2,3,...,n\}\),所有非空子集和的乘积取模\(998244353\)后的结果\(n\leq200\)我的第一思路是考虑能不能通过\(i-1\)个元素的情况推出\(i\)个元素的情况,然后寄掉了,遂看题解\(dp\)问题不只是线性递推,这题的思路是用\(......
  • 前端代码格式化规范总结
    在日常开发过程中,经常会碰到代码格式化不一致的问题,还要就是js代码语法错误等没有及时发行改正,下面就介绍一下如何使用eslint、prettier、husky、lint-staged、commitizen来规范代码格式和提高代码质量的方法。目录准备工作代码检测代码格式化Git规范准备工作新建项......
  • 2023.10.5——每日总结
    学习所花时间(包括上课):0h代码量(行):0行博客量(篇):1篇今天,上午学习+休息,下午学习+休息;我了解到的知识点:1.Maven;2.SpringBoot;明日计划:学习+休息......
  • Flutter/Dart第10天:Dart高级特性Pattern模式的全部类型(共15种)
    Dart官方文档:https://dart.dev/language/pattern-types重要说明:本博客基于Dart官网文档,但并不是简单的对官网进行翻译,在覆盖核心功能情况下,我会根据个人研发经验,加入自己的一些扩展问题和场景验证。和操作符一样,模式运算也遵循一定的优先级规则,我们可以通过增加括号()让低优先级......
  • 【计算几何】(还未入门的)入门题做题总结
    开篇碎碎念马上就要正式迎接新的大一生活啦,学个计算几何助助兴bushi感觉还算不上入门,但是做着玩啦还不知不觉的完成了牛客的100AC做题小总结是按照洛谷用户分享题单:计算几何——从入门到跳楼https://www.luogu.com.cn/training/16408来逐步完成的,现在已经完成基础part啦。......
  • 74th 2023/10/5 模拟赛总结56
    T1看完题目,看到n<=9的限制,心头一紧一个词汇浮现于心:BruceForces暴力+记忆化,\(O(能过)\)但赛时并没有这样打,而是选择了往DP方面思考因为真的没想到能过然后DP呢,又不清楚该如何存一列的状态就匆匆暴力后离去考虑状压DP保留有用状态关键点:\(k=\min(k,n-k)\)可以参考\(C^k......
  • PAT 甲级:1002 A+B for Polynomials,测试点说明
     1002A+BforPolynomials25分题解:(类似于把两个多项式合并同类项:指数相同的项把系数相加),最后输出新多项式的项数、各项。 需要注意的测试点:1.输出的新项格式要与输入的一致:[项数][指数1][系数1][指数2][系数2]...;且指数递减2.指数是整型,系数是浮点型;且最后输出......
  • 9月最新Android中大厂面经总结
    个人介绍Android移动客户端,北京被裁员已经两三个月了,第一,二周投了两周简历没有一个面试,异常焦虑!第三周投递渐渐有了几个面试,基本都是很小的创业公司或者新兴行业的公司,面试完基本都没有后续,包括已经面过BP的的没有反馈。一个月后才开始有了几个像样公司的面试像美团、腾讯、京东、......
  • 73rd 2023/10/4 模拟赛总结55&广义串并联图
    这次的比赛成绩并不令人失望,因为早有准备很用心去打的一场比赛,T1T2一开始在看题目时感觉可以很容易切掉T1感觉太简单了,就再看了一遍又一遍T2动手打的时候,感觉T1没那么简单,就在想了一下,想出来了正解,但给的第三个大数据总过不了然后就先放了一下T1,去打T2,因为感觉T2很简单,而且思......
  • 2023-2024-1 20231415吴昕洋 《计算机基础与程序设计》第一周学习总结
    这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求是什么2023-2024-1-计算机基础与程序设计第一周作业这个作业的目标简单浏览《计算机概论》,提出疑问,并尝试解决问题作业正文https://i.cnblogs.com/posts/edit教材内容·学习总结  ......