HDU 4901 多校4 经典计数DP
RT
最近不想写博客,累积了一周多的题目,今天趁着周日放假,全部补上吧
dp[i][j]表示前i个数,操作后的值为j的总个数
注意取或不取,有种完全背包的意味。因为数字小于1024,所以异或的结果也绝对不会超过1024,在循环第二维的时候到1024就行了,不要循环多了,反而会错,循环多了 异或值会超,结果爆了数组,产生了奇怪的结果,一开始我就这么莫名其妙的错,还不知道是为什么,就是爆了数组 他也不会提醒你的
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define LL __int64
using namespace std;
const LL M=+;
const int N=;
const int maxn=;
LL dp1[maxn][N];
LL dp2[maxn][N];
LL s1[maxn][N],s2[maxn][N];
int A[maxn];
int main()
{
int t,n;
scanf("%d",&t);
while (t--)
{
scanf("%d",&n);
for (int i=;i<=n;i++){
scanf("%d",&A[i]);
}
for (int i=;i<=n+;i++){
for (int j=;j<=N;j++){
dp1[i][j]=dp2[i][j]=;
s1[i][j]=s2[i][j]=;
}
}
dp1[][]=;
for (int i=;i<n;i++){
//dp1[i][A[i]]=1;
for (int j=;j<=;j++){
dp1[i][j]+=dp1[i-][j];
dp1[i][j^A[i]]+=dp1[i-][j];
if (dp1[i][j]>=M) dp1[i][j]%=M;
if (dp1[i][j^A[i]]>=M) dp1[i][j^A[i]]%=M;
}
for (int j=;j<=;j++){
s1[i][j^A[i]]=dp1[i-][j];
s1[i][j^A[i]]%=M;
}
}
LL ans=;
for (int i=n;i>;i--){
dp2[i][A[i]]=;
for (int j=;j>=;j--){
dp2[i][j&A[i]]+=dp2[i+][j];
dp2[i][j]+=dp2[i+][j];
if (dp2[i][j&A[i]]>=M) dp2[i][j&A[i]]%=M;
if (dp2[i][j]>=M) dp2[i][j]%=M;
}
}
for (int i=;i<n;i++){
for (int j=;j<=;j++){
ans+=s1[i][j]*dp2[i+][j];
ans%=M;
}
}
printf("%I64d\n",ans%M);
}
return ;
}
HDU 4901 多校4 经典计数DP的更多相关文章
- HDU 4901 The Romantic Hero (计数DP)
The Romantic Hero 题目链接: http://acm.hust.edu.cn/vjudge/contest/121349#problem/E Description There is ...
- HDU 6377 度度熊看球赛 (计数DP)
度度熊看球赛 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Subm ...
- HDU 4901 The Romantic Hero(二维dp)
题目大意:给你n个数字,然后分成两份,前边的一份里面的元素进行异或,后面的一份里面的元素进行与.分的时候依照给的先后数序取数,后面的里面的全部的元素的下标一定比前面的大.问你有多上种放元素的方法能够使 ...
- hdu 2412 Party at Hali-Bula 经典树形DP
Party at Hali-Bula Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- hdu 2196(方法1:经典树形DP+方法2:树的直径)
Computer Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- HDU 6415 Rikka with Nash Equilibrium (计数DP)
题意:给两个整数n,m,让你使用 1 ~ n*m的所有数,构造一个矩阵n*m的矩阵,此矩阵满足:只有一个元素在它的此行和此列中都是最大的,求有多种方式. 析:根据题意,可以知道那个元素一定是 n * ...
- HDU 4901(杭电多校训练#3 1005题)The Romantic Hero(DP)
题目地址:HDU 4901 这题没想到最后竟然可以做出来.. .. 这题用了两次DP,先从前往后求一次异或的.再从后往前求一次与运算的. 各自是 1:求异或的时候,定义二维数组huo[1000][10 ...
- 题解报告:hdu 1028 Ignatius and the Princess III(母函数or计数DP)
Problem Description "Well, it seems the first problem is too easy. I will let you know how fool ...
- HDU4815/计数DP
题目链接[http://acm.hdu.edu.cn/showproblem.php?pid=4815] 简单说一下题意: 有n道题,每到题答对得分为a[ i ],假如A不输给B的最小概率是P,那么A ...
随机推荐
- 【快学springboot】2.Restful简介,SpringBoot构建Restful接口
Restful简介 Restful一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现 ...
- centos安装出现dracut-initqueue timeout错误
dracut:/# cd /dev dracut:/# ls 这样子你就会看到所有的设备信息. 找到sda4, 不一定是sda4,有可能是其他的,实在不确定就拔了优盘看一下哪个消失了 dracut: ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 辅助类:显示关闭按钮
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- c#数据四种执行方法(ExecuteNonQuery)-----转载
c#数据四种执行方法(ExecuteNonQuery) 1.使用ExecuteReader()操作数据库 2.使用ExecuteNonQuery()操作数据库 3.使用ExecuteScalar( ...
- Linux和云供应商Red Hat被IBM以34亿美元的价格收购
导读 今天的主题包括IBM以340亿美元收购Red Hat,人性化是使人工智能成功的关键.两家公司于10月28日宣布,IBM正以340亿美元的价格收购Linux和云技术供应商Red Hat,以期改变云 ...
- POJ 1166:The Clocks
The Clocks Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 15357 Accepted: 6230 Descr ...
- 第1节 storm编程:3、storm的架构模型的介绍
nimbus:主节点,接收客户端提交的任务,并且分配任务,新的版本当中nimbus已经可以有多个了 zookeeper集群:storm依靠zk来保存一些节点信息,nimbus将分配的任务信息都写入到z ...
- Java的equals方法实现及其细节
判断两个对象是否等价,是OOP编程中常见的需求(下面围绕Java来进行阐述). 考虑这样几种情况:通过某个特征值来判断两个对象是否“等价”,当这两个对象等价时,判断结果为true,否则结果为false ...
- java学习-初级入门-面向对象②-面向对象概述-面向对象程序设计
我们在 面向对象①中学习了,结构化程序设计. 今天我们一起学习面向对象程序设计. 学习面向对象程序设计就要了解,在面向对象中重要的知识点. 继承 . 多态 . 抽象 . 接口 我们会在接下 ...
- 「SDOI2015」寻宝游戏
传送门 Luogu 解题思路 发现一个性质: 对于所有的宝藏点 \({a_1,a_2...a_k}\) ,按照dfs序递增排列,答案就是: \(dis(a_1, a_2) + dis(a_2, a_3 ...