2022.10.2好题选讲(构造专题)

  • Post author:
  • Post category:其他




T1



题目大意

构造一个三元组



(

a

,

b

,

c

)

(a, b, c)






(


a


,




b


,




c


)





满足



4

n

=

1

a

+

1

b

+

1

c

\frac 4n = \frac 1a + \frac 1b + \frac 1c


















n
















4























=




















a
















1























+




















b
















1























+




















c
















1























其中



n

1

e

6

,

a

,

b

,

c

1

e

18

n \le 1e6, |a|, |b|, |c| \le 1e18






n













1


e


6


,







a





,







b





,







c
















1


e


18






分析

分奇偶讨论:




  1. n

    n






    n





    是偶数的时候:



    4

    n

    =

    1

    n

    +

    1

    n

    +

    2

    n

    =

    1

    n

    +

    1

    n

    +

    1

    1

    2

    n

    \frac 4n = \frac 1n + \frac 1n + \frac 2n = \frac 1n + \frac 1n + \frac 1{\frac 12 n}


















    n
















    4























    =




















    n
















    1























    +




















    n
















    1























    +




















    n
















    2























    =




















    n
















    1























    +




















    n
















    1























    +
































    2
















    1





















    n
















    1
























    ,所以



    a

    =

    b

    =

    n

    ,

    c

    =

    1

    2

    n

    a = b = n, c = \frac 12 n






    a




    =








    b




    =








    n


    ,




    c




    =




















    2
















    1





















    n







  2. n

    n






    n





    是奇数的时候:令



    n

    =

    2

    k

    +

    1

    n = 2k + 1






    n




    =








    2


    k




    +








    1









    4

    2

    k

    +

    1

    =

    2

    k

    2

    k

    (

    2

    k

    +

    1

    )

    =

    2

    k

    +

    1

    +

    2

    (

    k

    +

    1

    )

    (

    2

    k

    +

    1

    )

    \frac 4{2k + 1} = \frac2k – \frac{2}{k(2k+1)} = \frac{2}{k + 1} + \frac 2{(k + 1)(2k + 1)}


















    2


    k


    +


    1
















    4























    =




















    k
















    2












































    k


    (


    2


    k


    +


    1


    )
















    2























    =




















    k


    +


    1
















    2























    +




















    (


    k


    +


    1


    )


    (


    2


    k


    +


    1


    )
















    2
























    ,也就是说



    k

    k






    k





    是偶数的时候就有



    a

    =

    b

    =

    k

    ,

    c

    =

    1

    2

    k

    (

    2

    k

    +

    1

    )

    a = b = k, c = \frac 12k(2k + 1)






    a




    =








    b




    =








    k


    ,




    c




    =




















    2
















    1





















    k


    (


    2


    k




    +








    1


    )









    k

    k






    k





    是奇数的时候就有



    a

    =

    b

    =

    k

    +

    1

    ,

    c

    =

    1

    2

    (

    k

    +

    1

    )

    (

    2

    k

    +

    1

    )

    a = b = k + 1, c = \frac 12(k + 1)(2k + 1)






    a




    =








    b




    =








    k




    +








    1


    ,




    c




    =




















    2
















    1





















    (


    k




    +








    1


    )


    (


    2


    k




    +








    1


    )






T2 CF1722G



题目大意

试构造一个长为



𝑛

𝑛






n





的数列使得奇数项的异或和等于偶数项的异或和



分析

这里显然就是整个数列的异或和为



0

0






0





的意思,一开始想的是两两配对,然后发现不太好整,所以考虑四个四个配对,那么久分成四种情况:




  1. n

    m

    o

    d

    4

    0

    n \bmod 4 \equiv 0






    n








    mod












    4













    0





    ,显然这里两两配对都可以,直接



    0

    n

    1

    0 \sim n – 1






    0













    n













    1







  2. n

    m

    o

    d

    4

    1

    n \bmod 4 \equiv 1






    n








    mod












    4













    1





    ,那就可以



    2

    n

    2 \sim n






    2













    n





    ,然后最后一个数字填



    0

    0






    0







  3. n

    m

    o

    d

    4

    3

    n \bmod 4 \equiv 3






    n








    mod












    4













    3





    ,那么可以



    4

    n

    4 \sim n






    4













    n





    ,然后最后加上



    1

    ,

    2

    ,

    3

    1, 2, 3






    1


    ,




    2


    ,




    3







  4. n

    m

    o

    d

    4

    2

    n \bmod 4 \equiv 2






    n








    mod












    4













    2





    ,就可以把前面的一个组拿出来一个,然后就是



    10

    n

    +

    3

    10 \sim n + 3






    10













    n




    +








    3





    ,后面加上



    0

    ,

    2

    ,

    4

    ,

    7

    ,

    8

    ,

    9

    0, 2, 4, 7, 8, 9






    0


    ,




    2


    ,




    4


    ,




    7


    ,




    8


    ,




    9






T3



T4 CF1438D



题目大意

给定一个长度为



n

n






n





的数列

给定一个操作,选出



i

j

k

i \neq j \neq k






i
























=









j
























=









k





,然后把



a

i

,

a

j

,

a

k

a_i, a_j, a_k







a










i


















,





a










j


















,





a










k





















都赋值成



a

i

a

j

a

k

a_i \oplus a_j \oplus a_k







a










i






























a










j






























a










k




















构造一个操作顺序使得数列中的书全都相等,最大操作次数不得大于



n

n






n






分析

仍然可以分奇偶讨论,如果数列长度是奇数的时候,就可以



n

2

\frac n2


















2
















n
























把整个数列变成这样:





a

,

a

,

b

,

b

,

c

,

c

,

d

,

d

,


,

x

,

x

,

y

,

y

,

y

a, a, b, b, c, c, d, d, \cdots, x, x, y, y, y






a


,




a


,




b


,




b


,




c


,




c


,




d


,




d


,











,




x


,




x


,




y


,




y


,




y





然后再倒着来一遍就把所有数字变成



y

y






y





就可以了

然后是偶数的情况。这里我们可以发现,把三个数都变成



a

i

a

j

a

k

a_i \oplus a_j \oplus a_k







a










i






























a










j






























a










k





















之后对整个数组的异或和的贡献就是



(

a

i

a

j

a

k

)

(

a

i

a

j

a

k

)

=

0

(a_i \oplus a_j \oplus a_k) \oplus (a_i \oplus a_j \oplus a_k) = 0






(



a










i






























a










j






























a










k


















)













(



a










i






























a










j






























a










k


















)




=








0





,相当于这个操作不会改变这一堆数字的异或和。所以如果这个序列长度是偶数并且最后能弄成全都是一样的的话那么这个序列的异或和必定是



0

0






0





那么前



n

1

n – 1






n













1





个数我们就可以按照奇数的方法构造,至于最后一个数,因为满足异或和为



0

0






0





所以最后一个数必定和前面弄出来的所有数相等,那就可以不用管它了。



T5 CF1734E



题目大意

给定质数



n

n






n





与一个长度为



n

n






n





的数列



b

b






b





,要求构造一个



n

×

n

n \times n






n




×








n





的矩形



a

a






a





满足:




  1. a

    i

    ,

    j

    [

    0

    ,

    n

    )

    a_i, j \in [0, n)







    a










    i


















    ,




    j













    [


    0


    ,




    n


    )







  2. i

    ,

    a

    i

    ,

    i

    =

    b

    i

    \forall i, a_{i, i} = b_i









    i


    ,





    a











    i


    ,


    i





















    =









    b










    i























  3. r

    1

    ,

    r

    2

    ,

    c

    1

    ,

    c

    2

    \forall r_1, r_2, c_1, c_2










    r










    1


















    ,





    r










    2


















    ,





    c










    1


















    ,





    c










    2





















    不能有



    a

    r

    1

    ,

    c

    1

    +

    a

    r

    2

    ,

    c

    2

    a

    r

    1

    ,

    c

    2

    +

    a

    r

    2

    ,

    c

    1

    (

    m

    o

    d

    n

    )

    a_{r_1, c_1} + a_{r_2, c_2} \equiv a_{r_1, c_2} + a_{r_2, c_1} \pmod n







    a












    r










    1


















    ,



    c










    1





































    +









    a












    r










    2


















    ,



    c










    2















































    a












    r










    1


















    ,



    c










    2





































    +









    a












    r










    2


















    ,



    c










    1











































    (




    mod






    n


    )






分析

我们发现一件事情,就是加入我们对某一列(这里就假设给



c

1

c_1







c










1





















)的所有数都加上一个数



k

k






k





,那么第三个条件的式子就会变成:





a

r

1

,

c

1

+

k

+

a

r

2

,

c

2

a

r

1

,

c

2

+

a

r

2

,

c

1

+

k

(

m

o

d

n

)

a_{r_1, c_1} + k + a_{r_2, c_2} \equiv a_{r_1, c_2} + a_{r_2, c_1} + k \pmod n







a












r










1


















,



c










1





































+








k




+









a












r










2


















,



c










2















































a












r










1


















,



c










2





































+









a












r










2


















,



c










1





































+








k










(




mod






n


)





很显然这样的操作对是否满足性质



3

3






3





毫无影响,所以我们可以考虑先不满足性质



2

2






2





最后再考虑每一列的那个数和



b

i

b_i







b










i





















差多少然后整列减去相差的数就好了。

现在就考虑怎么满足条件



1

1






1









3

3






3





,这个就比较简单了,直接



a

i

,

j

=

(

i

×

j

)

m

o

d

n

a_{i, j} = (i \times j) \bmod n







a











i


,


j





















=








(


i




×








j


)








mod












n





就好了,因为:





r

1

c

1

+

r

2

c

2

r

1

c

2

+

r

2

c

1

(

m

o

d

n

)

r

1

(

c

1

c

2

)

r

2

(

c

1

c

2

)

(

m

o

d

n

)

r

1

r

2

(

m

o

d

n

)

\begin{aligned} & r_1c_1 + r_2c_2 \equiv r_1c_2 + r_2c_1 \pmod n \\ \to & r_1(c_1 – c_2) \equiv r_2(c_1 – c_2) \pmod n \\ \to & r_1 \equiv r_2 \pmod n \end{aligned}




























































r










1



















c










1




















+





r










2



















c










2


























r










1



















c










2




















+





r










2



















c










1






















(




mod






n


)











r










1


















(



c










1


























c










2


















)










r










2


















(



c










1


























c










2


















)






(




mod






n


)











r










1


























r










2






















(




mod






n


)






















显然这是不可能的,所以就这样构造就好了。



T6 CF1733C



T7 AGC058A



题目大意

给定一个



1

2

n

1 \sim 2n






1













2


n





的排列



p

p






p





,你可以交换相邻的两个数至多



n

n






n





次,使得数列满足:





i

i






i





为奇数,则



p

i

<

p

i

+

1

p_i < p_{i + 1}







p










i




















<









p











i


+


1






















,反之



p

i

>

p

i

+

1

p_i > p_{i + 1}







p










i




















>









p











i


+


1





















要求构造出操作序列。



分析

观察到最大的数必须在偶数位上。于是若最大的数不在偶数位上,将其左/右移一位。然后对于其分隔开的左右区间递归处理即可。我们只对偶数位进行操作,所以次数不超过



𝑛

𝑛






n





。也能保证偶数位的数是大于两边的数的,因为每个偶数位放的都是当前区间最大的数。



版权声明:本文为ID246783原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。