cf1200构造2x15题

1.C. Make Equal With Mod

#分类构造 #取模
Problem - 1656C - Codeforces — 问题-1656C- Codeforces
Make Equal With Mod - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
有一个长度为n的数列,可以执行若干次操作,每次操作选择一个>=2的数x,用各个元素模x得到的结果替换自身。
判断是否存在一种操作序列,按照该序列执行操作后得到一个所有元素相等的数列。

从容易想到的情况推广到所有情况。
对能想到的方案进行前提条件分析,之后就知道是否覆盖了题目的所有范围,根据这个来继续分类或结束。、
对一个序列里的数取模,是否能让所有数相等,一个数可以通过模1或本身来得到0.,
则需要知道是否可以模1,或本身。
题目已经给出模数只要>=2,
就要讨论数列里0和1元素的情况和其他可以模本身的情况了。

对于同时取模,让数列里的数相等,首先1和0mod任何数都是不会变的,所以1和0同时出现的时候肯定是无解。
然后想到,因为模一个比自己大的数是保持不变,所以然后从最大的数开始模本身,可以把数都化成0,前提条件是没有1
如果有1,那就把所有数都化成1,此时如果有相邻的数,要从小开始模ai-1,如果有ai-1的倍数就无解了。排序后模ai-1哈希。on查。
不知道干嘛脑抽了,想着1,2,可以通过mod2变成1,1。结果就认为相邻的数也有可能变成1.
看到一个题解说,相邻的数同时取模,奇偶性是不会变的。如果被>=2 的数取模是不会变的。

2.B. Neighbor Grid

Problem - 1375B - Codeforces — 问题-1375B- Codeforces
Neighbor Grid - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
没看懂
Note that if
请注意,如果……

3.B. Sherlock and his girlfriend

Problem - 776B - Codeforces — 问题-776B- Codeforces
Sherlock and his girlfriend - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#构造 #质因数 #合数
有n件珠宝,第i件珠宝的价格为i+1,给这些珠宝染色,一件珠宝价格为另一件珠宝价格的质因子时,这两件珠宝不能同色,求最少颜色的染色方案。输出染色种类数量和每件珠宝染的颜色

我的思路:
2的倍数和2的颜色不同
3的倍数和3的颜色不同
5的倍数和5的颜色不同
所有质数用一个颜色,
一个质数的倍数用一个颜色。
所以每有一个质数就要用掉1个颜色。

题解:
其他数因为是合数,肯定不会是质因数,所以全部用另一个颜色就行。
所以欧拉筛出质数bool数组,如果是质数就输出1,否则输出2.

prime divisor质因数

4.B. Flip the Bits

Problem - 1504B - Codeforces — 问题-1504B-代码力
Flip the Bits - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#直接构造 #前缀操作 #反转操作
有两个01串a,b,如果 [1,n]中的0和1数量相同,则可以把区间内所有01反转,求a串是否能转换成b串。

前缀操作,
从后往前看,遇到的第一个不同点的区间一定是是要操作一次的,
然后遇到的第i个区间要操作i次
0101
1010

题目只是要求是否可以,而不是操作次数,漏看题目条件了。
因为是改变前缀,所以如果遇到不一样的地方要把这之前的给变了,然后再带上当前点变一次。
如果当前点不能变,还可能要带上后面的点一起变。如果a[i] == a[i+1] == b[i] == b[i-1]是带上后面的点的前提。

5.B. Interesting Subarray

Problem - 1270B - Codeforces — 问题-1270B- Codeforces

deletion 删除
n长度数组
求子数组中极值>= k 时子数组的边界。或输出NO
数组大小关系,一般要排序,因为要边界,所以二元组存大小和编号, 然后判断两端的差值是否可以>= k可以的话就输出minn编号再输出maxn编号。

没看到有类似解法的题解。
我的解法似乎是错的。因为这个题的k是子数组的长度,当时想解法的时候想的是整个数组的长度n。
找边界情况,
r′−l′+1⩽∣Al′​−Ar′​∣,至少为1,所以只有一个元素是不行的。
再看有两个元素,差值最小为2,所以只要相邻项的差值为2就可以满足条件了。

6.C. Build Permutation

Problem - 1713C - Codeforces — 问题-1713C- Codeforces
 arbitrary order
 perfect square
 †
 0,1,4,9,16,25
 差值3,5,7,9
 如果刚好在完全平方数+1,直接倒序输出
 如果在完全平方数之间,找到第一个大于自己的完全平方数
 比如n =4
 0 4-1,4-2,4-3
 先输出0然后再倒序输出即可。、
 
 CF1713C Build Permutation - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

7.B. Hemose Shopping

Problem - 1592B - Codeforces — 问题-1592B-代码力
从左右端点往里x的区域如果有交集就是不能被交换的地区。检查该区可以得到一个

容易看出,可以发现,手玩数据,

8.B. Madoka and the Elegant Gift

Problem - 1647B - Codeforces — 问题-1647B- Codeforces
通过观察样例发现,如果相连的1形成的区域并不是一个矩形,则NO,否则yes
因为有一个大nice矩形可以包住所有的小矩形,不会相交。
通过枚举矩阵里的点,遇到的第一个1就是左上角,用floodfill找下连通1的数量,然后再根据左上角,往下往右探索到长宽值,看是否对应。

矩形的判断不需要通过flood fill,可以通过判断2x2矩阵是否出现了凸起:
左上角对左上角
01 11 10 11
11 10 11 01

9.D. A-B-C Sort

Problem - 1674D - Codeforces — 问题-1674D- Codeforces
1 2 3
2 3 1
1 2 3
对着小样例分析,
猜测如果数组a原本就是升序,则yes
否则,如果是奇数长度则为no
偶数长度yes

题解:二操作是逆操作,可以将问题转为a,c是否能得到相同的b数组,c是排序后的a,依次遍历a,c数组看后两位是否相同即可。
实现 位运算符号优先级比== 要低。用作偶数判断时要(n&1) == 0;
CF1674D A-B-C Sort - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

10.A. Prefix Sum Primes

Problem - 1149A - Codeforces — 问题-1149A-代码力
2,3,5,7,11,13,17,19,23. 29

2排最前,得到初始的2,然后1,得到3,然后2,得到5,然后2,得到7,

+2能得到一个素数的话,或加1的不到1个素数就优先排2,只有2,3是相邻的素数,所以操作成立。
否则就+1.加一的颗粒度比2要细。更容易得到一个素数。
所以就是能加2就加2了。2e5欧拉筛素数bool数组。

题解:利用除了2以外的偶数都不是素数来构造:
先手动构造出2,3,然后把2全部加上,这样就不会错过任何一个奇数,也就不会错过任何一个素数,最后再把1全部输出。

11.B. Stairs

Problem - 1419B - Codeforces
 squared figure staircase arbitrary disjoint
 猜测1,3,5,7,9,只有奇数楼梯是nice,每种楼梯只能建1个
 
 忽略了条件。如果一个“X级阶梯”可被 X 个边长为正整数的正方形恰好覆盖,那么称之为“好阶梯”。

看图发现,
每次都从右下角取一个最大的正方形,然后将楼梯分成两部分
然后可以继续分到1为止。
7分成3,3分成1,
恰好是2*n+1的递推关系
15,7,3,1,
得到通项为2^n-1
于是1,3,7,15,从小开始贪心的选。

12.B. Odd Sum Segments

Problem - 1196B - Codeforces — 问题-1196B- Codeforces
奇+奇得偶,
奇+偶得奇
偶+奇得偶
偶+偶得奇
统计奇数偶数数量
如果,奇数数量少于了k无解。
再看>=k是否一定有解?
此时偶数数量已经不重要,看奇数数量。
如果奇数数量和k的差值是奇数,完全没影响,可以合并成1个奇数。
偶数的话,多出来的部分合并成偶数,然后再和一个奇数合并成奇数,所以也没有影响。偶数完全不用管,只要看奇数就行了。
找到奇数就输出,找够了k-1个奇数后,直接输出n。

13.C.Differential Sorting

Problem - 1635C - Codeforces — 问题-1635C-代码力
#替换操作 #直接构造 #操作
我的思路
差值递增,之前做过类似的了。
数组排序,从中间向两边指针移动。前提条件是处理后的数组还是有序的。因为这里是替代。
题解思路
x < y < z
前面所有的值都可以用z - y替代,前提 az- ay < ay
ax和ay是不能替代的,所以用这两个值替代前面的值,如果az-ay> ay
则无解。
否则有解。输出n-2个az-ay,然后输出ay,az。

题解 CF1635C Differential Sorting - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
az,ay不可变,则az还必须大于ay再加上az-ay> ay即可。
这里涉及到了数组元素大小,然而并没有排序操作。因为这里是替代。
x < y < z

14C. Dora and Search

Problem - 1793C - Codeforces — 问题-1793C-代码力
 that none of the elements at its ends is either the minimum or the maximum of the entire subsegment
ends末端,指开头和结尾。

找两个峰,ai > ai+1 && ai > ai-1,aj < aj + 1,&& aj < aj - 1
然后输出

132 论破。
只要高峰和低峰相邻
1 5 4 3 2
5 3 是峰
输出1,2,论破。
峰不是对于整个区间,只是对于相邻元素,在此题并无用处。
卡壳。

题解:
排列全选时,随着区间不断缩小,最值一定是单调变换,只要看边界和当前最值的关系来缩边界改最值。

15.A. Almost Equal

Problem - 1205A - Codeforces — 问题-1205A- Codeforces
环形,n长度,首先想到滑动窗口的知识,
然后边界处要是相邻的两个数,
从小数据推导,想到用1,2;3,4;5,6中的一个。
每次滑动必定会减一或加一,所以考虑两种状态交替。
初始1,4,5,然后2,3,6,实现+1,-1,+1,然后回到1又变成-1,完成循环。
前提条件是奇数n。
如果偶数n,+1,-1,后回到第一个值变成-1,连续两个减一会导致出现差值大于1的数。

输出答案有点棘手,只想到输出奇数,然后用交替的bool,初值为0,^=自己,让输出奇数+这个bool。
然后再输出偶数,-= 这个bool。初值为0

题解,离线构造,根据滑动窗口的知识,用数组构建1,4,5时就可以在i+n位置填上2,3,6,前者奇数i填奇数,偶数i填偶数,后者奇数i填偶数。偶数i填奇数,然后输出整个2*n数组。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值