2019上海网络赛B_Light bulbs_算法日常[25/100]
题目链接
题意
给你一排N个全灭的灯泡,然后进行M次区间翻转,T组测试
- 1≤T≤1000
- 1≤N≤$10^6$
- 1≤M≤1000
- 0≤$L_i$ ≤$R_i$ ≤N−1
题解
- 因为是多次区间修改,然后求区间的特性,我们可以很自然地想到使用差分+前缀和或者线段树
- 不过这里发现8192K,N为$10^6$,$10^6$的int是4*$10^6$Byte=4*$10^3$K.然后线段树要开两倍N(节点2*N),而且一般是一个struct结构(一般几个int),而非一个int,所以线段树否决
- 然后求前缀和O(T*N)在$10^9$量级,时间限制为1s,所以我们要观察M在1000的量级,所以可以通过离散化来解决
- 注意,这题超级卡时间,所以使用快读(独立缓冲的cin T了)以及各位置用完及时归0而非使用memset
AC代码
1 |
|
每天一句叨叨
人生总有很多东西无法挽留,比如走远的时光,比如枯萎的情感;总有很多东西难以割舍,比如追逐的梦想,比如心中的深爱。所以你一定要珍惜眼前。