HDU 6186 CS Course 前缀和,后缀和
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6186
题意:给了n个数,然后有q个查询,每个查询要求我们删掉一个数,问删掉这个数后整个序列的与值,或值,异或值的和。
解法:
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5+5;
int n, m, a[maxn], sum1[maxn][2], sum2[maxn][2], sum3[maxn][2]; int main()
{
while(~scanf("%d %d", &n,&m))
{
for(int i=1; i<=n; i++) scanf("%d", &a[i]);
sum1[1][0] = sum2[1][0] = sum3[1][0] = a[1];
for(int i=2; i<=n; i++){
sum1[i][0] = sum1[i-1][0]&a[i];
sum2[i][0] = sum2[i-1][0]|a[i];
sum3[i][0] = sum3[i-1][0]^a[i];
}
sum1[n][1] = sum2[n][1] = sum3[n][1] = a[n];
for(int i=n-1; i>=1; i--){
sum1[i][1] = sum1[i+1][1]&a[i];
sum2[i][1] = sum2[i+1][1]|a[i];
sum3[i][1] = sum3[i+1][1]^a[i];
}
while(m--)
{
int idx;
scanf("%d", &idx);
int ans = INT_MAX;
if(idx > 1) ans &= sum1[idx-1][0];
if(idx < n) ans &= sum1[idx+1][1];
printf("%d ", ans);
ans = 0;
if(idx > 1) ans |= sum2[idx-1][0];
if(idx < n) ans |= sum2[idx+1][1];
printf("%d ", ans);
ans = 0;
if(idx > 1) ans ^= sum3[idx-1][0];
if(idx < n) ans ^= sum3[idx+1][1];
printf("%d\n", ans);
}
}
return 0;
}
HDU 6186 CS Course 前缀和,后缀和的更多相关文章
- HDU 6186 CS Course【前后缀位运算枚举/线段树】
[前后缀枚举] #include<cstdio> #include<string> #include<cstdlib> #include<cmath> ...
- HDU 6186 CS Course(前缀+后缀)
http://acm.hdu.edu.cn/showproblem.php?pid=6186 题意:给出n个数,共有n次询问,每次询问给出一个数p,求除去第p个数后的n-1个数的&.|.^值. ...
- HDU 6186 CS Course
保存前缀后缀. 保存一下前缀和后缀,去掉第$i$个位置,就是$L[i-1]$和$R[i+1]$进行运算. #include<bits/stdc++.h> using namespace s ...
- HDU 6186 CS Course (连续位运算)
CS Course Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- A + B for you again HDU - 1867(最大前缀&最大后缀的公共子缀&kmp删除法)
Problem Description Generally speaking, there are a lot of problems about strings processing. Now yo ...
- HDU6025 Coprime Sequence —— 前缀和 & 后缀和
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6025 Coprime Sequence Time Limit: 2000/1000 MS (Java/ ...
- kmp(最长前缀与后缀)
http://acm.hdu.edu.cn/showproblem.php?pid=1358 Period Problem Description For each prefix of a given ...
- 递归算法(二)——前缀转后缀
源码:pretopost.cpp #include "stdafx.h" #include <stdio.h> #include <stack> /**** ...
- POJ 2752 Seek the Name, Seek the Fame (KMP的next函数,求前缀和后缀的匹配长度)
给一个字符串S,求出所有前缀,使得这个前缀也正好是S的后缀.升序输出所有情况前缀的长度.KMP中的next[i]的意义就是:前面长度为i的子串的前缀和后缀的最大匹配长度.明白了next[i],那么这道 ...
随机推荐
- 前端基础:JavaScript BOM对象
JavaScript BOM对象 JavaScript Window - 浏览器对象模型 浏览器对象模型(BOM)使JavaScript有能力与浏览器"对话". 浏览器对象模型(B ...
- Openstack keystone组件详解
OpenStack Keystone Keystone(OpenStack Identity Service)是 OpenStack 框架中负责管理身份验证.服务规则和服务令牌功能的模块.用户访问资源 ...
- BZOJ5300:[CQOI2018]九连环——题解
一种打表的方法,适用于知道如何解九连环的人. 我们知道,解九(n)连环必须先解第九(n)环,然后解八(n-1).七(n-2)-- 根据这个我们飞快的写出了一个递推式,设\(f[i]\)为\(i\)连环 ...
- BZOJ1040:[ZJOI2008]骑士——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=1040 题面大意:n个人有一个价值和一个最恨的人,现在组出一个队伍使得价值最大且没有仇恨关系. ——— ...
- [zhuan]Dalvik 分析 - Class加载篇
http://blog.csdn.net/zhangyun438/article/details/17192787 内容如下: Java 源代码经过编译后会生成后缀为class的文件,也即字节码文件. ...
- C#学习之泛型
//主函数//主函数里面调用的类都在后面有具体描述 using System; using System.Collections.Generic; using System.Linq; using S ...
- POJ 2976 二分
Dropping tests Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12515 Accepted: 4387 D ...
- SDUT 3930 线段树
皮卡丘的梦想2 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 一天,一只住在 501 实验 ...
- HDU 3586 树形dp
Information Disturbing Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/ ...
- [freemarker篇]05.关于集合的遍历
人啊,有的时候就是没有办法坚持一些事情,总是因为各种理由在推脱,逐渐就变成了拖延症!例如胖先生的减肥计划,其实本来就没有计划,属于散漫形式的!一直减肥,一直在肥!总是说没有时间,没有时间!其实有时候就 ...