noi.ac#309 Mas的童年(子集乱搞)】的更多相关文章

题意 题目链接 Sol 记\(s_i\)表示前\(i\)个数的前缀异或和,我们每次相当于要找一个\(j\)满足\(0 < j < i\)且\((s_i \oplus s_j) + s_j\)最大 然后下面的就和标算相差十万八千里了. \[ \begin{aligned} &(s_i \oplus s_j) + s_j\\ =&(s_i \oplus s_j \oplus s_j) + ((s_i \oplus s_j) \& s_j )\\ =&(s_i + (…
/* 用所谓的加法拆分操作得到 x + y = (x ^ y) + 2 * (x & y) 那么我们这两段异或相当于前缀和 + 2 * 分段使左右两块&最大 记当前前缀异或和为S, 那么我们要找到优秀的X最大化(S^X) & X 显然贪心可行, 插入的时候维护当前数字所有子集, 打个vis标记, 就能快速查询了 */ #include<cstdio> #include<algorithm> #include<cstring> #include&l…
题面 传送门 思路 这题其实蛮好想的......就是我考试的时候zz了,一直没有想到标记过的可以不再标记,总复杂度是$O(n)$ 首先我们求个前缀和,那么$ans_i=max(pre[j]+pre[i]$ $xor$ $pre[j])$ 考虑对于每个$pre[i]$,一个$pre[j]$在经过上述运算后增加的值 发现可以每一位拆开来考虑 那么有四种情况:$(p_i,p_j)=(0,0),(0,1),(1,0),(1,1)$ 只有当$pre[i]$本位为0,$pre[j]$本位为1的时候,这一位会…
#309. Mas的童年 链接 分析: 求$max \{sj + (s_i \oplus s_j)\}$ 因为$a + b = a \oplus b + (a \& b) \times 2$ 那么就是求一个j,使得$(s_i \oplus s_j) \& s_j$最大. 而“异或后再与”这两步运算合起来,只有原来是$s_i$的这位是0,$s_j$的这位是1才可以最后是1. 那么就可以把i前面的所有$s_j$标记为出现过,以及这些$s_j$的子集. 然后将$s_i$中0的位置取出,从高位枚举…
NOI.AC省选赛 第五场T1 A. Mas的童年 题目链接 http://noi.ac/problem/309 思路 0x00 \(n^2\)的暴力挺简单的. ans=max(ans,xor[j-1]+xor[j-1]^xor[i]); 01trie树求最大异或和相信大家都会.不会看这里. 这与我们今天这个题目有关吗? 毫无关系. xor[i]的某一位为1,xor[j]的那一位不管是啥,贡献都是为1. 而xor[i]的某一位为0,xor[j]的贡献是2或0.(xor[j]位上为1贡献为2) (…
题目传送门:http://noi.ac/problem/31 一道思路好题考虑模拟$Kruskal$的加边方式,然后能够发现非最小生成树边只能在一个已经由边权更小的边连成的连通块中,而树边一定会让两个连通块合为一个,故考虑以连通块为切入点设计$DP$设字符串$s_1s_2s_3...s_i,s_1 \geq s_2 \geq s_3 \geq ... \geq s_i$表示某一个图中各个连通块的大小(可以发现我们只关心连通块有多大,但不关心连通块内具体有哪些点,因为当所有连通块大小一一对应的时候…
NOI.AC NOIP模拟赛 第五场 游记 count 题目大意: 长度为\(n+1(n\le10^5)\)的序列\(A\),其中的每个数都是不大于\(n\)的正整数,且\(n\)以内每个正整数至少出现一次. 对于每一个正整数\(k=1,..,n+1\),求出的本质不同的长度为\(k\)的子序列的数量.对\(10^9+7\)取模. 思路: 由于只会有一个数会重复,因此考虑重复的这个数取\(0\)个.\(1\)个和\(2\)个的情况,用组合数直接算即可. 源代码: #include<cstdio>…
NOI.AC NOIP模拟赛 第六场 游记 queen 题目大意: 在一个\(n\times n(n\le10^5)\)的棋盘上,放有\(m(m\le10^5)\)个皇后,其中每一个皇后都可以向上.下.左.右.左上.左下.右上.右下这\(8\)个方向移动.其中每一个皇后可以攻击这八个方向上离它最近的皇后. 求有多少皇后被攻击到\(0,1,\ldots,8\)次. 保证\(m\)个皇后中任意两个不在同一个位置. 思路: 考虑左右方向的攻击,对每一行开一个set,按列编号插入,看一下是否存在前驱/后…
NOI.AC NOIP模拟赛 第二场 补记 palindrome 题目大意: 同[CEOI2017]Palindromic Partitions string 同[TC11326]ImpossibleGame…
NOI.AC NOIP模拟赛 第一场 补记 candy 题目大意: 有两个超市,每个超市有\(n(n\le10^5)\)个糖,每个糖\(W\)元.每颗糖有一个愉悦度,其中,第一家商店中的第\(i\)颗糖果的愉悦度为\(A_i\),而第二家商店中的第\(i\)颗糖果的愉悦度为\(B_i\). 在每家商店买的糖果会被打包到一个袋子中(可以在一家商店什么都不买,此时认为这家商店的袋子为空).因为这两个袋子外观是一样的,所以会从两个袋子中随机选择一个,然后吃光里面的糖果.定义一种买糖果的方案的愉悦度为:…