【4.5】Codeforces 刷题

∗ 1400 , ∗ 1500 , ∗ 1700 ^*1400, ^*1500, ^*1700 1400,1500,1700


B. Composite Coloring

题意:给 n n n 个合数( a i ≤ 1000 a_i ≤1000 ai1000), 你要将其分为至多 11 个集合,使这些集合满足集合内的元素两两不互质。

题解:codeforces B. Composite Coloring

思路:发现 1000 以内的任意合数一定存在前 11 个质数中的某个质数作为因子,那么让每个质数的倍数都分为一组,就可以预处理完全分类了。最后因为输出有要求,模仿 y总 讲的非保序离散化,用数组映射即可。

AC代码:https://codeforces.com/contest/1332/submission/152664616


F. Binary String Reconstruction

题意:对于一个01串,我们把每一个相邻的数字对记录,记录数对中1的个数,n0表示00的个数,n1表示01和10的个数和,n2表示11的个数。给定n0、n1、n2,反构造一个符合的字符串,保证存在答案。

思路:先构造 00,然后 11,最后 01 的话在字符串末尾 01 交替即可。

AC代码:https://codeforces.com/contest/1352/submission/152752633


D. Ehab the Xorcist

题意:

构造出最短的一个数组,使得:

  1. 所有元素异或的结果为 u
  2. 所有元素之和的结果为 v

思路:首先,异或是不进位的加法,满足不等式 a ⨁ b ≤ a + b a \bigoplus b ≤ a + b aba+b ,而且进位一定是偶数,也就是 ( a + b ) − ( a ⨁ b ) = 2 ∗ k ( k ∈ N ) (a+b)-(a \bigoplus b)=2*k (k∈\N) (a+b)(ab)=2k(kN) ,即可判断存在性。

若存在答案且 u ≠ v u≠v u=v,我们可以构造长度为 3 的数组: ( v − u ) / 2 , ( v − u ) / 2 , u (v-u) / 2, (v-u) / 2, u (vu)/2,(vu)/2,u,其中 v − u v-u vu 就是进位而消失的部分。然后发现数组还可以更短,也就是 ( v − u ) / 2 (v-u)/2 (vu)/2 u u u 异或没有进位时可以合并。

AC代码:https://codeforces.com/contest/1325/submission/157114499

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值