算法2.2 构造专题

什么是构造

构造题是一种题型。

不同于其它的算法、数据结垢题,根据查询输出结果;构造题是让你给出一组方案,使得在一定限制内符合条件。

从形式上来看,问题的答案往往具有某种规律性,使得在问题规模迅速增大的时候,仍然有机会比较容易地得到答案。

这要求解题时要思考问题规模增长对答案的影响,这种影响是否可以推广。例如,在设计动态规划方法的时候,要考虑从一个状态到后继状态的转移会造成什么影响。

构造题一个很显著的特点就是高自由度,也就是说一道题的构造方式可能有很多种,但是会有一种较为简单的构造方式满足题意。看起来是放宽了要求,让题目变的简单了,但很多时候,正是这种高自由度导致题目没有明确思路而无从下手。

构造题另一个特点就是形式灵活,变化多样。并不存在一个通用解法或套路可以解决所有构造题,甚至很难找出解题思路的共性。

构造题的解法

构造题的经典算法有二分、分治、排序、图论算法如网络流,2-SAT,最短路等等。也会用到一些数学公式推导求出构造方法。

考虑问题时,我们往往从小情况入手,再构造大的情况。

有时我们也会考虑特殊情况,自己添加条件限制范围。

题解(21.8.29)

CF1438D Powerful Ksenia

题目描述

n ( 3 ≤ 1 0 5 ) n(3 \le 10^5) n(3105) 个正整数 a i a_i ai, 1 ≤ a i ≤ 1 0 9 1 \le a_i\le10^9 1ai109.

每次操作是选三个不同的下标 i , j , k i,j,k i,j,k ,让 a i , a j , a k a_i,a_j,a_k ai,aj,ak 都变成 a i ⊕ a j ⊕ a k a_i \oplus a_j\oplus a_k a

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值