一句话题解(rating : 1500)

一句话题解(rating : 1500)

B. Pipes

竖着的管在排列中永远不会出现,因为无法连接上一列或无法连通下一列;

横着的管道可以直达下一列,弯曲的管不能直达下一列,但是可以直达另一行;

再加最后一行加几个特判即可。

 

D. Swap Letters

题意:最小交换步数,使得两个字符串相等。每次交换分别选择两个字符串中的字符,输出过程。

a的总个数和b的总个数都是偶数,才会有解;

不同的情况有(a, b) 和 (b, a)两种:

如果每种情况内部交换,只需要一步;

如果两个情况交换,需要两步。

我们先内部完成交换,交换完最多需要一次外部交换,即是最小步骤。

 

细节证明:

减去原本相同情况下的a, b(都为偶数个),剩余的a,b都是偶数,这就保证了有解。

剩余a,b的数量相同,且总共不一样的情况数量就等于a的数量(也等于b的数量),是个偶数,所以外部交换最多进行一次。

 

E. Equalizing by Division (easy version)

题意:每次操作可以将一个数ai变成ai2,问至少需要多少次操作,使得数列a中至少有k个元素相同。

数据范围 1<=k<=n<=501<=ai<=2105

 

枚举最后出现k次的数是多少,范围 1 ~ 2105

二分找到第一个能到达最终答案的数,以此向后找k个;

每个数最多除log22e5次,约等于18次;

ai的最大范为表示为M,最终时间复杂度为 O(Mlog2nnlog2M),大约计算2e7次,不会超时。

 

 

G. Hyperset

1,2,3的妙用

1 ^ 2 = 3, 1 ^ 3 = 2, 2 ^ 3 = 1,任意两者的异或等于第三者

三者的异或值等于0,1 ^ 2 ^ 3 = 0;

本题要判断三个字符串中的**每一位是否全都相同或者全都不同**,可以枚举前两个然后二分判断第三个是否存在,且有多少。用1,2,3代替'S'如,'E','T'三个字母,如果前两个位x ^ y = 0,也就是第一位和第二位相同,第三位也必须相同,z = x ^ y ;如果x ^ y != 0,因为三者异或和为0,所以第三者一定和前两个异或和相等,即z = x ^ y.

 

 

B. Modulo Equality

将数组a按一定顺序排好,求最小值x使得数组a 中每个数经过操作(a_i + x) mod m等于b_i

枚举:总有一个数a_i操作后作为b[1],枚举这个第一个数得到的最小x,然后check该种情况是否存在即可

 

 

K. Secret Passwords

有相同字母的字符串分为一组,且如果a,b一组,b, ca,b$也是一组,问有多少组?

并查集。维护一个数组,vector<int>e[26],把出现过该字母的字符串对应的序号加入那个维度,每个维度合并,最后输出有多少个根节点。

 

L. Binary String Minimizing

思维简化:考虑移动0

数组pos维护每个‘0’出现的位置,每个位置的‘0’最多跨越pos[i]i个‘1’到达第一个1之前;

一开始就将0位置的数都改为1,遍历pos数组的时候不断修改0出现的位置;

最后再利用pos中0出现的位置更新一下‘0’的值(修改过的pos[i]会更新过坐标,没有修改的不变);

只能说jiangly真的厉害!

 

 

M. Sweets Eating

 

有点动态规划的意思,好题,真的是好题!明早写题解

 

N. Divide The Students

贪心

 

 

posted @   Y2ZH  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示