首页 > 其他分享 > Don't Blame Me (dp问题)

Don't Blame Me (dp问题)

时间:2023-06-01 20:46:44浏览次数:40  
标签:Me Don int 个数 cin Blame vector dp define

大意:有一个数组a,其中a[i]<64, 问你子序列中异或值中1的个数为k的子序列个数
题解:由于数组a的值很小异或后也很小 ,所以可以暴力dp
公式 :dp[i][j]//表示 前i个数中异或值为 j的子序列个数
dp[i][a[i]&j]=dp[i-1][j]+dp[i][a[i]&j];
核心:每次遍历当前a[i] 与0~(1<<6)异或值的大小 ,更新dp数组,a[i]&j的值可以来自,一定来自前面 为j的子序列。
另外 更新之选当前值
新知识: __buidtin_popcount(x) 表示 x二进制中一的个数
vector<vector> dp(n+1,vector((1<<6),0) ; 新建一个二维数组 dp[n+1][(1<<6)] 全部赋值为0;
代码:

点击查看代码
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<int,int> PLL;
#define IOS cin.tie(nullptr)->sync_with_stdio(false);
#define se second
#define mem(a,b) memset(a,b,sizeof a);
#define pri priority_queue<int,vector<int>,greater<int> >
#define low(a,b,c) lower_bound(a,a+b,c)-a;
#define upp(a,b,c) upper_bound(a,a+b,c)-a;
//const int N=1e6+7;
LL mod = (int)1e9 + 7;

void solve()
{
	int n,x;
	cin>>n>>x;
	vector<LL> a(n+1);
	vector<vector<LL>  > dp(n+1,vector<LL>(1<<6,0) ) ;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		for(int j=0;j<(1<<6);j++){
			dp[i][j]=dp[i-1][j];
			dp[i][j&a[i]]+=dp[i-1][j];
			dp[i][j&a[i]]%=mod;	
		}
		dp[i][a[i]]+=1;
	}
	LL ans=0;
	for(int i=0;i<(1<<6);i++)
	{
		if(__builtin_popcount(i)==x) 
		{
			ans=(ans+dp[n][i])%mod;
		}
	}
	cout<<ans<<"\n";
}
signed main()
{
	IOS;
	int t=1;
	cin>>t;
	while(t--)
	{
		solve();
	}
	return 0;
}




标签:Me,Don,int,个数,cin,Blame,vector,dp,define
From: https://www.cnblogs.com/xxj112/p/17450166.html

相关文章

  • 【二十一】memoryview() 函数(1)
    【二十一】memoryview()函数(1)【1】作用memoryview()函数返回给定参数的内存查看对象(memoryview)。所谓内存查看对象是指对支持缓冲区协议的数据进行包装在不需要复制对象基础上允许Python代码访问。【2】语法memoryview(obj)obj:对象返回值:返回元组列......
  • 使用kalibr做相机内参标定时,报错:“ImportError: No module named igraph”
    这是因为电脑没有安装python的igraph库,所以需要安装igraph库。1.sudoapt-getinstall-ylibigraph0-dev 2.pipinstallpython-igraph==0.7.1.post6(python2只支持0.8X以前的版本)安装完毕,执行kalibr相机内参标定命令即可。 ......
  • element ui 预览图片的时候滚动鼠标放大缩小, 重新打开的时候恢复原来大小
    <template><div><el-button@click="openPreview">预览图片</el-button><el-dialog:visible.sync="dialogVisible":close-on-click-modal="false":before-close="resetPreview"><im......
  • 【Python】pandas dataframe 插入一行数据
    pandas插入一行数据#需要借助numpy操作importnumpyasnpimportpandasaspdvalue={"a":[1,2,3],"b":[1,2,3],"c":[1,2,3]}df=pd.DataFrame(value)df1=pd.DataFrame(np.insert(df.values,0,values=[0,0,0],axis=0))df1.columns=df......
  • 如何在tree中添加一个 contextmenu 事件!
    关键点就是TreeList上下文中要有这个被包装了的handleContextMenu定义TreeList时,继承了一些东西,还可以重写一些东西。 本例中,TreeList上下文捕获到右键菜单事件后,将该事件传递给了自定义的函数itemcontextmenu1对应的函数应该returnfalse来阻止默认菜单的行为。在函......
  • 如何在tree中添加一个 contextmenu 事件?
     /***添加绑定事件*<pre><code>*//绑定单个事件*list.on('itemclick',function(ev){*alert('21');*});*//绑定多个事件*list.on('itemrendereditemupdated',function(......
  • 【虚幻引擎】UE4源码解析FWorldContent、UWorld、ULevel、UGameInstance、UEngine
    一、UEngineEngine,因为也是很基础的类,再加上开发过程中会经常访问到该类型,因此UE4引擎也在代码全局范围内定义了一个该类型的全局变量:UEngine*GEngine供开发者直接调用。该最基础的类型分化成了两个子类:UGameEngine和UEditorEngine。UGameEngine保存了唯一的一个UGameInstan......
  • MySQL 8错误日志出现"The table /home/work/mysql_3306/tmp/#sqla2b_298b06_4d is fu
    ##############    了解MySQL8.0.26的错误日志出现"Thetable /home/work/mysql_3306/tmp/#sqla2b_298b06_4disfu11!"的bug,暂时通过修改临时表的存储引擎为内存引擎解决  MySQL8.0.13开始引入新的临时内存表引擎TempTable,并将其作为内存中创建临时表的默认存......
  • tar 命令压缩时报错 Removing leading `/' from member names 解决方法
    原文:https://www.cnblogs.com/operationhome/p/9802554.html在使用tar命令进行压缩打包的时候我们常常会遇到下面的错误。虽然它不会影响我们最后的压缩打包,但是间接说明了我们的命令是有问题的。接下来我们来看看解决的方法。报错内容报错内容:$tar-zcvf/home/shenweiyan......
  • Element-ui中 选择器(select)多选下拉框实现全选功能
    Element-ui中选择器(select)多选下拉框实现全选功能需求(产品整活):需要下拉时候可以一键全选父组件运用<template><div><MultipleSelect:filterable="false":selectOptions="selectOptions"//数据集合:mulSelectLoading="mulSelectLoad......