正题

题目链接:https://jzoj.net/senior/#main/show/3889


题目大意

一个序列nnn,求两个集合S,T∈[1..n]S,T\in[1..n]S,T∈[1..n]使得ax(x∈S)a_x(x\in S)ax​(x∈S)的xorxorxor和就是ay(y∈T)a_y(y\in T)ay​(y∈T)的andandand和,且x<y(x∈S,y∈T)x<y(x\in S,y\in T)x<y(x∈S,y∈T),求集合对数。


解题思路

就是把其分成两部分,然后段的andandand和异或前半段为000。
设fi,j,0/1/2f_{i,j,0/1/2}fi,j,0/1/2​。000表示前面的都没选择,111表示到目前的andandand和为jjj,222表示到目前andandand的异或的和。

然后要用高精度。


codecodecode

#pragma GCC optimize(2)
%:pragma GCC optimize(3)
%:pragma GCC optimize("Ofast")
%:pragma GCC optimize("inline")
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1100,W=1024,P=42,p=1e9;
struct Big_int{int a[P];
}f[2][W][3];
int n,a[N];
void Add(Big_int &a,Big_int &b)
{int g=0;for(int i=0;i<P;i++){a.a[i]+=b.a[i]+g;g=a.a[i]/p;a.a[i]%=p;}return;
}
void print(Big_int a){int w=P;while(w&&!a.a[--w]);printf("%d",a.a[w]);while(w){w--;printf("%09d",a.a[w]);}
}
int main()
{//printf("%d",sizeof(f)/1024);scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a[i]);f[~n&1][W-1][0].a[0]=1;for(int i=n;i>=1;i--){memset(f[i&1],0,sizeof(f[i&1]));for(int j=0;j<W;j++){Add(f[i&1][j][0],f[~i&1][j][0]);Add(f[i&1][j][1],f[~i&1][j][1]);Add(f[i&1][j][2],f[~i&1][j][2]);Add(f[i&1][j&a[i]][1],f[~i&1][j][0]);Add(f[i&1][j&a[i]][1],f[~i&1][j][1]);Add(f[i&1][j^a[i]][2],f[~i&1][j][1]);Add(f[i&1][j^a[i]][2],f[~i&1][j][2]);}}print(f[1][0][2]);
}

jzoj3889-序列问题【dp,高精度】相关推荐

  1. poj 1205 :Water Treatment Plants (DP+高精度)

    题意:有n个城市,它们由一个污水处理系统连接着,每个城市可以选择 1.将左边城市过来的污水和右边城市过来的污水连同本身的污水排到河里  >V< 2.将左边来的污水连同自己的污水排到右边   ...

  2. 编程之美2015资格赛 题目2 : 回文字符序列 [ 区间dp ]

    传送门 题目2 : 回文字符序列 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给定字符串,求它的回文子序列个数.回文子序列反转字符顺序后仍然与原序列相同.例如字符串ab ...

  3. FJUT Home_W的拆分序列(DP)题解

    Problem Description Home 现在给你一个序列要求你将这个序列拆成恰好两个子序列.且使得两个子序列的抖动系数之和最大. 对于一个序列c1,c2,c3,--cm. 其抖动系数=|c1 ...

  4. 2021牛客暑期多校训练营4 D-Rebuild Tree(prufer序列+树形dp)

    D-Rebuild Tree Prufer 是这样建立的:每次选择一个编号最小的叶结点并删掉它,然后在序列中记录下它连接到的那个结点.重复n−2n-2n−2次后就只剩下两个结点,算法结束.(为什么不是 ...

  5. [luoguP1005] 矩阵取数游戏(DP + 高精度)

    传送门 和奶牛那个题很像,每一行状态互不影响,也就是求 n 遍DP 不过高精度非常恶心,第一次写,调了我一上午. --代码 1 #include <cstdio> 2 #include & ...

  6. 题目2 : 回文字符序列(区间DP)

    时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给定字符串,求它的回文子序列个数.回文子序列反转字符顺序后仍然与原序列相同.例如字符串aba中,回文子序列为"a& ...

  7. NYOJ-单调递增最长子序列(dp)

    单调递增最长子序列 描述: 求一个字符串的最长递增子序列的长度 如:dabdbf最长递增子序列就是abdf,长度为4 输入: 第一行一个整数0<n<20,表示有n个字符串要处理 随后的n行 ...

  8. bzoj 1049: [HAOI2006]数字序列(DP+DP)

    1049: [HAOI2006]数字序列 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1848  Solved: 801 [Submit][Sta ...

  9. Censored! POJ - 1625(AC自动机 + dp +高精度模板)

    题目链接 题目大意:给你一个字母表,给定一些敏感字符串,问长度为m且不含任意敏感字符串的串有多少个.(字符全部来自字母表) 思路:首先第一个坑点是输入的字符是unsigned char,可能出现负的A ...

最新文章

  1. python __setattr__ , __getattr__
  2. 2016年第七届蓝桥杯 - 省赛 - C/C++大学A组 - H. 四平方和
  3. LeetCode 1046. 最后一块石头的重量(priority_queue 堆)
  4. Flink SQL FileSystem Connector 分区提交与自定义小文件合并策略 ​
  5. c语言遗传算法百度云,遗传算法c语言程序.doc
  6. Linux中各种 command not found问题解决
  7. centos7安装redis并设置开机启动
  8. ETS 题库 c java_最新ETS阅读真题56篇完整版(TPO+ETS在线试题+官方模拟题+OG)
  9. python人名统计_「姓名分析」Python|美国婴儿姓名分析 - seo实验室
  10. 春天不健脾养胃 也要等什么时候
  11. 浅谈无线测温在35kV高压开关柜中的应用
  12. Scylla3.0.4在CentOS7.4上的安装
  13. GpuImage 在Android 上的应用以及各种效果参照表
  14. 自建游戏加速器教程(国内玩家联机)
  15. Swoole 从0开始搭建直播平台
  16. 10月11日 驱动开发
  17. 会java语言可以学seo吗_学习seo和java哪个更有前途?
  18. 人工智能中的线性代数与矩阵论学习秘诀之精品课程
  19. Moving stones
  20. 传奇开服教程-GOM引擎超详细的单机架设图文教程

热门文章

  1. r语言主成分分析_PCA主成分分析
  2. 各高校寒假时间公布_高校放假哪家长?多所高校寒假时间公布!
  3. hashset默认长度是多少?_看看,这些细节上的坑,你犯了多少?
  4. java怎么判断数据类型_数据类型判断
  5. python——学习笔记3
  6. 7-1 内存分区分配--首次适应算法 (100 分)
  7. 7-25 朋友圈 (25 分)(详解+并查集的了解和应用)
  8. 计算机 ieee access,计算机 | IEEE Access 诚邀专刊稿件 (IF:3.557)
  9. 《C++ Primer》13.1.4节练习
  10. UVA - 725 Division-sprintf的妙用