正睿20秋季普转提day3

aria的礼物

传送门

题面描述

Aria 的生日快到了,Jane 为她准备了一个用密码箱包装起来的礼物。要解开这个密码箱需要解决如下一个谜题。

Jane 给出了目前有一个长度为 n 的全由小写字母构成的字符串。然后改变其中最少数量的字符数(改变的方法是可以将任意一位小写字符替换成另一个小写字符),使得前 k 个字符和后 k 个字符相同。这个最少改变的字符数就是这个密码箱的密码。

Jane 给出了 n,k, 以及这个字符串。Aria 显然懵了,于是她找到了你求助,希望你能给出答案。

输入格式

第一行包括两个正整数 n,k。

第二行一个长度为 n个小写字符串。

输出格式

一行一个非负整数,表示最少修改的字符数量。

样例

输入1

10 7
aabaabaabc

输出1

1

输入2

10 7
ababababab

输出2

4

样例解释

样例1:aabaabaaba

样例2:abaabaabaa

数据规模

对于 50%的数据: 1≤k≤n≤20,且字符仅有a,b构成。

对于 100% 的数据:1≤k≤n≤1051≤k≤n≤10^5 1≤k≤n≤105

额外限制:其中有 50%的数据点满足:1≤k≤⌊n/2⌋1≤k≤⌊n/2⌋1≤k≤⌊n/2⌋,且保证均匀分布。

时间限制:1S

空间限制:256MB

分析

样例一,前7个字符为aabaaba,后7个为aabaabc,只有最后一个不同。

样例二,前七个abababa,后七个bababab。

分两种情况来讨论

一、k<=n/2

既然前面的序列与后面的不沾边,那就只要比较二者的不同ans++。~~用特殊值法解出下标值。~~n = 9 ,k = 4. 下标为1,2,3,4,5,6,7,8,9。i = 1 时,另一端应该是 6 。6=1+5.也就是 ii(序列二)=i(序列一)+n−kii (序列二)= i(序列一)+ n - kii(序列二)=i(序列一)+n−k,带到 i = 2 仍然成立。之后每次进行序列的比较都是用i + n - k.

二、k>n/2

这种情况有点麻烦。需要考虑重合部分。我们看前面列出的样例一:后七个的前三个为bab,这三个必须与aba相等,因为aba是不在重合序列中的。这时候有两种选择,是改变前面的还是后面的?可以都试一遍。毕竟序列二的改变会影响序列一。至于交叉部分的起始点:从序列一考虑,i = 1 ,当 n = 9, k = 5 ,相交长度为 1 , 2 * k - n = 1 ; n = 9 , k = 6, 相交为 3 ,2 * k - n = 3,成立。

于是打出了这样的代码

#include<iostream>using namespace std;#define N 100010int n,k,ans,res;
char s1[N],s2[N];int main(){cin>>n>>k;cin>>s1+1;for(int i=1;i<=strlen(s1+1);i++)s2[i]=s1[i];if(k<=n/2){for(int i=1;i<=k;i++)if(s1[i]!=s1[i+n-k])ans++;cout<<ans<<endl;}else{for(int i=1;i<=2*k-n;i++)if(s1[i]!=s1[i+n-k]){s1[i]=s1[i+n-k];ans++;}for(int i=2*k-n+1;i<=k;i++)if(s1[i]!=s1[i+n-k])ans++;res=ans;ans=0;for(int i=1;i<=n-k;i++)if(s2[i]!=s2[i+n-k]){s2[i+n-k]=s2[i];ans++;               }for(int i=2*k-n+1;i<=k;i++)if(s2[i]!=s2[i+n-k])ans++;res=max(res,ans);cout<<ans<<endl;}return 0;
}

发现有几个点错了

举一个吧

input:

18 15
babaabbbbabbaaabbb

output:

10

result:

wrong answer 1st words differ - expected: '7', found: '4'

带入分析一下

序列一、babaabbbbabbaaa 序列二、aabbbbabbaaabbb 输出 的 s1:aabbbbabbaaaaaabbb s2:babbabbbbabbaaabbb.
~~

神奇位运算

题面描述

CLB 有你 n 个长为 m 的 01 串,和一台神奇的机器。

这台机器需要由两个长度为 m的 01 串作为输入,然后可以得到一个长度为 m 的 01 串作为输出。

输出的每一位是两个 01 串的对应位的 and,or,xor 三种运算中的一种的结果。你需要确定机器在每一位上究竟会做何种运算。

CLB 可以用这 n 个 01 串的任意一对来测试这台机器,并且可以测试无数次,但是 CLB 可能依然不能确定某一位机器究竟是做的何种运算。

现在 CLB 想在这 n 个 01 串的基础上再添加 k 个长度为 m 的 01 串(这 k 个 01 串可以是任意的,每一位是由自己构造的)。CLB 想知道最小的 k,使得用这 n+k 的 01 串的任意一对来测试这台机器,并且可以测试无数次,最终他能知道每一位机器做的何种运算。

CLB 把这个问题抛给了你,希望你给出最小的 kk。

输入格式

本题采用多组数据测试,一行包括一个正整数 TT,表示数据的组数。

对于每一组数据:

第一行包括两个正整数 n,m。

之后 n 行包括 n 个长度为 m 的 01 串。

输出格式

对于每一组数据,都包括一行非负整数,表示最少的 kk(即需要添加的字符串)。

样例

输入

2
3 2
11
00
10
2 8
00000000
00001111

输出

1
2

样例解释

1.所有可能的答案是 1111 或 0101。

2.可能的一组答案是 11110000,1111111111110000,11111111。

数据规模

对于 30% 的数据,n,m≤5。

对于 60% 的数据,n,m≤20。

对于 100% 的数据,n,m≤500,T≤10。

时间限制:1S

空间限制:256MB

终焉之数列

题面描述

CLB 有一个长度为 n 的数列 a。

但是他觉得这个数列不够酷,于是他希望能在这个数列上面加加减减,最后使得新数列的两两最大公约数为11,且最小化改变的值之和。

换言之,他希望你求得一个等长的数列 b 使得 b 数列中的两两最大公约数为 11 的同时,最小化

∑i=1n|ai−bi|.∑i=1n|ai−bi|.

输入格式

第一行包括一个正整数 n。

第二行包括 n 个正整数 aia_i ai​。

输出格式

一行一个非负整数,表示最小化的 ∑ni=1|ai−bi|∑i=1n|ai−bi| 的 b 数列,如果有多个数列b满足要求,输出任意一个即可。

样例

输入

5
1 6 4 2 8

输出

1 5 3 1 8

数据规模

对于 30% 的数据: 1≤n≤5。

对于 50% 的数据:1≤n≤10。

对于 70% 的数据:1≤n≤30。

对于 100% 的数据: 1≤n≤100,1≤ai≤30。

时间限制:2S

空间限制:256MB

正睿20秋季普转提day3相关推荐

  1. 8.6 正睿暑期集训营 Day3

    目录 2018.8.6 正睿暑期集训营 Day3 A 亵渎(DP) B 绕口令(KMP) C 最远点(LCT) 考试代码 A B C 2018.8.6 正睿暑期集训营 Day3 时间:5h(实际) 期 ...

  2. 2019金华正睿集训总结

    emmm-蒟蒻第一次出来集训,也是2019年noip(现在应该叫csp的说)前最后一次外出集训- 感觉压力好大啊-毕竟才学了不到一年啊- 但不管怎样,接下来几天要好好加油啊! DAY1 仅自己用的链接 ...

  3. 8.8 正睿暑期集训营 Day5

    目录 2018.8.8 正睿暑期集训营 Day5 总结 A 友谊巨轮(线段树 动态开点) B 璀璨光滑 C 构解巨树 考试代码 A B C 2018.8.8 正睿暑期集训营 Day5 时间:3.5h( ...

  4. 11.2 正睿停课训练 Day15

    目录 2018.11.2 正睿停课训练 Day15 A 郁闷的小G(二分) B 小G的树(树形DP) C 数的距离(思路) 考试代码 B C 2018.11.2 正睿停课训练 Day15 时间:3.5 ...

  5. 9.29 正睿提高6

    目录 2018.9.29 正睿提高6 A B C 考试代码 B C 2018.9.29 正睿提高6 时间:3.5h(实际) 期望得分:100+30+1 实际得分:100+20+0 比赛链接 T3想了一 ...

  6. 省选模拟赛(正睿的最后一场)

    省选模拟赛(正睿的最后一场!!) 比赛时间安排 与正解的差距 T1 比赛时间安排 7.30-7.40 t1 能拿10分dfs,n=0的情况或许可以找规律 t2 看不懂 t3 暴力挺好写的,求lca太麻 ...

  7. 2021/9/12正睿10测Day.3

    半个小时左右大概看完了题,主要刚开始的时候吃了些东西. 这是第三次打正睿的十连,也是头一次在打正睿的十连遇到捆绑测试,对于我这种骗分狗来说首先心态上就很折磨,有些 subtask 只给了其中一两个量的 ...

  8. 8.10 正睿暑期集训营 Day7

    目录 2018.8.10 正睿暑期集训营 Day7 总结 A 花园(思路) B 归来(Tarjan 拓扑) C 机场(凸函数 点分治) 考试代码 A B C 2018.8.10 正睿暑期集训营 Day ...

  9. 7.30 正睿暑期集训营 A班训练赛

    目录 2018.7.30 正睿暑期集训营 A班训练赛 T1 A.蔡老板分果子(Hash) T2 B.蔡老板送外卖(并查集 最小生成树) T3 C.蔡老板学数学(DP NTT) 考试代码 T2 T3 2 ...

  10. 『正睿OI 2019SC Day3』

    容斥原理 容斥原理指的是一种排重,补漏的计算思想,形式化的来说,我们有如下公式: \[\left | \bigcup_{i=1}^nS_i \right |=\sum_{i}|S_i|-\sum_{i ...

最新文章

  1. Python分析离散心率信号(上)
  2. mysql useradd_useradd失败
  3. VB高效导入Excel2003和Excel2007文件到MSHFlexGrid控件显示
  4. 关于微信小程序的的总结
  5. 【控制】《复杂运动体系统的分布式协同控制与优化》-方浩老师-第4章-一类欧拉-拉格朗日系统全局稳定的输出反馈协调控制
  6. Spring MVC--使用fastjson替换jackson来响应json数据
  7. 计算机在财务核算中的应用,浅谈计算机在财务核算和财务管理工作中的辅助应用...
  8. python 元组捷豹_GitHub - jaguarzls/pyecharts: Python Echarts Plotting Library
  9. 程序员从优秀到卓越的几点建议
  10. linux svn可视化工具,CentOS6.5安装SVN 可视化管理工具iF.SVNAdmin
  11. Mysql导入大容量SQL文件数据问题
  12. 中年发福谁之“过”?Science论文采用“双标水”法首次揭示全生命周期代谢规律...
  13. layui横线:带标题的横线(含代码、案例)
  14. 自学android要多长时间,自学android开发,从零开始学Android
  15. 编辑器,在线编辑器,微信编辑器,公众号编辑器,UEditor编辑器
  16. VMware Workstation Pro 16 安装win7
  17. WEB后端服务第22天-Django项目第2天
  18. 互联网晚报 | 11月2日 星期二 | 菜鸟推出“个人减碳账单”;特斯拉上线0首付购车方案;《个人信息保护法》正式实施...
  19. GRE隧道配置实验(静态路由)
  20. 【电力电子技术】CURRENT DOUBLER 倍流整流电路

热门文章

  1. android 字符串缩进换行换行,Android Textview第二行缩进/悬挂缩进
  2. Spring Boot入门教程(四):配置文件
  3. 费马定理_高数_1元微积分
  4. python转换整数_在Python中将数字转换为整数列表
  5. python浮点数加整数_Python中整数和浮点数运算
  6. ycf 梗_抖音三个汤勺放在筷子上是什么梗 抖音三个汤勺放在筷子上出处介绍[多图]...
  7. Arcgis runtime for android (一) mmpk加载图层组实现上下移动切换
  8. [不变初心数(15分] 用数组存储不变的数最后对照即可
  9. 中学-知识与能力【8】
  10. 我的免费版mbti职业性格测试