多好的上分机会啊,要是换个时间(指改在 NOI 之后)我说不定就能上 2500 了(做白日梦 ing)

A

签到题不多说,显然只有末尾为 \(9\) 的数是 interesting 的,因此答案就是 \(\lfloor\dfrac{n+1}{10}\rfloor\)

B

暴力枚举两个断点然后线性地检查一遍,时间复杂度 \(n^3\)

不知道为什么这种题会有人 FST

C

注意到数据范围很小,因此考虑 \(2^{10}\) 枚举所有状态,然后暴力枚举一下取个 \(\min\) 即可。

D

Weak pretest!!!111/fn/fn

考虑贪心,假设当前 \(s\) 扫到字符 \(s_i\),目前匹配了 \(t\) 的前 \(j\) 位,那么我们暴力跳到下一个等于 \(t_{j+1}\) 且奇偶性与 \(i\) 不同的位置 \(k\) 即可,预处理 \(nxt_{i,j}\) 表示 \(s_i\) 下一个字符 \(j\) 的位置即可实现线性求解。

时间复杂度 \(\mathcal O(26n)\)

注意事项:注意特判最后一个字符的位置与 \(n\) 的奇偶性是否相同,否则会 WA 19。

顺便给出一组 hack 数据:

1
aa
a

要是在现场我就 FST 了(

E

这道题还算有点意思。

首先按照这题的结论(大雾,其实这个结论应该是人尽皆知了吧),对于某个 \(k\) 而言,对于每个 \(p_i\),如果 \(i\le k\),连边 \(p_i\to n-k+i\),否则连边 \(p_i\to i-k\),那么将原排列进行 \(k\) cyclic shift 后变成给定的排列所需的最少步数就是 \(n\) 减去得到的图的置换环的个数。

直接做显然不可行,不过注意到有个条件 \(m\le\dfrac{n}{3}\),这也就意味着在合法的连边方案中至少有 \(\dfrac{2n}{3}\) 个置换环,根据抽屉原理,大小为 \(1\) 的置换环至少有 \(\dfrac{n}{3}\) 个,因此我们考虑对于每个 \(k\),计算在对原排列进行 \(k\) cyclic shift 后得到的排列与给定排列连成的图中有多少个大小为 \(1\) 的置换环,然后对该数目 \(\ge\dfrac{n}{3}\) 的 \(k\) 暴力检验即可,显然检验的 \(k\) 的数目是 \(\mathcal O(1)\) 级别的,因此总复杂度也是线性的。

tbh 我感觉这题比 F 难,可能是因为我做这种人类智慧题不太行罢。。。

F

简单题,现场很快就想出来了可惜由于要睡觉没时间写了

首先咱们肯定要对于每个新加进来的 \(a_i\) 计算它与前面所有 \(a_j\) 取模得到的余数的和呗。那咱肯定就要分为两部分,\(\sum\limits_{j=1}^{i-1}a_i\bmod a_j\) 和 \(\sum\limits_{j=1}^{i-1}a_j\bmod a_i\) 分别求和。首先考虑第一部分,注意到 \(a_i\bmod a_j=a_i-\lfloor\dfrac{a_i}{a_j}\rfloor·a_j\),因此 \(\sum\limits_{j=1}^{i-1}a_i\bmod a_j=\sum\limits_{j=1}^{i-1}a_i-\lfloor\dfrac{a_i}{a_j}\rfloor·a_j\),我们建一个树状数组 \(T_1\),考虑在前面每加入一个 \(a_j\),就在 \(T_1\) 上 \(a_j,2a_j,3a_j,\cdots\) 的位置上 \(+a_j\),那么 \(T_1\) 中 \([1,a_i]\) 部分的前缀和就是 \(\sum\limits_{j=1}^{i-1}\lfloor\dfrac{a_i}{a_j}\rfloor·a_j\),然后就有手就行了。其次考虑第二部分,我们考虑枚举 \(a_i\) 的倍数 \(ka_i\),那么对于 \(a_j\in[ka_i,(k+1)a_i),\lfloor\dfrac{a_j}{a_i}\rfloor=k\),因此我们另件两个树状数组 \(T_2,T_3\) 维护区间和和区间内数的个数,然后每次在树状数组中查询满足 \(a_j\in[ka_i,(k+1)a_i)\) 的 \(a_j\) 的和 \(s\) 及 \(a_j\) 的个数 \(c\),答案加上 \(s-ck\) 即可。

时间复杂度 \(n\log^2n\),但由于常数小+TL 大可以通过,实测 4s 时限不到 1s 就跑过去了。。。

G

一道挺有意思的题,感觉这场最有含金量的题是 E 和 G(

首先考虑一个最 trivial 的情况,怎样判断两个点是否在一个连通块中。考虑这样一个过程:将所有 \(a_i\) 分解质因数,然后将所有质因子看作一个点,那么对于每个 \(a_i\) 将 \(a_i\) 所有质因子合并成一个连通块,检验时只需检验两点是否在一个连通块中即可。

接下来考虑原问题,注意到一个性质,就是最多两次操作就可以搞定:如果两个数都是偶数那直接不互质在一个连通块中,如果两个数一奇一偶那最多只需把奇数扩展一下就能连通,如果两个数都是奇数那最多只需把两个奇数分别扩展一下就能连通。因此我们只需再检验一次操作能否搞定,如果不能答案就是 \(2\)。怎么检验呢?我们考虑每个连通块进行一次扩展能与哪些连通块连通,我们枚举每个数 \(a_i\),那么显然扩展 \(a_i\) 后会使 \(a_i\) 与 \(a_i+1\) 所有质因子合并,用个 set 维护一下即可,复杂度 \(\omega^2(n)n\log n\),然鹅比 wjz \(n\log n+49n\) 跑得还快。。。((

H

降智了没想出来/ll,然鹅看了题解后感觉不是太难(

考虑对 \(a_i\) 建立一个 \(01\)-trie,与普通的 \(01\)-trie 不同的是,该 \(01\)-trie 与线段树有着类似的结构,每个节点表示一个区间 \([L,R]\) 并维护以下四个值:

  • 在区间 \([L,R]\) 中出现的最小的数 \(-L\)
  • 在区间 \([L,R]\) 中出现的最大的数 \(-L\)
  • 区间 \([L,R]\) 中最接近的两个数的差
  • 区间 \([L,R]\) 的长度 \(R-L+1\)

那么对于某个 \(k\) 而言,其答案就是对于所有 \(b\) 满足 \(k\) 的 \(2^b\) 位为 \(1\),将 \(01\)-trie 自下而上的第 \(b+1\) 层所有节点的左右儿子交换后,根节点的答案。直接换显然工作量太大,稳稳地 T 掉。不过注意到本题的 01-trie 与线段树一样有一个性质,那就是所有节点表示的区间的长度之和是 \(2^kk\) 级别的,因此考虑对所有节点开一个长度 \(R-L+1\) 的数组,第 \(x\) 位表示将该区间中的所有数异或 \(x\) 后该节点上的信息,对于每一位显然可以 \(\mathcal O(1)\) 上推信息,因此总复杂度 \(2^kk\)。

const int MAXN=1<<20;
const int INF=0x3f3f3f3f;
int n,k,cnt[MAXN+5];
struct node{
int fst,lst,len,ans;
node(){fst=lst=len=ans=0;}
node(int x){
len=1;ans=INF;if(x) fst=lst=0;
else fst=INF,lst=-INF;
}
node operator +(const node &rhs){
node res;
res.len=len+rhs.len;
res.fst=min(fst,rhs.fst+len);
res.lst=max(lst,rhs.lst+len);
res.ans=min(min(ans,rhs.ans),rhs.fst+len-lst);
return res;
}
};
vector<node> s[MAXN+5];
void build(int k,int l,int r){
s[k].resize(r-l+1);if(l==r) return s[k][0]=node(cnt[l]),void();
int mid=l+r>>1;build(k<<1,l,mid);build(k<<1|1,mid+1,r);
for(int i=0;i<mid-l+1;i++){
s[k][i]=s[k<<1][i]+s[k<<1|1][i];
s[k][i+(mid-l+1)]=s[k<<1|1][i]+s[k<<1][i];
}
}
int main(){
scanf("%d%d",&n,&k);
for(int i=1,x;i<=n;i++) scanf("%d",&x),cnt[x]++;build(1,0,(1<<k)-1);
for(int i=0;i<(1<<k);i++) printf("%d%c",s[1][i].ans," \n"[i==(1<<k)-1]);
return 0;
}

Harbour.Space Scholarship Contest 2021-2022 题解的更多相关文章

  1. Harbour.Space Scholarship Contest 2021-2022 (Div. 1 + Div. 2) Editorial题解

    A 略,发现只有当末尾为9时才满足条件.. B 简单模拟,注意数组大小!!! C 简单模拟. D 比较暴力的一个做法就是每次找一个开始匹配的起始点,然后每次不同时向后跳2就行了. 注意这里最后还要判断 ...

  2. CF1553X Harbour.Space Scholarship Contest 2021-2022 (Div. 1 + Div. 2)

    掉大分 E 对于一个序列,把它排回去的最小次数是 $\sum置换环大小-1=错位个数-置换环个数$ 注意到m小于等于n/3.那么最多修正2m个错位.正确位置的个数必须大于等于n/3才可能在m次内修正. ...

  3. KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解

    KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解 哦淦我已经菜到被ABC吊打了. A - Century 首先把当前年 ...

  4. 2018 ACM-ICPC Asia Beijing Regional Contest (部分题解)

    摘要 本文主要给出了2018 ACM-ICPC Asia Beijing Regional Contest的部分题解,意即熟悉区域赛题型,保持比赛感觉. Jin Yong’s Wukong Ranki ...

  5. 2014-2015 ACM-ICPC, Asia Xian Regional Contest(部分题解)

    摘要 本文主要给出了2014-2015 ACM-ICPC, Asia Xian Regional Contest的部分题解,说明了每题的题意.解题思路和代码实现,意即熟悉区域赛比赛题型. Built ...

  6. Comet OJ - Contest #2 简要题解

    Comet OJ - Contest #2 简要题解 cometoj A 模拟,复杂度是对数级的. code B 易知\(p\in[l,r]\),且最终的利润关于\(p\)的表达式为\(\frac{( ...

  7. Comet OJ - Contest #2简要题解

    Comet OJ - Contest #2简要题解 前言: 我没有小裙子,我太菜了. A 因自过去而至的残响起舞 https://www.cometoj.com/contest/37/problem/ ...

  8. 300iq Contest 1 简要题解

    300iq Contest 1 简要题解 咕咕咕 codeforces A. Angle Beats description 有一张\(n\times m\)的方阵,每个位置上标有*,+,.中的一种. ...

  9. M-SOLUTIONS Programming Contest 2021(AtCoder Beginner Contest 232) 题解

    目录 G - Modulo Shortest Path H - King's Tour 因为偷懒就只写G和H的题解了. G - Modulo Shortest Path 首先可以观察到对于一条从点\( ...

随机推荐

  1. dubbo注册中心占位符无法解析问题(二)

    dubbo注册中心占位符无法解析问题 前面分析了dubbo注册中心占位符无法解析的问题. 并给出了2种解决办法: 降低mybatis-spring的版本至2.0.1及以下 自定义MapperScann ...

  2. Java内存分析--栈--堆

    Java内存分析--栈--堆 JVM的内存分析: 1.栈内存 1.连续的存储空间,遵循后进先出的原则. 2.每个线程包含一个栈区,栈区只保存基础数据类型的对象和自定义对象的引用. 3.每个栈中的数据都 ...

  3. 《手把手教你》系列技巧篇(三十三)-java+ selenium自动化测试-单选和多选按钮操作-上篇(详解教程)

    1.简介 在实际自动化测试过程中,我们同样也避免不了会遇到单选和多选的测试,特别是调查问卷或者是答题系统中会经常碰到.因此宏哥在这里直接分享和介绍一下,希望小伙伴或者童鞋们在以后工作中遇到可以有所帮助 ...

  4. 【UE4 设计模式】策略模式 Strategy Pattern

    概述 描述 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法的变化不会影响到使用算法的客户. 套路 Context(环境类) 负责使用算法策略,其中维持了一 ...

  5. elasticsearch的dsl查询

    测试es的dsl查询,准备数据,在插入数据的时候,如果index.type.mapping都没有,es会自动创建 一.数据的准备 curl -XPOST "http://192.168.99 ...

  6. [CPP] 类的内存布局

    本文可以解决下面 3 个问题: 以不同方式继承之后,类的成员变量是如何分布的? 虚函数表及虚函数表指针,在可执行文件中的位置? 单一继承.多继承.虚拟继承之后,类的虚函数表的内容是如何变化的? 在这里 ...

  7. 表单编辑时el-form的validate方法执行无效,阻塞代码运行 - Element UI踩坑记录

    今天在用element-ui写管理后台需求时,遇到一个奇怪的问题 一个正常带校验的表单,在新增列表数据时表单校验功能正常: 但是在新增之后再去编辑数据时,表单校验却失效了,甚至阻塞了后续的代码执行,控 ...

  8. Luogu P1023 [NOIp2000提高组]税收与补贴问题 | 数学

    题目链接 思路:列不等式组,然后解出不等式,得出答案的取值范围,最后取一个绝对值最小的答案就行了. #include<iostream> #include<cstdio> #i ...

  9. Centos 7 端口聚合

    简单粗暴,直接复制命令就好了 还是先啰嗦一下,添加网卡之后,如果没有网卡配置文件,可以通过nmcli con show 先查看网卡的唯一ID,然后复制其他的网卡配置文件,修改device项,name项 ...

  10. shell脚本 PHP+swoole的安装

    #!bin/bash set -e # Check if user is root if [ $(id -u) != "0" ]; then echo "Error: p ...