[ Nowcoder Contest 167 #C ] 部分和
\(\\\)
\(Description\)
给出一个长度为\(N\)的数组\(A[i]\),保证\(N\)为 \(2\) 的整次幂。
对于每个 \(i\ (i\in [0,N))\)求所有满足\((i\ \&\ j) == j\) 的\(A[j]\)之和。
- \(N\in [1,2^{20}]\),\(A[i]\in [1,10^3]\)。
\(\\\)
\(Solution\)
考虑每一个\(i\)的答案。
将 \(i\) 按照二进制位分解,那么它的答案就是所有子集的答案。
换句话说,设一共有\(K\)个二进制位,建立数组 \(f[2][2][2][2]....[2]\)分别表示每一位的情况,那么有
\]
此时\(A\)数组的下标是将原来的十进制数按二进制位分解得到的数。
我们发现这是一个\(K\)维前缀和,因为它是一个子集求和。
然后题解就安利了一个“快速莫比乌斯变换”,其实是另一种高维求前缀和的方法。
一般求二维前缀和我们都是容斥做法,其实还可以每一行先求和,每一列再求和。
这个一样,从低到高按位求和即可,注意只会加上当前一位不同的答案,因为前面固定,后面更小的子集已经在当前要加的对象上累加过一次了。
因为只有两个数所以直接压成一维即可。
\(\\\)
\(Code\)
#include<cmath>
#include<cstdio>
#include<cctype>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 1<<21
#define R register
#define gc getchar
using namespace std;
typedef long long ll;
ll n,lim,a[N];
inline ll rd(){
ll x=0; bool f=0; char c=gc();
while(!isdigit(c)){if(c=='-')f=1;c=gc();}
while(isdigit(c)){x=(x<<1)+(x<<3)+(c^48);c=gc();}
return f?-x:x;
}
int main(){
n=rd();
lim=min(20ll,(ll)log2(n)+1);
for(R int i=0;i<n;++i) a[i]=rd();
for(R int i=0;i<=lim;++i){
ll now=1<<i;
for(R int j=0;j<n;++j)
if(j&now) a[j]+=a[j^now];
}
for(R int i=0;i<n;++i) printf("%lld\n",a[i]);
return 0;
}
[ Nowcoder Contest 167 #C ] 部分和的更多相关文章
- [ Nowcoder Contest 167 #D ] 重蹈覆辙
\(\\\) \(Description\) 用\(1\times 2\)的矩形和面积为\(3\)的\(L\)形去覆盖一个\(2\times N\) 的矩形,求方案数对\(10^4+7\)取模后的结果 ...
- 「NowCoder Contest 295」H. Playing games
还是见的题太少了 「NowCoder Contest 295」H. Playing games 题意:选出尽量多的数使得异或和为$ 0$ $ Solution:$ 问题等价于选出尽量少的数使得异或和为 ...
- Nowcoder contest 370B Rinne Loves Graph 【分层图最短路】
<题目链接> 题目大意: Island 是有一些奇怪的城镇和道路构成的(题目需要,游戏党勿喷),有些城镇之间用双向道路连接起来了,且每条道路有它自己的距离.但是有一些城镇已经被派兵戒严,虽 ...
- Nowcoder contest 370H Rinne Loves Dynamic Graph【分层图最短路】
<题目链接> 题目大意:Rinne 学到了一个新的奇妙的东西叫做动态图,这里的动态图的定义是边权可以随着操作而变动的图.当我们在这个图上经过一条边的时候,这个图上所有边的边权都会发生变动. ...
- Nowcoder contest 370F Rinne Loves Edges (简单树形DP) || 【最大流】(模板)
<题目链接> 题目大意: 一个 $n$ 个节点 $m$ 条边的无向连通图,每条边有一个边权 $w_i$.现在她想玩一个游戏:选取一个 “重要点” S,然后选择性删除一些边,使得原图中所有除 ...
- Nowcoder contest 392 I 逛公园 (无向图割边模板)
<题目链接> 题目描述: 月月和华华一起去逛公园了.公园很大,为了方便,可以抽象的看成一个N个点M条边的无向连通图(点是景点,边是道路).公园唯一的入口在1号点,月月和华华要从这里出发,并 ...
- [nowcoder]contest/172/C保护
C国有n个城市,城市间通过一个树形结构形成一个连通图.城市编号为1到n,其中1号城市为首都.国家有m支军队,分别守卫一条路径的城市.具体来说,对于军队i,他守卫的城市区域可以由一对二元组(xi,yi) ...
- [ Nowcoder Contest 175 #B ] 区间
\(\\\) \(Description\) 给出一个长度为\(N\)的序列\(A[1]...A[N]\),定义一个合法区间 \([L,R]\) 当且仅当区间\(GCD\) 在这个区间内,求最长合法区 ...
- [ Nowcoder Contest 165 #D ] 合法括号序列
\(\\\) \(Description\) 键盘上有三个键,敲击效果分别是: 在输出序列尾部添加一个左括号 在输出序列尾部添加一个右括号 删除输出序列尾部的第一个元素,若输出序列为空,则什么都不发生 ...
随机推荐
- css3 模拟标牌震荡效果
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- pycharm下运行和调试scrapy项目
1. 新建项目 默认在本地已经新建了一个scrapy爬虫项目 2. 打开项目 点击open à 选择刚刚那个本地的scrapy项目meijutt100 3. 项目结构 各个py文件的作用不作介绍,不懂 ...
- Chrom开发者工具详解
Chrome开发者工具不完全指南(一.基础功能篇) http://www.mamicode.com/info-detail-863534.html Chrome开发者工具不完全指南(二.进阶篇) ht ...
- centos 7 静态IP,指定DNS
cd /etc/sysconfig/network-scripts/ 找到对应的网卡,配置并编辑 ls -l vim ifcfg-em1 配置例子: TYPE="Ethernet" ...
- 第二十七篇:Windows驱动中的PCI, DMA, ISR, DPC, ScatterGater, MapRegsiter, CommonBuffer, ConfigSpace
近期有些人问我PCI设备驱动的问题, 和他们交流过后, 我建议他们先看一看<<The Windows NT Device Driver Book>>这本书, 个人感觉, 这本书 ...
- chorme requestBody
https://stackoverflow.com/questions/18534771/chrome-extension-how-to-get-http-response-body Chrome w ...
- Codeforces Beta Round #2 B. The least round way
这个2B题还好~~ 题目大意: 给出一个矩阵.从左上走到右下,仅仅能往右或下走.路径中每一个格子有一个数.这些数相乘得出一个数. 求这个数末尾零最少的一条路径. 解题思路: 找出一条路径.乘积得数中素 ...
- 20170626_oracle_数据库设计
数据库设计的定义:规划数据库中数据对象以及之间关系的过程. 为什么进行数据库设计? 空间 完整性 程序开发 数据库设计前提知识: 范式: 1NF:第一范式 第一范式的目标是确保每列的原子性 如果每列都 ...
- css3 3d特效汇总
本篇全是实战,没有基础,如果不明白3d特效的原理,可能会看不懂,不过没关系,给你推荐一下 张鑫旭css3 3d转换,或者看我的另一篇博客 css3 2d转换3d转换以及动画的知识点汇总,看完这些3d ...
- RK3288的gpio设置【转】
本文转载自:http://blog.csdn.net/keleming1/article/details/51034766 转http://www.360doc.com/content/14/1227 ...