1054D&EZOJ #93 Changing Array】的更多相关文章

传送门 分析 我们可以对一个数列求前缀和,如果pre[l]=pre[r]则我们可以知道区间[l,r]一定不合法 于是我们就要让不合法的区间尽量少 我们知道对于一个数$x$,他只受x和$(2^k-1)$^$k$有关 而根据小学奥数所学,当这两个数字的数量最接近是答案最优 详见代码 代码 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algor…
[题目] 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]^...^…
因为数据范围是2e5级别的,所以我们考虑用异或前缀和来处理区间的异或情况.(比如说a包括b,那么我们通过异或可以知道b对于a的补区间的信息) 之后因为对任意\(a_i\)进行取反操作,会改变它和它之后的区间值(原来相等的都不相等了,原来不相等的都相等了),所以结果是我们对原先的前缀和直接取反,就可以表示对它进行取反操作之后的前缀和了. 因为不管怎么取反操作,一个位置的前缀和只有两种,那么我们显然就可以预处理出所有的值了. 然后我们可以把相同类别的放在一个map里面.(注意要避免重复,比如说010…
PHP学习笔记 - 入门篇(5) 语言结构语句 顺序结构 eg: <?php $shoesPrice = 49; //鞋子单价 $shoesNum = 1; //鞋子数量 $shoesMoney = $shoesPrice * $shoesNum; $shirtPrice = 99; //衬衣单价 $shirtNum = 2; //衬衣数量 $shirtMoney = $shirtPrice * $shirtNum; $orderMoney = $shoesMoney + $shirtMoney…
如果你的SQLSERVER安装在C盘的话,下面的路径就是相应SQLSERVER版本的公用DLL的存放路径 SQL2005 C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies\ SQL2008 C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies\ SQL2012 C:\Program Files\Microsoft SQL Server\110\SDK\Assemblies\…
APP注册需要手机号码的时候,如果有在其他国家的时候需要填写手机区号 一份有国家名字和区号的plist 参照微信注册的时候 格式是 <Array> <Array> <Array> <String>国家名字1</String> <String>手机区号1</String> </Array> <Array> <String>国家名字2</String> <String>…
/******************************************************************* *输出全国各省辖市下拉列表项writeCitys() *输出企业性质下拉列表项writeProperity() *输出工作岗位类别下拉列表项writeJobs() *输出行业类别下拉列表项writeCalling() *输出学历下拉列表项writeDegree() *输出更新时间下拉列表项writeUpdateDate() *Date:2004-06-28 *…
1. 打开app\Http\Kernel.php,找到StartSession的位置.这里要说一下,middleware中的中间件是都会被执行的,但执行的顺序我不知道,还需看源码来实现 protected $middleware = [ \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cook…