A

略,发现只有当末尾为9时才满足条件..

B

简单模拟,注意数组大小!!!

C

简单模拟。

D

比较暴力的一个做法就是每次找一个开始匹配的起始点,然后每次不同时向后跳2就行了。

注意这里最后还要判断一下剩下的串的个数是不是偶数!!!复杂度应该是\(O(n^2)\)但水过了就是水过了...

E

好题!起码对我来说是这样的,学到了许多的知识...

首先我们先将所有的数字减1,将一个排列位置上的数和它的标号都减一。例如:\(n=4\),\(p[0]=0,p[1]=1,p[2]=2,p[3]=3.\)这是一个排列。或者打乱一下,\(p[0]=2,p[1]=3,p[2]=0,p[3]=1\),这也是一个排列,反正我们就是要将数和位置数都减一。为什么这样做呢,因为像这样的整体移动,往往和对n取模有关,例如当\(k=2\)时,数组变成\(p[0]=2,p[1]=3,p[2]=0,p[3]=1\),我们发现对于\(>=k+1\)的数下标为i的就变成了\(i-k\),这个很好想,毕竟他们就是从原来的数被迫向后推了\(k\)。对于前\(k\)个数我们找一下规律,\(p[0]=2=n-1-(k-1)=n-k,p[1]=3=n-k+1\),同理可推得\(p[i]=n-k+i,p[i]=i-k+n\),发现和\(i-k\)的形式就多了一个\(n\),怎么办,我们取模啊,于是就有了\(p[i]≡i-k\)(%n),也就是说对于一个k,我们就能知道了其序列应该满足上式。之后考率给定一个k我们怎么用最少的次数将它还原成目标数列\(b[i]\),一个做法就是用图论的知识,环图,我们将p[i]向b[i]连边。意思是在p[i]序列中p[i]要和b[i]交换。考虑这样做后整个图一定是若干个环,对于每个环我们要花费环中元素的个数-1的次数才能将环中的数都还原。这样之后我们总的还原次数就是n-环的个数。好了,结束了...

不对啊,难道我们要对每一个k都做一下上述找环的过程吗?这个过程不是\(O(n^2)\)的吗?

考虑题中给的\(m\leq \frac{n}{3}\)有何用意,我们考虑一个能够用m次交换就能成功的排列,那么其最多有2m个数是乱序的,那么也就是说这个排列最少有n-2m个数是在自己本来位置上的。我们可以用一个数组\(cnt_i\)表示\(k=i\)在自己正确的位置上的数的个数。

考虑\(k=0,1,...,n-1\)这n个排列是各不相同,也就是说对于\(k1!=k2,p_{k1}[i]!=p_{k2}[i]\)这样的话由于目标序列只有一个,所以每个位置只会在其中的一个k中是正确的,在其他的位置都不正确,即\(\sum{cnt_i}=n\)。这样的话我们只需要在目标序列上找到其对应正确位置的k值,之后我们只用检查满足要求的k值,等等这样的k值一共有多少个,\(\frac{n}{n-\frac{2n}{3}}\)那不是3吗?

也就是说说最多有3个k值需要我们去找环,放心食用.

F

未完待续...

Harbour.Space Scholarship Contest 2021-2022 (Div. 1 + Div. 2) Editorial题解的更多相关文章

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

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

  2. Harbour.Space Scholarship Contest 2021-2022 题解

    多好的上分机会啊,要是换个时间(指改在 NOI 之后)我说不定就能上 2500 了(做白日梦 ing) A 签到题不多说,显然只有末尾为 \(9\) 的数是 interesting 的,因此答案就是 ...

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

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

  4. Lyft Level 5 Challenge 2018 - Final Round (Open Div. 2) (前三题题解)

    这场比赛好毒瘤哇,看第四题好像是中国人出的,怕不是dllxl出的. 第四道什么鬼,互动题不说,花了四十五分钟看懂题目,都想砸电脑了.然后发现不会,互动题从来没做过. 不过这次新号上蓝名了(我才不告诉你 ...

  5. Codeforces Round #792 (Div. 1 + Div. 2) A-E

    Codeforces Round #792 (Div. 1 + Div. 2) A-E A 题目 https://codeforces.com/contest/1684/problem/A 题解 思路 ...

  6. CF Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined)

    1. Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) B. Batch Sort    暴力枚举,水 1.题意:n*m的数组, ...

  7. xHTML+div布局:三个div,两边div宽度固定,中间div宽度自适应

    xHTML+div经常考题:三个div,两边div宽度固定,中间div宽度自适应. 和大家分享一个实现方式: 1.html代码 <div class="dyleft"> ...

  8. getElementsByTagName("div")和$("div")区别

    作者:zccst <body> <div class="selected">1</div> <div class="select ...

  9. 【codeforces】【比赛题解】#868 CF Round #438 (Div.1+Div.2)

    这次是Div.1+Div.2,所以有7题. 因为时间较早,而且正好赶上训练,所以机房开黑做. 然而我们都只做了3题.:(. 链接. [A]声控解锁 题意: Arkady的宠物狗Mu-mu有一只手机.它 ...

随机推荐

  1. 批大小、mini-batch、epoch的含义

    每次只选取1个样本,然后根据运行结果调整参数,这就是著名的随机梯度下降(SGD),而且可称为批大小(batch size)为 1 的 SGD. 批大小,就是每次调整参数前所选取的样本(称为mini-b ...

  2. CodeForce-792C Divide by Three(数学)

    Divide by Three CodeForces - 792C 有一个正整数 n 写在黑板上.它有不超过 105 位. 你需要通过删除一些位使得他变成一个美丽的数,并且需要删除尽量少的位数.删除的 ...

  3. POJ1804——Brainman(水题)

    解题思路: 一个乱序序列的 逆序数 = 在只允许相邻两个元素交换的条件下,得到有序序列的交换次数 直接求逆序数 把S[i]和s[i+1~n]的元素逐个比较,如果s[i] > s[k] (k∈[i ...

  4. DS博客作业03--树

    这个作业属于哪个班级 数据结构--网络2011/2012 这个作业的地址 DS博客作业03--树 这个作业的目标 学习树结构设计及运算操作 姓名 黄静 目录 0. PTA得分截图 1. 本周学习总结 ...

  5. Jmeter系类(32) - JSR223(2) | Groovy常见内置函数及调用

    常见内置函数及调用 获取相关函数 获取返回数据并转换为String字符串 prev.getResponseDataAsString() 例子 String Responsedata = prev.ge ...

  6. Dubbo 学习(二)服务注册与发现

    在上一篇中我们提到,dubbo官网上推荐使用ZooKeeper作为注册中心.那么今天我们就通过代码来实践一番,看看一个dubbo的服务消费者如果找到通过ZooKeeper暴露自己的dubbo服务提供者 ...

  7. requests接口自动化-数据库参数化

    数据库参数化的场景 部分接口,参数其他方式获取不到,可以去数据库去获取,如手机验证码 安装pymysql 配置文件 def sql_conf(): # 定义数据库的配置 host='127.0.0.1 ...

  8. openldap集成ssh 登录

    一 安装nslcd服务 yum install nss-pam-ldapd 二.修改vi /etc/nslcd.conf这个配置文件 修改uri 和base的值 改为你的ldap的地址和用户名 三.  ...

  9. nginx 利用return实现301跳转

    第一种: server { location / { rewrite ^/(.*)$ http://www.baidu.com/$1 permanent; } } 第二种: server { loca ...

  10. python线程threading

    线程示例: import threading import time # 唱歌任务 def sing(): # 扩展: 获取当前线程 # print("sing当前执行的线程为:" ...