#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
#define maxn 100005
#define maxk 256
int n,type,ans,sum,a[maxn],f[maxk][maxk],g[maxk][maxk];
bool v[maxk];
char st[];
void read(int &x){
x=; int f=; char ch;
for (ch=getchar();!isdigit(ch);ch=getchar()) if (ch=='-') f=-;
for (;isdigit(ch);ch=getchar()) x=x*+ch-''; x*=f;
}
int hs(int x,int y){
if (st[]=='o') return x|y;
if (st[]=='a') return x&y;
if (st[]=='x') return x^y;
}
int main(){
read(n),scanf("%s",st+),read(type);
for (int i=;i<=n;i++) read(a[i]);
for (int i=;i<=n;i++){
int k=a[i]&;
if (i>){
sum=ans=;
for (int j=;j<;j++){
if (g[j][k]==) continue;
if ((f[j][k]|(hs(j,a[i]>>)<<))==ans) sum+=g[j][k];
if ((f[j][k]|(hs(j,a[i]>>)<<))>ans) ans=f[j][k]|(hs(j,a[i]>>)<<),sum=g[j][k];
}
if (type==) printf("%d %d\n",ans,sum);
else printf("%d\n",ans);
}
for (int j=;j<;j++){
if (f[a[i]>>][j]==hs(j,k)) g[a[i]>>][j]++;
if (f[a[i]>>][j]<hs(j,k)) f[a[i]>>][j]=hs(k,j),g[a[i]>>][j]=;
}
}
return ;
}

题目链接:http://begin.lydsy.com/JudgeOnline/problem.php?id=3014。

题目大意:给定一种运算,为or,ans,xor中的一种,以及一个长度为n的序列,第i个数为ai,我们设第i个人与第j个人的友好度为ai与aj位运算,这种位运算是题目给定的,求第2个人到第n个人与其左边的人友好程度的最大值及达到该最大值的方案数。n<=100000;ai<=2^16;

做法:如果考虑暴力做,因为ai小于等于2^16,所以暴力做可以做到加入O1,而查询O(2^16),显然是不可以的,然而O(2^8*n)是可以过此题的,根据莫队算法的思想,我可以平衡这种暴力,使得两种操作都达到根号n的复杂度。

正解:我们考虑DP,设f[i][j]表示前8位为i,后8位为j位运算后使得后8位的最大值及方案数,怎么做呢,我们在加入一个数时,我们枚举j,设该数前8位为a,后8位为b,我们用j~b(~表示位运算)来更新f[a][j],查询时,设该数前8位为a,后8位为b,我们可以枚举i用f[i][b]|((i~a)<<8)更新答案即可,复杂度为O(2^8*n)。

dp。

[Noi2016十连测第五场]二进制的世界的更多相关文章

  1. [Noi2016十连测第三场]线段树

    #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...

  2. Problem C: [noip2016十连测第五场]travel (构造+贪心)

    题面 https://www.lydsy.com/JudgeOnline/upload/201610/statements(1).pdf 题解 好神仙的贪心-- 首先无解的情况很容易判断,就是\(l= ...

  3. NOI十连测 第五测 T2

    思路:考虑建立可持久化线段树,第一层维护的是i这个位置的next位置,第二层,维护的是接下来走这个字符会到哪个节点. 感觉很巧妙啊,不愧是Claris #include<algorithm> ...

  4. NOI十连测 第五测 T1

    #include<cstdio> #include<cstring> #include<cmath> #include<iostream> #inclu ...

  5. 【正睿oi省选十连测】第一场

    四小时写了两个暴力??自闭 [原来这就是神仙们的分量Orz rank 56/75 可以说是无比垃圾了 下周目标:进步十名?[大雾 T1 题意:有n个点的图 点有点权Ai 也有点权Bi = A_1 + ...

  6. ZROI2019 提高十连测

    额 掰手指头一数 特么又是第三年十连测了= = 2017一场没打 那时候好像一场比赛也就100人左右 2018前几场还都好好补了 后来开始放飞自我了 这时候一场有150人还多了 2019想让今年的No ...

  7. # NOI.AC省选赛 第五场T1 子集,与&最大值

    NOI.AC省选赛 第五场T1 A. Mas的童年 题目链接 http://noi.ac/problem/309 思路 0x00 \(n^2\)的暴力挺简单的. ans=max(ans,xor[j-1 ...

  8. HDU(4528),BFS,2013腾讯编程马拉松初赛第五场(3月25日)

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=4528 小明系列故事——捉迷藏 Time Limit: 500/200 MS (Java/O ...

  9. noi.ac 第五场第六场

    t1应该比较水所以我都没看 感觉从思路上来说都不难(比牛客网这可简单多了吧) 第五场 t2: 比较套路的dp f[i]表示考虑前i个数,第i个满足f[i]=i的最大个数 i能从j转移需要满足 j< ...

随机推荐

  1. 030医疗项目-模块三:药品供应商目录模块——供货商药品目录查询功能----------Dao层:基本的查询语句的编写

    我们安装显示的要求: 我们能看到显示的目录里面有:供货企业的名字(这个数据来自于供货商的表[usergys]),流水号,通用名,剂型(这些都来自药品信息表),供货的状态(这个呢在gysypml_con ...

  2. 通用权限管理系统多语言开发接口 - java,php 调用接口程序,多业务子系统集成

    1:公司里有多个业务系统,需要进行统一重构,有PHP的.有Java的.有.NET的,甚至还有delphi的. 2:公司里有多个数据库系统,有mysql的.有sqlserver的.还有oracel的,甚 ...

  3. xenserver磁盘扩容扩不大问题解决

    http://www.osyunwei.com/archives/7956.html xenserver将磁盘扩大后,fdisk可以看到容量大了 但是df -h确实没大?   解决: fdisk /d ...

  4. Linux 网络编程详解十二

    UDP的特点 --无连接 --基于消息的数据传输服务 --不可靠 --UDP更加高效 UDP注意点 --UDP报文可能会丢失,重复 --UDP报文可能会乱序 --UDP缺乏流量控制(UDP缓冲区写满之 ...

  5. jboss:在standalone.xml中设置系统属性(system-properties)

    就象在.net的web应用中,可以在web.config中设置appSettings一样,jboss的standalone.xml中也可以由开发人员自行添加系统属性,用法如下: </extens ...

  6. bootstrap的popover插件在focus模式时在Safari浏览器无法使用的bug解决方案

    前言 最近在使用bootstrap的popover插件,效果如下: popover插件的focus模式时表现为当点击按钮时弹出浮动层,在点击浮动层外的任何一处,都隐藏浮动层. 但是在mac下的Safa ...

  7. ModernUI教程:目录 (完结)

    入门 My first Modern UI app (manually)                         第一个ModernUI应用(手动编写)(已完成) My first Moder ...

  8. js单选和复选框

    http://blog.csdn.net/chelen_jak/article/details/44827393 http://www.gbtags.com/technology/jquerynews ...

  9. MATLAB中subplot的用法

    写成subplot(m,n,p)或者subplot(mnp). subplot是将多个图画到一个平面上的工具.其中,m表示是图排成m行,n表示图排成n列,也就是整个figure中有n个图是排成一行的, ...

  10. 服务端JavaScript之Rhino

    最近在看js的书,书上有介绍两个服务端js,以前只听说过node.js,第一次听说Rhino.js,并且已经集成到了jdk1.6;看来还是见的少啊! Rhino是一种用Java编写的javaScrip ...