#贪心#CF1054D Changing Array】的更多相关文章

因为数据范围是2e5级别的,所以我们考虑用异或前缀和来处理区间的异或情况.(比如说a包括b,那么我们通过异或可以知道b对于a的补区间的信息) 之后因为对任意\(a_i\)进行取反操作,会改变它和它之后的区间值(原来相等的都不相等了,原来不相等的都相等了),所以结果是我们对原先的前缀和直接取反,就可以表示对它进行取反操作之后的前缀和了. 因为不管怎么取反操作,一个位置的前缀和只有两种,那么我们显然就可以预处理出所有的值了. 然后我们可以把相同类别的放在一个map里面.(注意要避免重复,比如说010…
[题目] D. Changing Array [描述] 给n个整数a[1],...,a[n],满足0<=a[i]<=2^k-1.Vanya可以对这n个数中任一多个数进行操作,即将x变为x',其中x'指x限制在k位内二进制取反.问a[1],...,a[n]中最多有多少个连续子段的异或和不为0. 数据范围:1<=n<=200000,1<=k<=30 [思路] 为了叙述方便,记MAX=(1<<k)-1,即二进制下k位全是1的数. 为了符号表示不产生歧义,以下使用^…
题意 给一个长度为\(n\)的位数为\(k\)的整数数列\(a\),一次操作可将任意\(a_i\)取反,问经过任意次操作后最多有多少个区间异或和不为\(0\) 分析 求出前缀异或和,区间异或和为\(0​\)的区间数转化为求有多少对前缀异或和相等,然后用总区间数减一下, 对一个\(a_i​\)取反等同于对这个位置的前缀异或和取反,所以每个位置的前缀异或和有两种,贪心取当前值出现次数最小的一种, 总区间数为\(n*(n+1)/2​\) ,对于每个非\(0​\)数字减去\(C(x,2)​\),\(x​…
题目:戳这里 题意:两个数n,k,满足给的n个数小于2的k次方.每个数可以进行一次操作,即把a[i]换成a[i]^(1<<k-1);求最多的连续区间数使得 区间[L,R] (1<=L<=R<=n),满足: a[L] ^ a[L+1] ^ - ^ a[R-1] ^ a[R] != 0 解题思路: 首先我们知道n个数可构成的连续区间是n*(n+1)/2个,如果一个一个找肯定会超时,需要一种能快速算出[L,R]区间异或和的方法.因为异或满足交换法则.所以a[1]^a[2]^...^…
传送门 分析 我们可以对一个数列求前缀和,如果pre[l]=pre[r]则我们可以知道区间[l,r]一定不合法 于是我们就要让不合法的区间尽量少 我们知道对于一个数$x$,他只受x和$(2^k-1)$^$k$有关 而根据小学奥数所学,当这两个数字的数量最接近是答案最优 详见代码 代码 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algor…
因为本蒻实在太蒻了...对于即将到来的NOIP2018ssfd,所以下决心要把自己近期做过的题目(衡量标准为洛谷蓝题难度或以上)整理一下,归归类,简单地写一下思路,就当作自己复习了吧qwq 本随笔持续更新,自2018.9.19开始,计划更新到2018NOIP截止 (但是因为最近写的比赛题比较多..但是没有办法把这些题放上来..所以只能放上主流OJ上面有的题) 如果本蒻今年有幸没有AFO掉,flag先里在这里--之后学省选知识点的时候会重开一贴更新的,到时候希望是更有难度的题目吧. 搜索 [NOI…
搜索 [NOIP2013]华容道 最短路+带剪枝的搜索,是一个思维难度比较大的题目. CF1064D Labyrinth 考虑贪心,用双向队列bfs [NOIP2017]宝藏 剪枝搜索出奇迹 题解:https://www.cnblogs.com/fengxunling/p/9777606.html luogu 有趣的数 [ZJOI2007] 时态同步 [NOIP2002] 矩形覆盖 这题数据太水... 题解:https://www.cnblogs.com/fengxunling/p/984161…
https://www.forescout.com/products/counteract/see/visibility-capabilities/ Home ≫ Products ≫ ForeScout CounterACT® ≫ SEE ≫ See Capabilities* See Capabilities*   Device Information   Device type (printer, wireless network device, laptop, etc.) Device…
1.创建数组array # 创建数组array import numpy as np a = np.array([1,2,3]) #创建数组 b = np.array([(1.5,2,3), (4,5,6)], dtype=float) c = np.array([(1.5,2,3), (4,5,6)], [(3,2,1), (4,5,6) ] ], dtype=float) np.zeros((3,4)) #创建0数组 np.ones((2,3,4), dtype=np.int16) #创建1…
A. Elevator or Stairs? 签. #include <bits/stdc++.h> using namespace std; ]; int main() { while (scanf("%d%d%d", &x, &y, &z) != EOF) { ; i < ; ++i) scanf("%d", t + i); ] + * t[]; ]; puts(a <= b ? "YES" :…